f@bio80
15-07-2005, 11:46
Salve a tutti, sto lavorando ad un componentino un pò cazzutello: devo realizzare un interprete per espressioni, espressioni che possono essere composte da parti di testo concatenate insieme, operazioni matematiche, operazioni sulle date ecc...
fondamentalmente entrano in gioco due entità: operandi e operatori.
gli operandi possono essere "costanti" ossia prelevati così come sona da una fonte dati, oppure "variabili" in quanto definiti run time dall'utente
gli operatori invece sono i classici operatori relativi alle operazioni su stringhe, numeri, date ecc...
requisito fondamentale è lasciare massima libertà all'operatore di scrivere la sua bella espressione (tanto poi a interpretarla ci devo pensare io :doh: ), quindi bisogna scrivere a manetta dentro una text area.
all'inizio avevo pensato di lavorare con la notazione polacca, minima spesa per l'operatore - massima resa per me che devo interpretare, peccato che come idea non è piaciuta, la scrittura dell'espressione deve essere quanto più naturale possibile... ari :doh:
quindi adesso chiedo a voi: come lo pensereste questo sistema?
per intenderci le espressioni che vanno valutate sono del tipo:
(valore1 * valore 2) & " " & Left(Stringa1, 3) & " " & "Ciao Mamma"
Considerazione 0)
Lo stringone da interpretare arriva all'interprete con i parametri già valorizzati, ma forse quì ci posso lavorare sopra per evitare ambiguità potrei fare le sostituzioni all'ultimo (mumble mumble...)
Considerazione 1)
Tutta la sleppa che ho scritto sopra finisce chiaramente in una stringa...ergo non posso permettere all'operatore di scrivere & " " & altrimenti quando assegno il valore s'incazza non poco...o sbaglio? quindi penso che le stringhe vadano trattate in una maniera particolare, con un tag magari...
(valore1 * valore 2) & String( ) & Left(Stringa1, 3) & String( ) & String(Ciao Mamma)
Considerazione 2)
Questa non mi fà dormire: come faccio a individuare i blocchi su cui devo fare qualcosa? intendo come divido lo stringone per interpretarlo...nel caso precedente potrei splittare tutto usando la & come parametro, ma se poi la & capita pure dentro una stringa che invece non và divisa? :cry:
insomma il problema credo che l'avete capito, please :help:
p.s. lavoro in vb.net
fondamentalmente entrano in gioco due entità: operandi e operatori.
gli operandi possono essere "costanti" ossia prelevati così come sona da una fonte dati, oppure "variabili" in quanto definiti run time dall'utente
gli operatori invece sono i classici operatori relativi alle operazioni su stringhe, numeri, date ecc...
requisito fondamentale è lasciare massima libertà all'operatore di scrivere la sua bella espressione (tanto poi a interpretarla ci devo pensare io :doh: ), quindi bisogna scrivere a manetta dentro una text area.
all'inizio avevo pensato di lavorare con la notazione polacca, minima spesa per l'operatore - massima resa per me che devo interpretare, peccato che come idea non è piaciuta, la scrittura dell'espressione deve essere quanto più naturale possibile... ari :doh:
quindi adesso chiedo a voi: come lo pensereste questo sistema?
per intenderci le espressioni che vanno valutate sono del tipo:
(valore1 * valore 2) & " " & Left(Stringa1, 3) & " " & "Ciao Mamma"
Considerazione 0)
Lo stringone da interpretare arriva all'interprete con i parametri già valorizzati, ma forse quì ci posso lavorare sopra per evitare ambiguità potrei fare le sostituzioni all'ultimo (mumble mumble...)
Considerazione 1)
Tutta la sleppa che ho scritto sopra finisce chiaramente in una stringa...ergo non posso permettere all'operatore di scrivere & " " & altrimenti quando assegno il valore s'incazza non poco...o sbaglio? quindi penso che le stringhe vadano trattate in una maniera particolare, con un tag magari...
(valore1 * valore 2) & String( ) & Left(Stringa1, 3) & String( ) & String(Ciao Mamma)
Considerazione 2)
Questa non mi fà dormire: come faccio a individuare i blocchi su cui devo fare qualcosa? intendo come divido lo stringone per interpretarlo...nel caso precedente potrei splittare tutto usando la & come parametro, ma se poi la & capita pure dentro una stringa che invece non và divisa? :cry:
insomma il problema credo che l'avete capito, please :help:
p.s. lavoro in vb.net