我一直在尝试创建一个带有变量的表达式解析器,并将它们简化为二次方程式的形式。
这是我的解析器语法:
Exercise : Expr '=' Expr
Expr : Term [+-] Expr | Term
Term : Factor [*/] Term | Factor
Factor: Atom [^] Factor | Atom
Atom: Number | Identified | [- sqrt] Atom | '(' Expr ')'
我使用自顶向下递归分析器进行解析。假设我想解析这个表达式:
" 2 - 1 + 1 = 0"
但结果是0,分析器创建了错误的树形结构:
-
/ \
2 +
/ \
1 1
我该如何使这个语法是左结合的?我是新手,请问有哪些资源可以提供更多信息给我?我可以用递归下降解析器来实现吗?