首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用vscode和mac的Jflex和CUP

不使用vscode和mac的Jflex和CUP
EN

Stack Overflow用户
提问于 2022-02-18 21:24:58
回答 1查看 267关注 0票数 0

我通过做brew install jflex下载了jflex,一切都按其应有的方式工作。

但现在,当我试图使它与java_cup.runtime.*一起工作时。我不断地发现下面的错误

代码语言:javascript
复制
Lexer.java:681: error: cannot find symbol
          { return new java_cup.runtime.Symbol(sym.EOF); }
                                               ^
  symbol:   variable sym
  location: class Lexer

我的经纪人说,

“符号类是解析器( JavaCUP )的运行时jar文件的一部分。

所以我在下面做了bash文件,并照他说的做了,这是行不通的。

代码语言:javascript
复制
#!/bin/bash
jflex MiniJava.jflex
javac -cp "/Users/carlosfield/Desktop/School/csc453/java-cup-bin-11b-20160615/java-cup-11b.jar" Lexer.java
java -cp "/Users/carlosfield/Desktop/School/csc453/java-cup-bin-11b-20160615/java-cup-11b-runtime.jar"  Lexer Factorial.java
rm Lexer*

这是我的jflex文件

代码语言:javascript
复制
import java.util.*;
import java_cup.runtime.*;
%% 
%class Lexer
%cup
%line
%column
%{
private Symbol symbol(int type) {
    return new Symbol(type, yyline, yycolumn);
}
private Symbol symbol(int type, Object value) { 
    return new Symbol(type, yyline, yycolumn, value); 
} 
%} 
WhiteSpace = [ \t\r\n]
Identifier = [a-zA-Z_][a-zA-Z0-9_]*
Integer = 0 | [1-9][0-9]* 
%% 
“+” {  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-22 18:16:25

解决此问题的方法是,如果在jflex文件中使用%cup,则必须创建自己的sym类,其中包含public static final int EOF=0

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71180011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档