Разбор выражения с бинарными префиксными, инфиксными и постфиксными операторами
Можно ли проанализировать выражение (без неоднозначности), которое может содержать бинарный префикс, бинарный инфикс и бинарные постфиксные операторы (предположим, что все символы разные) с приоритетом между ними? Например:
a = 2 3 post+
b = pre+ 2 3*4
затем a
будет равно 5, потому что =
имеет более низкий приоритет, чем постфикс post+
оператор и b
было бы 14
, Я знаю, что вы можете анализировать инфиксные нотные выражения с помощью анализа приоритета оператора или шунтирующего двора, но эта проблема кажется мне гораздо более сложной.
Редактировать:
Допускаются круглые скобки, и до / после вариации оператора имеют тот же приоритет, что и инфиксный.
Я хотел бы свернуть рукописный алгоритм.
Edit2:
Под приоритетом я имею в виду, сколько потреблять. Например это:
a = 2 3 post+
Может привести к этим AST-ы:
'=' has higher precedence than 'post+':
post+
/ \
= 3
/ \
a 2
'post+' has higher precedence than '=':
=
/ \
a post+
/ \
2 3
(Второй - то, что мне нужно в этой ситуации). Я не могу использовать существующие генераторы синтаксического анализатора или фиксированную грамматику для операндов, потому что операторы загружаются динамически.