我正在尝试使用 JavaCC 构建一个可以处理各种表达式的简单命令行计算器。虽然有很多关于如何编写语法的教程,但到目前为止我还没有看到任何教程解释之后会发生什么。
我现在的理解是,在一个字符串被传递到解析器之后,它被拆分成一个标记并变成一个解析树。接下来发生什么?我是否遍历解析树,对每个节点的内容进行一堆 if-else 字符串比较,然后执行适当的功能?
最佳答案
我强烈建议您观看 Scott Stanchfield's ANTLR 3.x tutorials .即使您最终没有使用 ANTLR,这对您的项目来说可能有点矫枉过正,但我对此表示怀疑,通过观察他的思考过程,您会学到很多东西。
一般来说这个过程是...
- 构建一个词法分析器来理解您的标记
- 构建一个可以验证和理解输入并将其组织到抽象语法树 (AST) 中的解析器,它应该代表简化/易于使用的语法版本
- 根据 AST 运行任何计算
关于java - 试图理解解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5560557/