【发布时间】:2013-02-13 19:59:33
【问题描述】:
我看到答案How to get ANTLR 3.2 to exit upon first error? 很有帮助。
但是,我似乎无法添加这些 '@' 规则,否则我的语法会被吓坏。我的语法文件很简单:
grammar Exp;
options {
output=AST;
}
program
: includes decls (procedure)* main -> ^(SMALLCPROGRAM includes decls (procedure)* main) //AST - PROGRAM root
;
//Lexer and Parser rules continue below as normal..tested thoroughly and works
但是,如果我尝试添加这些 @ 规则中的任何一个,我会收到如下错误:
grammar file Exp.g has no rules
和:
Exp.g:0:1: syntax error: assign.types: org.antlr.runtime.EarlyExitException
org\antlr\grammar\v3\DefineGrammarItemsWalker.g: node from line 202:4 required (...)+ loop did not match anything at input ';'
有人知道问题出在哪里吗?我只是想改变我的语法,这样当我从单独的主类运行它时(使用 ANTLRStringStream 等将输入传递给它),当出现语法问题时,它实际上会在主类中抛出一个错误,而不是仅仅说:
line 1:57 missing RPAREN at '{'
在继续解析输入的其余部分之前。最终,我的主类应该拒绝解析我的语法定义的任何语法错误的输入,并且应该向用户报告错误。
【问题讨论】:
标签: error-handling antlr antlr3