我正面临一个奇怪的 ANTLR 问题,它应该只输出一个 AST。
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 图,因为无法找到“规则“开始””作为开始状态......
我知道这并不漂亮,但我认为它至少会起作用:)
最好的,希望