java - 试图理解解析器

标签 java parser-generator javacc

我正在尝试使用 JavaCC 构建一个可以处理各种表达式的简单命令行计算器。虽然有很多关于如何编写语法的教程,但到目前为止我还没有看到任何教程解释之后会发生什么。

我现在的理解是,在一个字符串被传递到解析器之后,它被拆分成一个标记并变成一个解析树。接下来发生什么?我是否遍历解析树,对每个节点的内容进行一堆 if-else 字符串比较,然后执行适当的功能?

最佳答案

我强烈建议您观看 Scott Stanchfield's ANTLR 3.x tutorials .即使您最终没有使用 ANTLR,这对您的项目来说可能有点矫枉过正,但我​​对此表示怀疑,通过观察他的思考过程,您会学到很多东西。

一般来说这个过程是...

  1. 构建一个词法分析器来理解您的标记
  2. 构建一个可以验证和理解输入并将其组织到抽象语法树 (AST) 中的解析器,它应该代表简化/易于使用的语法版本
  3. 根据 AST 运行任何计算

关于java - 试图理解解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5560557/

相关文章:

java - Spring Webflux Webclient |内容类型标题设置问题

scala - 解析scala中的递归结构

parsing - 哪个解析器生成器对于操作产生式本身很有用?

java - 在不使用标记器状态的情况下消除标记歧义

java - 我在字符串中有日期,我想将其转换为日期格式,但出现错误

Java - 遍历文件夹并在存在预期文件夹时执行某些操作

java - 可以从 jdb 中杀死单个 java 线程吗?

java - ANTLR 的基本帮助

python - 从 JavaCC 源代码生成 Python 语言的解析器?

java - 是否需要参数