1
我正面臨一個奇怪的ANTLR問題,應該只輸出一個AST。ANTLR找不到定義的起始規則
grammar ltxt.g;
options
{
language=CSharp3;
}
prog : start
;
start : '{Start 'loopname'}'statement'{Ende 'loopname'}'
| statement
;
loopname : (('a'..'z')|('A'..'Z')|('1'..'9'))*;
statement : '<%' table_ref '>'
| start;
table_ref : '{'format'}'ID;
format : FSTRING
| FSTRING OFSTRING{0,5}
;
FSTRING : '#F'
| '#D'
| '#U'
| '#K'
;
OFSTRING: 'F'
| 'D'
| 'U'
| 'K'
//| 1..65536
;
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
;
WS : (' '
| '\t'
| '\r'
| '\n'
) {$channel=HIDDEN;}
;
當我嘗試代碼生成這個我得到
- 錯誤(100):LTXT.g:1:13:語法錯誤:ANTLR:MismatchedTokenException異常(74 = 52!)。我沒有宣佈任何74或52
- 我也沒有得到一個Synatx圖,因爲「規則‘開始’,」無法找到爲啓動狀態...
我知道,這ISN 「T很漂亮,但我認爲這將至少工作:)
最佳, wishi