1
我想創建應分析下列文件非常簡單ANTLR語法文件:我的簡單antlr語法有什麼問題?
Report (MyReport)
Begin
End
或者不報告名稱:
Report
Begin
End
這裏是我的語法文件:
grammar RL;
options {
language = Java;
}
report:
REPORT ('(' SPACE* STRING_LITERAL SPACE* ')')?
BEGIN
END
;
REPORT
: 'Report'
;
BEGIN
: 'Begin'
;
END : 'End';
NAME: LETTER (LETTER | DIGIT | '_')*;
STRING_LITERAL : NAME SPACE*;
fragment LETTER: LOWER | UPPER;
fragment LOWER: 'a'..'z';
fragment UPPER: 'A'..'Z';
fragment DIGIT: '0'..'9';
fragment SPACE: ' ' | '\t';
WHITESPACE: SPACE+ { $channel = HIDDEN; };
rule: ;
但是,當我在ANTLRWorks調試時,我總是得到以下錯誤:
root -> report -> MismatchedTokenException(0!=0)
我的語法文件有什麼問題?
感謝, 綠色
非常感謝。如果我想讓報告名稱中包含「SPACE」,該怎麼辦? –
@green,不客氣。看到我編輯的答案。 –
我遵循「report_name」方法,並得到此錯誤:「T:\ tmp \ RL \ RL.g:11:1:以下標記定義永遠無法匹配,因爲之前的標記匹配相同的輸入:REPORT_NAME」。源代碼在https://gist.github.com/2991022 –