问题标签 [javacc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1575 浏览

grammar - 使用JavaCC解析C语法的源码


作为项目任务,我需要从 Java 解析纯 C 语法以生成 AST 输出。作为一家初创公司,我正在使用我在语法文件中找到的文件 c.jj

http://java.net/projects/javacc/sources/svn/

但我发现它只有句法和词法动作,没有解析 C 源代码的真正语义。是否还有其他包含 typedef、变量、构造函数、包含文件的来源?

0 投票
2 回答
912 浏览

assembly - JavaCC 解析器从汇编语言到机器码的指令分离问题

HY.我正在尝试使用 JavaCC(汇编程序)制作一个解析器,以将汇编代码(微控制器 8051)转换为机器代码。我已经阅读了有关 javaCC 语法及其结构方式的信息,但我遇到了困境。例如我有ADD指示:

并且对于他们每个人,我都有一个 Machine code (hexa code)ex:ADD A,R0转换为 28H 。而且我也可以得到MOV指令:
MOV A,Rn或者MOV A,@Ri但我也有 MOV data_addr,Rn等等 MOV R6,#data

现在我的问题是我如何在两条指令之间做出这种区别。假设我这样定义我的标记: 我无法为每个标记定义函数来指定特定行为的函数,因为我有很多指令。说这是一个很少,你不觉得吗?....所以我几乎被卡住了。我不知道该怎么走。 谢谢你的帮助。!
Token{
<IN_MOV :"mov">
|<IN_ADD:"add"
}

token.image==.equals("mov"), then go on one direction to the specific behaviour

0 投票
2 回答
1024 浏览

java - JavaCC/JJTree 节点类中缺少字段?

我“继承”了一个项目,该项目使用JavaCC的 JJTree来实现一个简单的语言解析器。由于代码已经超过 5 年,我决定在进行任何实际开发之前将所有依赖项(包括 JavaCC)更新到最新版本。

因此,我删除了所有由 JJTree/JavaCC 生成的文件,并使用最新版本(5.0)重新构建它们。但是,生成的文件似乎缺少以前存在的字段和方法,并且代码不再编译。

我假设 JavaCC 中发生了一些变化,需要我更新语法文件,所以我尝试了Interpretter当前 JavaCC 发行版中的示例,结果相同:缺少不允许代码编译的类字段。

例如,以下是示例的SPL.jjt定义Interpretter

此示例的文件夹包含一个ASTId.java最初具有以下内容的文件:

重新生成AST*.java文件后,内容发生了变化:

这里缺少很多内容,因此SPLParser.java生成的文件无法编译,因为它使用了相应类中未定义的字段。

我错过了什么?是否有我必须使用的 JJTree 或 JavaCC 选项?也许在语法文件中进行修改?或者,由于我真的不知道原始文件是否已被编辑,我是否应该直接修改生成的文件并手动添加缺失的位?

我没有使用 JavaCC 的经验,因此我将不胜感激任何解决此问题的提示。

0 投票
1 回答
1030 浏览

java - Javacc 的单元测试

我在我的应用程序中使用 Javacc 解析器生成器,并且想对我的语法进行一些单元测试。

我想知道是否有任何用于 javacc 的单元测试框架,例如 gUnit 用于 ANTLR。如果不是,那么测试这种语法的最佳方法是什么?

0 投票
4 回答
199 浏览

java - 试图理解解析器

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

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

0 投票
1 回答
599 浏览

character-encoding - 如何在 JavaCC 中支持西里尔字母?

我可以为 *.jjt 文件制作西里尔字母吗?

例如,令牌在 jjt 中给出:

但是 jj 文件中的标记看起来很糟糕:

使用以下选项:

如果我在她的班级的帮助下做 Unicode:

程序启动后:

结果,我可以看到 unicode 字符串不匹配。例如:

你知道为什么会发生这种情况吗?

PS:此错误仅在 Windows 操作系统下出现。

0 投票
1 回答
3607 浏览

eclipse - Eclipse 编译错误

我将一些 JTB 和 JavaCC 生成的文件导入到 Eclipse 中,有一行给我一个错误 - 大多数类文件的第一行(注释)说“无法解析类型 java.lang.Object。它间接引用自所需的 .class 文件”我该如何解决这个问题?

0 投票
1 回答
999 浏览

java - 令牌定义中的 JavaCC 操作

我想知道是否可以连接到 JavaCC 的词法分析器来调用一个函数来检查一个字符是否有效。

我问的原因是我试图实现有点像:

其中 id() 是:

这是可能吗?

0 投票
2 回答
174 浏览

eclipse - 是否有任何使用 JavaCC 的 Eclipse 语言 IDE -plugins-?

我正在使用 JavaCC 为 Eclipse 创建一个语言插件,我想知道是否有任何用于 Eclipse 的稳定语言 IDE 使用 JavaCC 创建它们的 AST 表示和 Lexer/Parser 文件。谢谢。

0 投票
4 回答
4719 浏览

objective-c - 解析 Objective-C 代码以进行静态分析

我喜欢静态分析和编译时检查,几乎是个错误,但我日常工作的大部分时间都在 Objective-C 中。为了解决这种紧张关系,我希望能够编写自己的分析工具,可以在我的 Objective-C 项目中运行。

但是在互联网上搜索表明人们很难整理出完整的 Objective-C 语法。一个网站 基本上建议放弃。

我确实在 ANTLR 网站上找到了一个语法,但是当我启动它时,我根本无法让它解析任何东西。例如,它响应了以下行:

src/main/resources/somecode.m line 1:0 no viable alternative at input 'void'

:(

我仔细查看了语法,发现以下令人沮丧的免责声明:

但我需要一些可以解析接口和实现的东西。

那里有完整的 Objective-C 2.0 语法吗?我更喜欢可以与 Scala 一起使用的东西(因此任何与 Java 兼容的东西,比如 ANTLR,都是完美的),但在这一点上,我愿意调整为另一个解析器工具包设计的东西。