// Haxe.g:327:13: SUB ^
{
SUB215=(Token)match(input,SUB,FOLLOW_SUB_in_unarExpr3843); if (state.failed) return retval;
if ( state.backtracking==0 ) {
SUB215_tree =
new Unary(SUB215)
;
root_0 = (Object)adaptor.becomeRoot(SUB215_tree, root_0);
}
}
break;
case 2 :
// Haxe.g:328:13: SUBSUB ^
{
SUBSUB216=(Token)match(input,SUBSUB,FOLLOW_SUBSUB_in_unarExpr3862); if (state.failed) return retval;
if ( state.backtracking==0 ) {
SUBSUB216_tree =
new Unary(SUBSUB216)
;
root_0 = (Object)adaptor.becomeRoot(SUBSUB216_tree, root_0);
}
}
break;
case 3 :
// Haxe.g:329:13: PLUSPLUS ^
{
PLUSPLUS217=(Token)match(input,PLUSPLUS,FOLLOW_PLUSPLUS_in_unarExpr3881); if (state.failed) return retval;
if ( state.backtracking==0 ) {
PLUSPLUS217_tree =
new Unary(PLUSPLUS217)
;
root_0 = (Object)adaptor.becomeRoot(PLUSPLUS217_tree, root_0);
}
}
break;
case 4 :
// Haxe.g:330:13: BANG ^
{
BANG218=(Token)match(input,BANG,FOLLOW_BANG_in_unarExpr3900); if (state.failed) return retval;
if ( state.backtracking==0 ) {
BANG218_tree =
new Unary(BANG218)
;
root_0 = (Object)adaptor.becomeRoot(BANG218_tree, root_0);
}
}
break;
case 5 :
// Haxe.g:331:13: TILDE ^
{
TILDE219=(Token)match(input,TILDE,FOLLOW_TILDE_in_unarExpr3919); if (state.failed) return retval;
if ( state.backtracking==0 ) {
TILDE219_tree =
new Unary(TILDE219)
;
root_0 = (Object)adaptor.becomeRoot(TILDE219_tree, root_0);
}
}
break;
}
pushFollow(FOLLOW_prefixExpr_in_unarExpr3926);
prefixExpr220=prefixExpr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, prefixExpr220.getTree());
}
break;
case 2 :
// Haxe.g:332:19: prefixExpr ( PLUSPLUS ^| SUBSUB ^)?
{
root_0 = (Object)adaptor.nil();
pushFollow(FOLLOW_prefixExpr_in_unarExpr3946);
prefixExpr221=prefixExpr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, prefixExpr221.getTree());
// Haxe.g:332:30: ( PLUSPLUS ^| SUBSUB ^)?
int alt64=3;
int LA64_0 = input.LA(1);
if ( (LA64_0==PLUSPLUS) ) {
int LA64_1 = input.LA(2);
if ( (synpred106_Haxe()) ) {
alt64=1;
}
}
else if ( (LA64_0==SUBSUB) ) {
int LA64_2 = input.LA(2);
if ( (synpred107_Haxe()) ) {
alt64=2;
}
}
switch (alt64) {
case 1 :
// Haxe.g:332:31: PLUSPLUS ^
{
PLUSPLUS222=(Token)match(input,PLUSPLUS,FOLLOW_PLUSPLUS_in_unarExpr3949); if (state.failed) return retval;
if ( state.backtracking==0 ) {
PLUSPLUS222_tree =
new Unary(PLUSPLUS222)
;
root_0 = (Object)adaptor.becomeRoot(PLUSPLUS222_tree, root_0);
}
}
break;
case 2 :
// Haxe.g:332:48: SUBSUB ^
{
SUBSUB223=(Token)match(input,SUBSUB,FOLLOW_SUBSUB_in_unarExpr3955); if (state.failed) return retval;
if ( state.backtracking==0 ) {
SUBSUB223_tree =
new Unary(SUBSUB223)
;
root_0 = (Object)adaptor.becomeRoot(SUBSUB223_tree, root_0);
}
}