Как синтаксический анализатор инфиксной записи обнаруживает отсутствующий знак умножения?

Я пишу синтаксический анализатор, который анализирует математические выражения на основе синтаксической диаграммы, очень похожей на этот.

Я не нашел способа справиться с отсутствующим знаком умножения (например, в 3(x+y)). Где на синтаксической диаграмме я должен это обрабатывать?


person HerpDerpington    schedule 25.07.2015    source источник
comment
3(x+y) не является допустимым выражением в грамматике, на которую вы ссылаетесь. Вы можете сделать * необязательным (неявным), если хотите, но в настоящее время это не так.   -  person 500 - Internal Server Error    schedule 25.07.2015
comment
Вместо того, чтобы радикально менять свой вопрос, задайте новый вопрос и включите ссылку на старый.   -  person Ben Voigt    schedule 26.07.2015


Ответы (1)


Вы бы сделали * необязательным в определении term.

ASCII-диаграмма:

o-->-->--[factor]->-->--o
    /               \
    \               /
     ---<--[*]--<---
         \     /
          --<--
person melpomene    schedule 25.07.2015
comment
В порядке. Я понимаю это, но, пожалуйста, посмотрите мои правки к вопросу, так как я хотел спросить что-то, что больше связано с фактическим кодом. - person HerpDerpington; 25.07.2015
comment
@ user1574054 Это совершенно новый вопрос. Я не знаю С#, извините. - person melpomene; 25.07.2015