问题标签 [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 回答
2588 浏览

java - JavaCC 语法中的 try-catch 块

我正在尝试在JavaCC语法中实现错误报告和恢复

我在.jjt语法文件中提到了以下代码

当我执行命令时jjtree CMinus.jjt,出现以下错误:

从文件 CMinus_ragu.jjt 中读取。. . 解析输入时出错:org.javacc.jjtree.ParseException:在第 111 行第 30 列遇到“”{“”{“”。期待以下之一:“throws”...“:”...“#”.. .

代码中的错误是什么,我应该如何处理错误恢复?

0 投票
3 回答
672 浏览

java - 分析代码以创建 UML 的最佳方法是什么?

我尝试完成我的工作,即“分析 Java 应用程序中的源代码”,我分析未编译的 .java 或 .txt 文件。

我创建了这个主题,在那里我了解到我走错了路。据我所知,我认为最好的处理方式是使用 ANTLR 或 JavaCC,但我无法弄清楚它是如何工作的以及如何使用它(JavaCC 我无法闯入)。我想找到一些可以在我使用的 Netbeans 中编写“经典”的东西。

是否可以使用 java.lang.reflect (在我的主题中有人写道它只能在编译代码中使用)?有没有一种方法可以让我在没有任何“补充”或仅使用 Java 库的情况下编写所有这些内容?

感谢您提供任何宝贵的建议。我很困惑,不知道如何开始。

下面是我的工作描述:
1.选择宿主语言分析器,
2.构建扫描器(词法分析器),
3.构建解析器(语法分析器),
4.以XML的形式保存获取的信息,
5.已分析项目的 UML 图形表示。
主要目标是创建UML,XML是一个补充。

0 投票
1 回答
2332 浏览

java - Javacc 包问题

我们正在使用 javacc 实现一个胡言乱语版本来构建我们的抽象语法树。我们有许多用 java 实现的类,由 Parser.jj 程序调用。但是,Parser.jj 无法识别任何已实现的类,即使它们位于同一文件夹/包中(例如错误:找不到符号:类变量节点)。有没有办法让 Parser.jj 识别这些文件?

谢谢您的帮助!

0 投票
3 回答
2558 浏览

java - Java:设置类路径

我有一个项目很快就要到期了,一切都很好地结合在一起,但是 java 类路径正在变得严重。我会尽量清楚和彻底地解释情况。

所以我们使用 Javacc 来编写编程语言。javacc 文件编译成几个 java 文件。Parser.java 文件包括对其他生成的 java 文件的引用和调用。因此,在生成之后,我们编译 Parser.java 文件。问题是我们遇到了很多错误,包括无法识别对其他 java 文件以及我们自己的文件的调用。我们在课堂讨论板上询问了我们的问题,教授回答说“你需要在你的类路径中包含类文件”。好的,很好,所以问题是,我们如何做到这一点?基本上,我们有一个目录,其中包含生成的 java 文件和我们的其他帮助文件。

那么,我们尝试了什么?

我尝试更改我的 .bashrc (Ubuntu) 文件以包含正确的类路径,但这不起作用。IE

(就像我在文件中的语法一样)

我试过编译执行

两者都不起作用。

我试图在我们的文件目录中编辑 xml(我认为是 xml).classpath 文件。还是不行。

不知何故,我能够在我拥有的一个目录中编译 Parser.java(我们最终创建了多个目录,其中包含相同的文件,但徒劳无功)但是当我尝试运行时

或者

它说它找不到 main 并抛出(我相信,它在我的另一台计算机上)ClassNotFound 或 ClassNotDefined 异常(类似的,它无法在 Parser 文件中找到 main,即使它在那里)。

我们尝试将包减速和导入语句添加到我们的文件中,但似乎没有任何效果。

基本上:如何成功更改类路径,以便可以在我的机器上编译和运行我的 java 文件(都在一个目录中而不是 jarred)?

谢谢您的帮助。我非常感激。

0 投票
1 回答
501 浏览

parsing - 如何检查 JavaCC 中应用了哪个正则表达式

我有以下正则表达式

现在我想知道如何检查当前令牌是 ID 还是 CONSTANT

JavaCC中如何表达(token为ID)?

非常感谢。

0 投票
1 回答
349 浏览

java - 定义令牌“组”

我正在使用 JavaCC 开发一种简单语言的解析器。

在我的令牌声明部分,我有这样的东西

CONSTANT,由于其顺序,优先级高于INTEGER。但是,在语法的某些部分我需要一个INTEGER,特别是。在这些情况下,解析器会抛出异常,因为INTEGER被解析为CONSTANT.

一个简单的解决方案是消除CONSTANT令牌并将其查找并替换为 (< INTEGER > | < FLOAT_NUMBER > | < BOOLEAN >). 不过,这感觉相当笨拙。

有没有办法将CONSTANT其他标记简单地定义为一组,这样它CONSTANT本身就不是一个标记,而是 的简写(< INTEGER > | < FLOAT_NUMBER > | < BOOLEAN >)

感谢您的时间。

0 投票
1 回答
3425 浏览

if-statement - javacc if 语句

我在 javacc 中写了 if 语句,如果条件为假,不知道如何忽略主体首先我声明了两个对象类 Token 和布尔变量,接下来我检查什么返回方法条件(),接下来我想跳过块的其余部分当条件为假时。怎么做?

0 投票
1 回答
1359 浏览

java - 一个用java写的java解释器

我想用 Java 编写一个 Java 解释器,目的是为该语言添加一些其他功能。

我想知道是否已经存在一些使用 javacc 用 Ja​​va 编写的 Java 解释器。那会很酷。

我已经在javacc网站上下载了java 1.5语法和Abstract Syntax Tree(AST),但是问题是AST是刚建好的,还没有填。事实上它什么也没做。

你知道任何用 javacc 编写的开源 Java 解释器吗?

谢谢,

洛伊克

0 投票
1 回答
262 浏览

parsing - JavaCC 语法冲突

我有一个大致这样定义的语法。

这适用于以下内容:

但是当我尝试int();对我来说是合法的并且应该由 Function() 解析时,它会改为声明。我该如何解决这个“冲突”?我尝试了各种组合。

0 投票
1 回答
180 浏览

javacc - JavaCC 中是否不支持速记字符类(例如 \d)

我正在尝试学习使用 JavaCC,并意识到它支持正则表达式。叫我懒惰,但我认为定义数字的默认/常用方法有点太长了:

我尝试使用速记字符类,例如:

但“编译器编译器”似乎不喜欢它。我得到速记字符的词汇错误。我找不到关于此事的任何文档,所以我不确定我是否做错了什么或者它根本不受支持。如果有人可以确认/否认我的假设,即 javacc 不能很好地使用速记字符类,我将不胜感激。