Non ho uno sfondo di compilatori quindi non sono sicuro se questa è una cosa comune in quell'area. Esistono tecniche standard per analizzare espressioni come questa? (Say, scheda indica la profondità)Come analizzare questo tipo di espressioni?
And
A + B = 1
C + D = 1
Or
P + Q = 1
K = 1
And
Q = 1
R = 2
Dovrebbe essere analizzato come:
((A+B=1) AND (C+D=1) AND ((P+Q=1) OR (K=1)) AND ((Q=1) AND (R=2)))
Non sono sicuro se devo ricorrere ad una valutazione basata pila? Attualmente sto provando uno e posterò un codice funzionante se riesco a farlo funzionare.
Qualche suggerimento su un modo semplice per raggiungere questo obiettivo?
Qual è il contesto? Deve essere "sicuro"? O potresti cambiare leggermente la sintassi e usare Python con 'eval()' o simili? Ad esempio, '((A + B == 1) e (C + D == 1))' è la sintassi di Python. –
Sfortunatamente, non posso modificare l'input. Sto analizzando alcuni file XML e sono riuscito a analizzare le espressioni stesse in una stringa. Il modo in cui formatto la stringa è fino a me, ma l'ordine di valutazione e tutto ha ancora bisogno di cure.Inoltre, non voglio valutare nulla ma voglio dire, ottenere una stringa per la stampa. – Legend
stai analizzando l'espressione negli alberi? Quindi valutarli sommando i numeri per quelle variabili? – Adrian