Итак, мне было интересно, что делает анализатор, как:Что именно делает грамматические правила левыми рекурсивными в antlr?
line : expression EOF;
expression : m_expression (PLUS m_expression)?;
m_expression: basic (TIMES basic)?;
basic : NUMBER | VARIABLE | (OPENING expression CLOSING) | expression;
леворекурсивным и недействительным, в то время как синтаксический анализатор, как
line : expression EOF;
expression : m_expression (PLUS m_expression)?;
m_expression: basic (TIMES basic)?;
basic : NUMBER | VARIABLE | (OPENING expression CLOSING);
действует и работает, хотя определение «основной» по-прежнему относится к выражению. В частности, я хотел бы быть в состоянии разобрать выражения в виде
a+b+c
без введения операции, действующие на более чем двух операндов.