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;}
;
これをcode-genしようとすると、
- error(100):LTXT.g:1:13:構文エラー:antlr:MismatchedTokenException(74!= 52)。私は74または52を宣言しませんでした。
- また、「ルール「開始」」が開始状態として見つからないため、Synatx図が表示されません。
私はこれがきれいではないことを知っています、しかし私はそれが少なくともうまくいくと思いました:)
最高、ウィッシー