У меня нет фона компиляторов, поэтому я не уверен, что это сообщение в этой области. Существуют ли стандартные методы для анализа таких выражений? (Say, вкладка показывает глубину)Как разобрать этот тип выражений?
And
A + B = 1
C + D = 1
Or
P + Q = 1
K = 1
And
Q = 1
R = 2
Должен быть проанализирован как:
((A+B=1) AND (C+D=1) AND ((P+Q=1) OR (K=1)) AND ((Q=1) AND (R=2)))
Я не уверен, если я должен прибегать к оценке на основе стека? В настоящее время я тестирую один, и я опубликую рабочий код, если я могу его запустить.
Любые предложения по простому способу достижения этого?
В чем заключен контекст? Нужно ли быть «безопасным»? Или вы могли бы немного изменить свой синтаксис и использовать Python с 'eval()' или аналогичным? Например, '((A + B == 1) и (C + D == 1))' - синтаксис Python. –
К сожалению, я не могу изменить ввод. Я разбираю некоторые файлы XML и сам разбираю выражения в строке. Как я отформатирую строку, мне нужно, но порядок оценки и все еще нуждаются в уходе.Кроме того, я не хочу ничего оценивать, но хочу сказать, получить строку для печати. – Legend
Вы разбираете выражение в деревья? Затем оценивая их, подбирая числа для этих переменных? – Adrian