问题标签 [cup]

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 回答
6514 浏览

java - 带有 CUP 编译错误的 JFlex

我正在尝试运行 CUP 提供的示例:Parsing directly to XML

我将“Minijava 语法”存储在一个名为minijava.cup的文件中,并将扫描仪存储在一个名为 xml.flex 的文件。我运行 JFlex 以从 xml.flex 文件中获取Lexer.java 。之后,我在运行 CUP 示例中指定的命令后获得了Parser.javasym.java :

我的目录如下所示:

我正在尝试使用以下命令编译 Lexer.java 文件:

但我收到格式为“..找不到符号...”的 47 个错误。第一个指定找不到类 sym 和 minijava.Constants。

Lexer.java:17:错误:找不到符号

公共类 Lexer 实现 java_cup.runtime.Scanner、sym、minijava.Constants{

^ 符号:类符号

Lexer.java:17:错误:minijava 包不存在

公共类 Lexer 实现 java_cup.runtime.Scanner、sym、minijava.Constants {

^ Lexer.java:679:错误:找不到符号

{return symbolFactory.newSymbol("EOF", EOF, new Location(yyline+ 1,yycolumn+1,yychar), new Location(yyline+1,yycolumn+1,yychar+1));

我不明白为什么 Lexer 看不到 sym.java 文件或从哪里获取 minijava.Constants 文件。

0 投票
1 回答
2017 浏览

java - 我无法在 cmd 中生成 CUP 解析器和 JFlex 扫描器

我是编译器的新手。我读过我可以通过以下代码在 cmd 中生成 xxx.flex 文件:

java JFlex.Main xxx.flex

但我收到了这个错误:

错误:无法找到或加载主类 JFlex.Main

为了生成 yyy.cup ,我输入:

java java_cup.Main yyy.cup

但我也遇到了这个错误:

错误:无法找到或加载主类 java_cup.Main

我很困惑……我该怎么办?

0 投票
1 回答
50 浏览

java - 我遇到了与 CUP 的 Shift/Reduce 冲突

我有以下解析代码,但我在非终端表达式和函数调用之间遇到了移位/减少冲突。这是 Visual Basic 编程语言的一小段解析代码。CFG会错吗?还是仅在这两个非终端符号中存在问题。

什么可能给我带来麻烦?

0 投票
1 回答
1862 浏览

java - Java Cup 中的 Shift/Reduce 冲突

我收到以下错误:

这是我使用的语法。目前我有分配和中断(每个中断语句都可以指定要退出的循环级别数)。

据我了解,问题是在我遇到 EXITLOOP 之后,下一个标记可能是分配的开始或要退出的级别数。

有没有办法解决这个问题?

谢谢!

0 投票
2 回答
307 浏览

java - 无法在 Windows 8.1 中运行 jflex.bat

我刚刚安装了 jflex 和 cup,我想测试一切是否正常。这是我在 shell 中编写的内容以及得到的结果。 在此处输入图像描述

这是 jflex.bat 文件的内容: 在此处输入图像描述 我做错了什么吗?如何第一次运行 jflex?当我编写 java -version 时,它会在我的电脑中显示正确的 java 版本。问题出在 jflex 上。

谢谢!

0 投票
1 回答
4557 浏览

java - CUP 解析器返回有效输入的语法错误

我正在尝试编写一个非常简单的解析器。我将 JFlex 与 Java CUP 一起使用。这是我的代码:

LEX 文件:

CUP 文件:

主.java

如您所见,我尝试使其尽可能简单,但对于仅包含一个字符的输入文件,我收到以下错误:“|”。

输入字符 0 处的语法错误

但很明显,我们为“|”定义了一个适当的推导。

为什么会这样?

编辑:
-“从 myrule 开始;” 没有帮助

0 投票
0 回答
84 浏览

java - 如何使用 Java Cup for Java Interpreter 获取表达式

我正在使用 jflex 和 cup 创建解释器,但我不知道如何实现嵌套语句、if else 循环等。我想知道是否可以在语句中获取表达式来分析它

我需要“表达”才能了解和分析语句中的代码

0 投票
1 回答
64 浏览

java - 如何为嵌套的“if”指令定义使用多个破折号的语法?

我正在尝试用 Java (使用CUP)创建一个可以识别这段代码的语法分析器:

“if”语句使用的我的产品如下:

其中 Instr 代表指令/语句,CondInstrList 代表条件指令列表,CONTROLD 代表控制短划线 (~)。(CONOP 和 CONCL 表示条件打开/关闭)

问题在于,使用该语法,生成的 AST 如下:

因此,“else”部分与内部“if”相关联。

我只是不知道如何编写一个尊重我想要的语言方式的语法。

任何帮助表示赞赏。

如果需要,我可以提供更多细节。

0 投票
0 回答
1209 浏览

java - java_cup.runtime.Symbol "EOF" 尚未声明

我已经阅读了这个讨论,但它对我没有帮助。

fm.scriviDebug()我的自定义类在哪里打印 CUP 解析的标准输出。

我不知道问题出在哪里。

一些信息:


我使用 JFlex 扫描文件并通过以下方式将符号传递给 CUP:


我收到不止一个以下类型的警告:


这是我在“编译”CUP 时得到的:


编译CUP失败后的另一个错误:


请告诉我是否需要更多信息。

0 投票
1 回答
1850 浏览

parsing - CUP 中的转移/减少冲突

我正在尝试使用 JFlex 和 Cup 为 javascript-ish 语言编写解析器,但我遇到了一些致命的移位/减少问题和减少/减少问题。

我已经彻底搜索并找到了大量示例,但我无法将这些推断到我的语法中。到目前为止我的理解是,这些问题是因为解析器无法决定它应该采取哪种方式,因为它无法区分。

我的语法如下:从INPUT开始;

我遇到了几个冲突,但这两个只是一个例子:

PS:语法要复杂得多,但我认为如果我看到这些移位/减少问题是如何解决的,我将能够解决其余的问题。

感谢您的回答。