java - ANTLR4 解析器,未创建访客

标签 java parsing antlr4 eclipse-kepler

我是 ANTLR 的新手,并尝试在 ANTLR4 中编写语法,而无需事先刷过以前的版本。我正在关注“The Definitive ANTLR 4 Reference”一书。我使用 Eclipse 并按照 here 中的说明安装了 ANTLR4 IDE .我在 Expr.g4 中写了以下语法:

grammar Expr;

import Common;

options{
language = Java;
}
prog: stat+;

stat: expr NEWLINE
    | ID '=' expr NEWLINE
    | NEWLINE;

expr: expr ('/'|'*') expr
    | expr ('+'|'-') expr
    | INT
    | ID
    | '('expr')';

Common.g4 包含以下内容:

lexer grammar Common;

ID: [A-Za-z]+;
INT: [0-9]+;
NEWLINE: '\r'?'\n';
WS: [\t]+ -> skip;

创建了 lexer.java 但没有创建 parser.java 和 visitor.java 等基础文件。请帮我解决这个问题。提前致谢。

最佳答案

事实上我曾经遇到过同样的问题,我曾经在同一个项目中集成两个 G4 文件,第一个生成了 Visitor,而第二个没有。

然后我意识到每个 G4 文件都有自己的代码生成配置,您可以通过以下方式进行更改:

  1. 右键单击 G4 文件,然后单击 Run As
  2. 选择外部工具配置
  3. no-visitor更改为visitor,您可以对 听众。

现在 Visitor 文件已生成。

关于java - ANTLR4 解析器,未创建访客,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21213143/

相关文章:

parsing - ANTLR Lexer 匹配错误的规则

antlr4 - 解析器中重新定义标记类型

java - Junit 与 HSQL/H2 一起使用,无需 Spring/Hibernate

javascript - 在 javascript 中是否可以在 jquery.Trim() 中包含其他字符

c# - 解析 “(”-不够)

javascript - 在 javascript 中更新 JSON.parsed 对象

java - AWS Java 删除使用 CreateImage 创建的快照

java - 在 JavaFX 中动态添加文本字段

java - 获取控制当前类的java线程

java - ANTLR - 输入错误不匹配