LNode IdStmt(int startIndex, VList<LNode> attrs, bool hasWordAttrs)
{
TokenType la1;
LNode result = default(LNode);
bool addAttrs = false;
string showWordAttrErrorFor = null;
// Line 1355: ( Constructor / BlockCallStmt / LabelStmt / &(DataType TT.This) DataType => MethodOrPropertyOrVar / ExprStatement )
do {
switch (LA0) {
case TT.ContextualKeyword: case TT.Id:
{
if (Try_IdStmt_Test0(0)) {
if (_spaceName == LT(0).Value) {
switch (LA(1)) {
case TT.LParen:
{
if (Try_BlockCallStmt_Test0(1)) {
if (Try_Constructor_Test0(1) || Try_Constructor_Test2(1))
goto matchConstructor;
else
goto matchBlockCallStmt;
} else if (Try_Constructor_Test0(1) || Try_Constructor_Test2(1))
goto matchConstructor;
else
result = MethodOrPropertyOrVar(startIndex, attrs);
}
break;
case TT.Forward: case TT.LBrace:
{
if (Try_BlockCallStmt_Test0(1))
goto matchBlockCallStmt;
else
result = MethodOrPropertyOrVar(startIndex, attrs);
}
break;
case TT.Colon:
goto matchLabelStmt;
default:
result = MethodOrPropertyOrVar(startIndex, attrs);
break;
}
} else {
switch (LA(1)) {
case TT.LParen:
{
if (Try_Constructor_Test2(1))
goto matchConstructor;
else if (Try_BlockCallStmt_Test0(1))
goto matchBlockCallStmt;
else
result = MethodOrPropertyOrVar(startIndex, attrs);
}
break;
case TT.Forward: case TT.LBrace:
{
if (Try_BlockCallStmt_Test0(1))
goto matchBlockCallStmt;
else
result = MethodOrPropertyOrVar(startIndex, attrs);
}
break;
case TT.Colon:
goto matchLabelStmt;
default:
result = MethodOrPropertyOrVar(startIndex, attrs);
break;
}
}
} else if (_spaceName == LT(0).Value) {
if (Is(0, _await)) {
switch (LA(1)) {
case TT.LParen:
{
if (Try_BlockCallStmt_Test0(1)) {
if (Try_Constructor_Test0(1) || Try_Constructor_Test2(1))
goto matchConstructor;
else
goto matchBlockCallStmt;
} else if (Try_Constructor_Test0(1) || Try_Constructor_Test2(1))
goto matchConstructor;
else
goto matchExprStatement;
}
case TT.Forward: case TT.LBrace:
{
if (Try_BlockCallStmt_Test0(1))
goto matchBlockCallStmt;
else
goto matchExprStatement;
}
case TT.Colon:
goto matchLabelStmt;
default:
goto matchExprStatement;
}
} else {
la1 = LA(1);
if (la1 == TT.LParen) {
if (Try_BlockCallStmt_Test0(1)) {
if (Try_Constructor_Test0(1) || Try_Constructor_Test2(1))
goto matchConstructor;
else
goto matchBlockCallStmt;
} else if (Try_Constructor_Test0(1) || Try_Constructor_Test2(1))
goto matchConstructor;
else
goto matchExprStatement;
} else if (la1 == TT.LBrace) {
if (Try_BlockCallStmt_Test0(1))
goto matchBlockCallStmt;
else
goto matchExprStatement;
} else if (la1 == TT.Forward)
goto matchBlockCallStmt;
else if (la1 == TT.Colon)
goto matchLabelStmt;
else
goto matchExprStatement;
}
} else if (Is(0, _await)) {
switch (LA(1)) {
case TT.LParen:
{
if (Try_Constructor_Test2(1))
goto matchConstructor;
else if (Try_BlockCallStmt_Test0(1))
goto matchBlockCallStmt;
else
goto matchExprStatement;
}
case TT.Forward: case TT.LBrace:
{
if (Try_BlockCallStmt_Test0(1))
goto matchBlockCallStmt;
else
goto matchExprStatement;
}
case TT.Colon:
goto matchLabelStmt;
default:
goto matchExprStatement;
}
} else {
la1 = LA(1);
if (la1 == TT.LParen) {
if (Try_Constructor_Test2(1))
goto matchConstructor;
else if (Try_BlockCallStmt_Test0(1))
goto matchBlockCallStmt;
else
goto matchExprStatement;
} else if (la1 == TT.LBrace) {
if (Try_BlockCallStmt_Test0(1))
goto matchBlockCallStmt;
else
goto matchExprStatement;
} else if (la1 == TT.Forward)
goto matchBlockCallStmt;
else if (la1 == TT.Colon)
goto matchLabelStmt;
else
goto matchExprStatement;
}
}
break;
case TT.This:
{
if (_spaceName != S.Fn || LA(0 + 3) == TT.LBrace) {
la1 = LA(1);
if (la1 == TT.LParen) {
if (Try_Constructor_Test1(1) || Try_Constructor_Test2(1))
goto matchConstructor;
else
goto matchExprStatement;
} else
goto matchExprStatement;
} else {
la1 = LA(1);
if (la1 == TT.LParen) {
if (Try_Constructor_Test2(1))
goto matchConstructor;
else
goto matchExprStatement;
} else
goto matchExprStatement;
}
}
case TT.Default:
{
la1 = LA(1);
if (la1 == TT.Colon)
goto matchLabelStmt;
else
goto matchExprStatement;
}
case TT.Operator: case TT.Substitute: case TT.TypeKeyword:
{
if (Try_IdStmt_Test0(0))
result = MethodOrPropertyOrVar(startIndex, attrs);
else
goto matchExprStatement;
}
break;
default:
goto matchExprStatement;
}
break;
matchConstructor:
{
result = Constructor(startIndex, attrs);
// line 1356
showWordAttrErrorFor = "old-style constructor";
}
break;
matchBlockCallStmt:
{
result = BlockCallStmt(startIndex);
// line 1358
showWordAttrErrorFor = "block-call statement";
addAttrs = true;
}
break;
matchLabelStmt:
{
result = LabelStmt(startIndex);
// line 1360
addAttrs = true;
}
break;
matchExprStatement:
{
result = ExprStatement();
// line 1364
showWordAttrErrorFor = "expression";
addAttrs = true;
}
} while (false);
// line 1367
if (addAttrs) {
result = result.PlusAttrs(attrs);
}
if (hasWordAttrs && showWordAttrErrorFor != null) {
NonKeywordAttrError(attrs, showWordAttrErrorFor);
}
return result;
}