我一直在尝试为带有变量的表达式创建解析器并将它们简化为二次表达式形式。
这是我的解析器语法:
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
我怎样才能使这个语法左结合?我是这方面的新手,请你告诉我在哪里可以找到更多信息的来源?我可以使用递归下降解析器来实现这一点吗?