问题标签 [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.
java - 带有 CUP 编译错误的 JFlex
我正在尝试运行 CUP 提供的示例:Parsing directly to XML。
我将“Minijava 语法”存储在一个名为minijava.cup的文件中,并将扫描仪存储在一个名为 xml.flex 的文件中。我运行 JFlex 以从 xml.flex 文件中获取Lexer.java 。之后,我在运行 CUP 示例中指定的命令后获得了Parser.java和sym.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 文件。
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
我很困惑……我该怎么办?
java - 我遇到了与 CUP 的 Shift/Reduce 冲突
我有以下解析代码,但我在非终端表达式和函数调用之间遇到了移位/减少冲突。这是 Visual Basic 编程语言的一小段解析代码。CFG会错吗?还是仅在这两个非终端符号中存在问题。
什么可能给我带来麻烦?
java - Java Cup 中的 Shift/Reduce 冲突
我收到以下错误:
这是我使用的语法。目前我有分配和中断(每个中断语句都可以指定要退出的循环级别数)。
据我了解,问题是在我遇到 EXITLOOP 之后,下一个标记可能是分配的开始或要退出的级别数。
有没有办法解决这个问题?
谢谢!
java - CUP 解析器返回有效输入的语法错误
我正在尝试编写一个非常简单的解析器。我将 JFlex 与 Java CUP 一起使用。这是我的代码:
LEX 文件:
CUP 文件:
主.java
如您所见,我尝试使其尽可能简单,但对于仅包含一个字符的输入文件,我收到以下错误:“|”。
输入字符 0 处的语法错误
但很明显,我们为“|”定义了一个适当的推导。
为什么会这样?
编辑:
-“从 myrule 开始;” 没有帮助
java - 如何使用 Java Cup for Java Interpreter 获取表达式
我正在使用 jflex 和 cup 创建解释器,但我不知道如何实现嵌套语句、if else 循环等。我想知道是否可以在语句中获取表达式来分析它
我需要“表达”才能了解和分析语句中的代码
java - 如何为嵌套的“if”指令定义使用多个破折号的语法?
我正在尝试用 Java (使用CUP)创建一个可以识别这段代码的语法分析器:
“if”语句使用的我的产品如下:
其中 Instr 代表指令/语句,CondInstrList 代表条件指令列表,CONTROLD 代表控制短划线 (~)。(CONOP 和 CONCL 表示条件打开/关闭)
问题在于,使用该语法,生成的 AST 如下:
因此,“else”部分与内部“if”相关联。
我只是不知道如何编写一个尊重我想要的语言方式的语法。
任何帮助表示赞赏。
如果需要,我可以提供更多细节。
java - java_cup.runtime.Symbol "EOF" 尚未声明
我已经阅读了这个讨论,但它对我没有帮助。
fm.scriviDebug()
我的自定义类在哪里打印 CUP 解析的标准输出。
我不知道问题出在哪里。
一些信息:
我使用 JFlex 扫描文件并通过以下方式将符号传递给 CUP:
我收到不止一个以下类型的警告:
这是我在“编译”CUP 时得到的:
编译CUP失败后的另一个错误:
请告诉我是否需要更多信息。
parsing - CUP 中的转移/减少冲突
我正在尝试使用 JFlex 和 Cup 为 javascript-ish 语言编写解析器,但我遇到了一些致命的移位/减少问题和减少/减少问题。
我已经彻底搜索并找到了大量示例,但我无法将这些推断到我的语法中。到目前为止我的理解是,这些问题是因为解析器无法决定它应该采取哪种方式,因为它无法区分。
我的语法如下:从INPUT开始;
我遇到了几个冲突,但这两个只是一个例子:
PS:语法要复杂得多,但我认为如果我看到这些移位/减少问题是如何解决的,我将能够解决其余的问题。
感谢您的回答。