Nie mam tła kompilatora, więc nie jestem pewien, czy jest to coś commmon w tym obszarze. Czy istnieją standardowe metody analizowania wyrażeń takich jak ten? (Say, zakładka wskazuje głębokość)Jak analizować tego typu wyrażeń?
And
A + B = 1
C + D = 1
Or
P + Q = 1
K = 1
And
Q = 1
R = 2
powinien być analizowany jako:
((A+B=1) AND (C+D=1) AND ((P+Q=1) OR (K=1)) AND ((Q=1) AND (R=2)))
Nie jestem pewien, czy należy odwołać się do oceny opartej stosu? Obecnie próbuję jednego z nich i opublikuję działający kod, jeśli uda mi się go uruchomić.
Wszelkie sugestie na prosty sposób, aby to osiągnąć?
Jaki jest kontekst? Czy musi być "bezpieczny"? A może mógłbyś nieco zmienić swoją składnię i użyć Pythona z 'eval()' lub podobnym? Na przykład '((A + B == 1) i (C + D == 1))' jest składnią Pythona. –
Niestety, nie mogę zmienić wejścia. Parsuję niektóre pliki XML i udało mi się przetworzyć wyrażenia w łańcuchu. Jak sformatować ciąg jest do mnie, ale kolejność oceny i wszystko nadal wymaga opieki.Ponadto nie chcę niczego oceniać, ale chcę powiedzieć, aby uzyskać ciąg do drukowania. – Legend
Czy przetwarzasz wyrażenie na drzewa? Następnie oceniając je, podając w liczbach te zmienne? – Adrian