问题标签 [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.
java - JavaCC 语法中的 try-catch 块
我正在尝试在JavaCC
语法中实现错误报告和恢复
我在.jjt
语法文件中提到了以下代码
当我执行命令时jjtree CMinus.jjt
,出现以下错误:
从文件 CMinus_ragu.jjt 中读取。. . 解析输入时出错:org.javacc.jjtree.ParseException:在第 111 行第 30 列遇到“”{“”{“”。期待以下之一:“throws”...“:”...“#”.. .
代码中的错误是什么,我应该如何处理错误恢复?
java - 分析代码以创建 UML 的最佳方法是什么?
我尝试完成我的工作,即“分析 Java 应用程序中的源代码”,我分析未编译的 .java 或 .txt 文件。
我创建了这个主题,在那里我了解到我走错了路。据我所知,我认为最好的处理方式是使用 ANTLR 或 JavaCC,但我无法弄清楚它是如何工作的以及如何使用它(JavaCC 我无法闯入)。我想找到一些可以在我使用的 Netbeans 中编写“经典”的东西。
是否可以使用 java.lang.reflect (在我的主题中有人写道它只能在编译代码中使用)?有没有一种方法可以让我在没有任何“补充”或仅使用 Java 库的情况下编写所有这些内容?
感谢您提供任何宝贵的建议。我很困惑,不知道如何开始。
下面是我的工作描述:
1.选择宿主语言分析器,
2.构建扫描器(词法分析器),
3.构建解析器(语法分析器),
4.以XML的形式保存获取的信息,
5.已分析项目的 UML 图形表示。
主要目标是创建UML,XML是一个补充。
java - Javacc 包问题
我们正在使用 javacc 实现一个胡言乱语版本来构建我们的抽象语法树。我们有许多用 java 实现的类,由 Parser.jj 程序调用。但是,Parser.jj 无法识别任何已实现的类,即使它们位于同一文件夹/包中(例如错误:找不到符号:类变量节点)。有没有办法让 Parser.jj 识别这些文件?
谢谢您的帮助!
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)?
谢谢您的帮助。我非常感激。
parsing - 如何检查 JavaCC 中应用了哪个正则表达式
我有以下正则表达式
现在我想知道如何检查当前令牌是 ID 还是 CONSTANT
JavaCC中如何表达(token为ID)?
非常感谢。
java - 定义令牌“组”
我正在使用 JavaCC 开发一种简单语言的解析器。
在我的令牌声明部分,我有这样的东西
CONSTANT
,由于其顺序,优先级高于INTEGER
。但是,在语法的某些部分我需要一个INTEGER
,特别是。在这些情况下,解析器会抛出异常,因为INTEGER
被解析为CONSTANT
.
一个简单的解决方案是消除CONSTANT
令牌并将其查找并替换为 (< INTEGER > | < FLOAT_NUMBER > | < BOOLEAN >)
. 不过,这感觉相当笨拙。
有没有办法将CONSTANT
其他标记简单地定义为一组,这样它CONSTANT
本身就不是一个标记,而是 的简写(< INTEGER > | < FLOAT_NUMBER > | < BOOLEAN >)
?
感谢您的时间。
if-statement - javacc if 语句
我在 javacc 中写了 if 语句,如果条件为假,不知道如何忽略主体首先我声明了两个对象类 Token 和布尔变量,接下来我检查什么返回方法条件(),接下来我想跳过块的其余部分当条件为假时。怎么做?
java - 一个用java写的java解释器
我想用 Java 编写一个 Java 解释器,目的是为该语言添加一些其他功能。
我想知道是否已经存在一些使用 javacc 用 Java 编写的 Java 解释器。那会很酷。
我已经在javacc网站上下载了java 1.5语法和Abstract Syntax Tree(AST),但是问题是AST是刚建好的,还没有填。事实上它什么也没做。
你知道任何用 javacc 编写的开源 Java 解释器吗?
谢谢,
洛伊克
parsing - JavaCC 语法冲突
我有一个大致这样定义的语法。
这适用于以下内容:
但是当我尝试int();
对我来说是合法的并且应该由 Function() 解析时,它会改为声明。我该如何解决这个“冲突”?我尝试了各种组合。
javacc - JavaCC 中是否不支持速记字符类(例如 \d)
我正在尝试学习使用 JavaCC,并意识到它支持正则表达式。叫我懒惰,但我认为定义数字的默认/常用方法有点太长了:
我尝试使用速记字符类,例如:
但“编译器编译器”似乎不喜欢它。我得到速记字符的词汇错误。我找不到关于此事的任何文档,所以我不确定我是否做错了什么或者它根本不受支持。如果有人可以确认/否认我的假设,即 javacc 不能很好地使用速记字符类,我将不胜感激。