我正在做一个数学表达式解析器,将文本解析成抽象语法树(但我对此并不了解)。
我在维基百科上看到可以使用Shunting-yard算法将标记的线性序列解析为逆波兰表达式或直接解析为AST,但我找不到任何使用Shunting-yard进行中缀转换为AST的示例。
目前,我正在使用Shunting-yard将中缀表达式转换为后缀表达式,然后使用该输出构建AST。
将表达式转换为后缀表达式,然后从中构建AST是一种好的实践方法吗?还是我有点笨拙?
我正在做一个数学表达式解析器,将文本解析成抽象语法树(但我对此并不了解)。
我在维基百科上看到可以使用Shunting-yard算法将标记的线性序列解析为逆波兰表达式或直接解析为AST,但我找不到任何使用Shunting-yard进行中缀转换为AST的示例。
目前,我正在使用Shunting-yard将中缀表达式转换为后缀表达式,然后使用该输出构建AST。
将表达式转换为后缀表达式,然后从中构建AST是一种好的实践方法吗?还是我有点笨拙?
Stack<Node> output
Stack<Operator> operators
function popOperator
Operator op = operators.pop()
Node right = output.pop()
Node left = output.pop()
Node n = makeNode( op, left, right )
output.push(n)