bool Scan_NewExpr()
{
TokenType la0, la1;
if (!TryMatch((int) TT.New))
return false;
// Line 434: ( &{(count = CountDims(LT($LI), @false)) > 0} TT.LBrack TT.RBrack TT.LBrace TT.RBrace | TT.LBrace TT.RBrace | DataType (TT.LParen TT.RParen (TT.LBrace TT.RBrace)? / (TT.LBrace TT.RBrace)?) )
la0 = LA0;
if (la0 == TT.LBrack) {
if (!((count = CountDims(LT(0), false)) > 0))
return false;
if (!TryMatch((int) TT.LBrack))
return false;
if (!TryMatch((int) TT.RBrack))
return false;
if (!TryMatch((int) TT.LBrace))
return false;
if (!TryMatch((int) TT.RBrace))
return false;
} else if (la0 == TT.LBrace) {
if (!TryMatch((int) TT.LBrace))
return false;
if (!TryMatch((int) TT.RBrace))
return false;
} else {
if (!Scan_DataType(false))
return false;
// Line 458: (TT.LParen TT.RParen (TT.LBrace TT.RBrace)? / (TT.LBrace TT.RBrace)?)
do {
la0 = LA0;
if (la0 == TT.LParen) {
la1 = LA(1);
if (la1 == TT.RParen) {
if (!TryMatch((int) TT.LParen))
return false;
if (!TryMatch((int) TT.RParen))
return false;
// Line 466: (TT.LBrace TT.RBrace)?
la0 = LA0;
if (la0 == TT.LBrace) {
la1 = LA(1);
if (la1 == TT.RBrace) {
if (!TryMatch((int) TT.LBrace))
return false;
if (!TryMatch((int) TT.RBrace))
return false;
}
}
} else
goto match2;
} else
goto match2;
break;
match2:
{
// Line 476: (TT.LBrace TT.RBrace)?
la0 = LA0;
if (la0 == TT.LBrace) {
la1 = LA(1);
if (la1 == TT.RBrace) {
if (!TryMatch((int) TT.LBrace))
return false;
if (!TryMatch((int) TT.RBrace))
return false;
}
}
}
} while (false);
}
return true;
}