0
我是ANTLR的新手,正在努力解決我遇到的一些錯誤。下面我列出了我正在使用的語法,輸入文件和我得到的錯誤。使用ANTLR4的無關輸入錯誤
我ANTLR的語法文件如下:
grammar Simple;
@header
{
package simple;
}
PARSER
program :
anylinebefore+
processline
anylineafter+
'MSEND' NEWLINE
'.' EOF
;
anylinebefore: CH* NEWLINE | commentline;
anylineafter: statement | commentline;
statement: movestatement ;
movestatement : 'MOVE' arg ('to' | 'TO') ID '.' NEWLINE ;
arg : ID|STRING;
processline: PROCESSLITERAL NEWLINE;
commentline: '!' CH* NEWLINE;
LEXER
WS : [ \t]+ -> skip ;
STRING : '\'' (~['])* '\'';
ID : ('a'..'z'|'A'..'Z')+;
INT : '0'..'9'+;
TO : ('to' | 'TO');
CH : [\u0000-\uFFFE];
PROCESSLITERAL : 'PROCESS SOURCE FOLLOWS';
NEWLINE : '\r'? '\n' ;
我的輸入文件如下:
MODIFY
PROCESS SOURCE FOLLOWS
MOVE 'WSFRED' TO AGRPASSEDTWO.
MSEND
.
的錯誤,我得到的是:
showtree:
[java] line 1:0 extraneous input 'MODIFY' expecting {'!', CH, NEWLINE}
我不明白爲什麼這不是在語法 任何幫助,將不勝感激匹配anylinebefore。
嘿,有沒有ANTLR 4書贈品?我想要一個,但我媽媽不會給我錢:-P –
謝謝ANTLR的傢伙。我今晚花了幾個小時,得出了同樣的結論。再次感謝... –