ANTLRで次のような文法を作ろうとしています。
次のような識別子を解析できます。
foo > bar > 67
ここで、foo> barは識別子です。これは、>の後に文字が続く場合は識別子に含まれ、それ以外の場合は大なり演算子であるためです。
そして、私はそれが次のようなものを解析する必要があります
((a = 1) AND (b = 2)) OR (c = 3)
()が必要な場合。
私はこのトピックとANTLRに本当に慣れていないので、誰かが助けてくれることを願っています。
私は現在この文法を持っています
grammar testgrammer;
start : statement EOF;
statement
: operation (AND operation)*;
operation
: '(' ID OPERATOR INT ')';
AND : 'AND';
OPERATOR: '=' | '>';
ID
: ('a'..'z'| 'A'..'Z')+ (WS '>' WS ('a'..'z' | 'A'..'Z')+)?
;
WS
: ' '+ {skip();}
;
INT : '0'..'9'+
;
しかし、IDの>と演算子としての>を切り替える方法がわかりません。