Я создаю дерево разбора, которое будет содержать выражения, аналогичныеунарные и бинарные Минус в дерева синтаксического разбора
3 - 4 * 8
или
8 * -5
или
-(10 * 1)
Мне нужен способ провести различие между унарным и двоичным минусом. То, как идет моя грамматика, сначала вызывается двоичный минус, но я думаю об изменении этого и добавлении переменной флага, которая содержит последнюю переменную.
Ex: если 5 - 6
Флаг держит 5, и если он видит минус и флаг число скипового унарный и перейти к двоичной системе.
Однако я не знаю точно, как реализовать это в C++
Любая помощь будет высоко оценен.
Благодаря
Вы имеете в виду способ отличить их, как вы делаете синтаксический анализ, или способ отличить их в разборе дерево? В дереве синтаксического анализа это тривиально - есть отдельные операторы UNARY_MINUS и BINARY_MINUS. Если вы имеете в виду, когда вы разбираетесь, унарный минус возникает, когда вы ожидаете операнда, а не оператора. –
В моем парсере я хотел бы, чтобы он различал -5 и 4 -5. Моя следующая часть преобразует листья этого дерева в дерево AST (которое работает), но мой парсер видит все как двоичный минус (4-5). – Dfranc3373