}
throw new Error("Missing return statement in function");
}
final public ExpressionTerm parseExpression() throws ParseException {
ExpressionTerm expr = new ExpressionTerm();
ExpressionToken eTok = null;
eTok = Context();
expr.addToken(eTok);
label_2:
while(true) {
switch((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
case DOT:
case LBRACKET:
;
break;
default:
jj_la1[2] = jj_gen;
break label_2;
}
switch((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
case DOT:
jj_consume_token(DOT);
eTok = ExprIdentifier();
break;
default:
jj_la1[3] = jj_gen;
if(jj_2_1(2)) {
eTok = MapKey();
} else {
switch((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
case LBRACKET:
eTok = ArrayIndex();
break;
default:
jj_la1[4] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
}
{
expr.addToken(eTok);
}
}
expr.seal();
{
if(true) return expr;
}
throw new Error("Missing return statement in function");
}