final public void ObjectConstruct(int role) throws ParseException {
Token t;
boolean terminated = false;
boolean isMethod;
Parent parameters;
label_47:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case BEGIN:
case DOT:
case OPEN:
case OPEN_BRACKET:
;
break;
default:
jj_la1[138] = jj_gen;
break label_47;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OPEN:
t = jj_consume_token(OPEN);
ArgumentList();
jj_consume_token(CLOSE);
parameters = (Parent)pop();
if (parameters.hasNamedParameters()) {
error(toLocation(t), "Named parameters are ignored in anonymous calls");
}
push(new DynamicCallNode(pop(), parameters));
break;
case BEGIN:
InlineFunction();
parameters = new ExpressionList(pop());
push(new DynamicCallNode(pop(), parameters));
break;
case DOT:
jj_consume_token(DOT);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OPEN:
t = jj_consume_token(OPEN);
ExpressionStart();
jj_consume_token(CLOSE);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OPEN:
jj_consume_token(OPEN);
ArgumentList();
jj_consume_token(CLOSE);
break;
case BEGIN:
InlineFunction();
push(new ExpressionList(pop()));
break;
default:
jj_la1[139] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
if (terminated) {
error(toLocation(t), "Empty brackets terminate variable expression");
}
parameters = (Parent)pop();
if (parameters.hasNamedParameters()) {
error(toLocation(t), "Named parameters are ignored in anonymous invokes");
}
Node method = pop();
Node self = pop();
push(new DynamicInvokeNode(self, method, parameters));
break;
case SYMBOL:
t = jj_consume_token(SYMBOL);
isMethod = false;
if (jj_2_23(2)) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OPEN:
jj_consume_token(OPEN);
ArgumentList();
jj_consume_token(CLOSE);
break;
case BEGIN:
InlineFunction();
push(new ExpressionList(pop()));
break;
default:
jj_la1[140] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
isMethod = true;
} else {
;
}
if (terminated) {
error(toLocation(t), "Empty brackets terminate variable expression");
}
if (isMethod) {
parameters = (Parent)pop();
if (parameters.hasNamedParameters()) {
error(toLocation(t), "Named parameters are ignored in anonymous invokes");
}
push(new InvokeNode(pop(), t.image, parameters));
} else {
push(new AttributeNode(pop(), t.image));