私は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 : '"' (~'"')* '"';