簡體   English   中英

ANTLR4 Parser,未創建訪問者

[英]ANTLR4 Parser, Visitor not created

我是ANTLR的新手,並嘗試在ANTLR4中編寫語法,而不需要事先刷過以前的版本。 我正在閱讀“ The Definitive ANTLR 4 Reference ”一書。 我使用Eclipse並安裝了這里給出的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文件,第一個生成了訪問者但第二個沒有。

然后我意識到每個G4文件都有自己的代碼生成配置,您可以通過以下方式進行更改:

  1. 右鍵單擊G4文件,然后單擊Run As
  2. 選擇External tool configuration
  3. 無訪問者更改為訪問者 ,您可以為聽眾執行相同操作。

現在生成了Visitor文件。

您應該在構建過程中生成語法。 從ANTLR 4.2開始(目前可通過Sonatype快照Maven存儲庫獲得4.2-SNAPSHOT),Maven插件支持Eclipse m2e。 Maven插件的文檔可在此處獲得:

http://www.antlr.org/api/maven-plugin/master/index.html

我不相信它使用ANTLR語法和不自動代碼生成步驟到構建本身的任何內部版本, 強烈建議您不要使用手工代碼生成步驟或代碼生成作為一個IDE擴展永遠的一部分。

檢查您的JRE版本(命令行[windows]:java -version)。
我在這個例子中遇到了同樣的問題。 因為JRE 8

所以,如果你有JRE8,Posible解決方案是:

  • 在eclipse.ini中添加-version:1.7 ; 要么
  • 在“運行方式/外部工具配置...”中,在參數中添加-version:1.7 ; 要么
  • 在Windows / Java / Installed JRE中選擇JRE 1.7

要生成XXXVisitor,請在“運行方式/外部工具配置...”中通過-visitor更改-no-visitor參數。

  • 適用於-version:1.6。

首選項 - > ANTLR4 - >工具 - >選項 - >生成解析樹訪問者

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM