我是 ANTLR 的新手,我正在尝试使用它。这是我能想到的最简单的语法,但当我解析变量“id123”时它仍然不起作用(NoViableAltException),但它适用于“abc1”、“ab”、“c1d2f3”。
我正在使用 ANTLR 3.1.3 和 ANTLRWorks 1.4。
options
{
language = 'CSharp2';
output = AST;
}
assign : variable '=' value;
value : (variable|constant);
variable: LETTER (LETTER|DIGIT)*;
constant: (STRING|INTEGER);
DIGIT : '0'..'9';
NATURAL : (DIGIT)+;
INTEGER : ('-')? NATURAL;
REAL : (INTEGER '.' NATURAL);
LETTER : ('a'..'z'|'A'..'Z');
CR : '\r' { $channel = HIDDEN; };
LF : '\n' { $channel = HIDDEN; };
CRLF : CR LF { $channel = HIDDEN; };
SPACE : (' '|'\t') { $channel = HIDDEN; };
STRING : '"' (~'"')* '"';