関数呼び出しは
結局こうなった。
void PostExpression():{}{ (PrimitiveExpression() | NewExpression()) ( LOOKAHEAD(1) ( ["<<" | "<<?"] Identifier() [LOOKAHEAD(1) ":" CallArguments()] | ":" args = CallArguments() ) )* } void CallArguments():{}{ CallArgument() (LOOKAHEAD(1) ":" CallArgument())* } void CallArgument():{}{ PrimitiveExpression() }
この文法で、例えば
new java.awt.Frame:"sample" setSize:250,120 show; fun:x,y do return x + y; end: 123, 456;
みたいなものが許容されるはず。