我对ANTLR很新,我正尝试玩它。这是我所能想到的最简单的语法。 当我分析一个变数“ ID123” 时, 它仍然不起作用( 不可置信的例外), 但对于“ abc1, "ab", "c1d2f3" 却有效。
我使用ANTRR 3.1.3 和 ANTRL Works 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 :
{ $channel = HIDDEN; };
LF :
{ $channel = HIDDEN; };
CRLF : CR LF { $channel = HIDDEN; };
SPACE : ( | ) { $channel = HIDDEN; };
STRING : " (~ " )* " ;