java - 使用 JFlex/CUP 构建编译器并解决一些问题

标签 java compiler-construction jflex

我目前正在为 BASIC 语言开发一个简单的编译器,我发现了一些问题,想请教您。

第一个很简单,我应该在哪里定义我的 token ?我的意思是,在 Lexer.java 文件中,我使用以下表达式将标记发送到解析器: 返回符号(sym.STATIC); STATIC 对我来说是一个 token ,但我不知道在哪里定义它。

其次,我应该在哪里定义创建 Lexer 和 Parser 实例的主类?在 Parser 类中还是在另一个类中?

提前致谢。

最佳答案

首先:将自动为您生成一个包含定义这些符号的类的文件

第二:您使用 main 创建自己的类,在其中从生成的词法分析器创建一个对象(将输入流传递给该对象),并从解析器创建一个对象(将词法分析器传递给该对象)。 创建这两个对象后,您可以调用属于 Parser 的方法 parse()。

关于java - 使用 JFlex/CUP 构建编译器并解决一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4567019/

相关文章:

java - Eclipse 2019-09 连接到 Team Foundation Server 无限循环

java - JSF 同时登录 两个用户

java - 从两个列表创建映射,其键和值作为同一对象

javax.tools.JavaCompiler "arguments"arg

java - 带有 CUP 编译错误的 JFlex

java - JFlex 错误 : Unexpected character: YYINITIAL

java - 了解 Java 中的类加载器

C++ 代码在以 Objective-c 为主的项目中运行速度非常慢

Cygwin 编译错误 : "this application has requested the runtime to terminate it in an unusual way"

java - jflex 中的元音正则表达式