Разбор выражения с бинарными префиксными, инфиксными и постфиксными операторами

Можно ли проанализировать выражение (без неоднозначности), которое может содержать бинарный префикс, бинарный инфикс и бинарные постфиксные операторы (предположим, что все символы разные) с приоритетом между ними? Например:

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

(Второй - то, что мне нужно в этой ситуации). Я не могу использовать существующие генераторы синтаксического анализатора или фиксированную грамматику для операндов, потому что операторы загружаются динамически.

0 ответов

Другие вопросы по тегам