void FinishPrimaryExpr(ref LNode e)
{
TokenType la1;
// Line 541: greedy( (TT.ColonColon|TT.Dot|TT.PtrArrow|TT.QuickBind) AtomOrTypeParamExpr / PrimaryExpr_NewStyleCast / TT.LParen TT.RParen | TT.LBrack TT.RBrack | TT.QuestionMark TT.LBrack TT.RBrack | TT.IncDec | &(TParams ~(TT.ContextualKeyword|TT.Id)) ((TT.LT|TT.Not) | TT.Dot TT.LBrack) => TParams | BracedBlockOrTokenLiteral )*
for (;;) {
switch (LA0) {
case TT.Dot:
{
if (Try_FinishPrimaryExpr_Test0(0)) {
switch (LA(1)) {
case TT.At: case TT.Base: case TT.Checked: case TT.ContextualKeyword:
case TT.Default: case TT.Delegate: case TT.Dot: case TT.Id:
case TT.Is: case TT.LBrace: case TT.Literal: case TT.LParen:
case TT.New: case TT.Operator: case TT.Sizeof: case TT.Substitute:
case TT.This: case TT.TypeKeyword: case TT.Typeof: case TT.Unchecked:
goto match1;
case TT.LBrack:
TParams(false, ref e);
break;
default:
goto stop;
}
} else {
switch (LA(1)) {
case TT.At: case TT.Base: case TT.Checked: case TT.ContextualKeyword:
case TT.Default: case TT.Delegate: case TT.Dot: case TT.Id:
case TT.Is: case TT.LBrace: case TT.Literal: case TT.LParen:
case TT.New: case TT.Operator: case TT.Sizeof: case TT.Substitute:
case TT.This: case TT.TypeKeyword: case TT.Typeof: case TT.Unchecked:
goto match1;
default:
goto stop;
}
}
}
break;
case TT.ColonColon: case TT.PtrArrow: case TT.QuickBind:
{
switch (LA(1)) {
case TT.At: case TT.Base: case TT.Checked: case TT.ContextualKeyword:
case TT.Default: case TT.Delegate: case TT.Dot: case TT.Id:
case TT.Is: case TT.LBrace: case TT.Literal: case TT.LParen:
case TT.New: case TT.Operator: case TT.Sizeof: case TT.Substitute:
case TT.This: case TT.TypeKeyword: case TT.Typeof: case TT.Unchecked:
goto match1;
default:
goto stop;
}
}
case TT.LParen:
{
if (Down(0) && Up(LA0 == TT.As || LA0 == TT.Using || LA0 == TT.PtrArrow)) {
la1 = LA(1);
if (la1 == TT.RParen)
e = PrimaryExpr_NewStyleCast(e);
else
goto stop;
} else {
la1 = LA(1);
if (la1 == TT.RParen) {
var lp = MatchAny();
var rp = MatchAny();
// line 545
e = F.Call(e, ExprListInside(lp), e.Range.StartIndex, rp.EndIndex);
} else
goto stop;
}
}
break;
case TT.LBrack:
{
la1 = LA(1);
if (la1 == TT.RBrack) {
var lb = MatchAny();
var rb = MatchAny();
var list = new VList<LNode> {
e
};
e = F.Call(S.IndexBracks, AppendExprsInside(lb, list), e.Range.StartIndex, rb.EndIndex, lb.StartIndex, lb.EndIndex);
} else
goto stop;
}
break;
case TT.QuestionMark:
{
la1 = LA(1);
if (la1 == TT.LBrack) {
var t = MatchAny();
var lb = MatchAny();
var rb = Match((int) TT.RBrack);
// line 563
e = F.Call(S.NullIndexBracks, e, F.List(ExprListInside(lb)), e.Range.StartIndex, rb.EndIndex, t.StartIndex, lb.EndIndex);
} else
goto stop;
}
break;
case TT.IncDec:
{
var t = MatchAny();
// line 565
e = F.Call(t.Value == S.PreInc ? S.PostInc : S.PostDec, e, e.Range.StartIndex, t.EndIndex, t.StartIndex, t.EndIndex);
}
break;
case TT.LT: case TT.Not:
{
if (Try_FinishPrimaryExpr_Test0(0))
TParams(false, ref e);
else
goto stop;
}
break;
case TT.At: case TT.LBrace:
{
la1 = LA(1);
if (la1 == TT.LBrace || la1 == TT.LBrack || la1 == TT.RBrace) {
var bb = BracedBlockOrTokenLiteral();
// line 569
if ((!e.IsCall || e.BaseStyle == NodeStyle.Operator)) {
e = F.Call(e, bb, e.Range.StartIndex, bb.Range.EndIndex);
} else {
e = e.WithArgs(e.Args.Add(bb)).WithRange(e.Range.StartIndex, bb.Range.EndIndex);
}
} else
goto stop;
}
break;
default:
goto stop;
}
continue;
match1:
{
var op = MatchAny();
var rhs = AtomOrTypeParamExpr();
// line 542
e = F.Call((Symbol) op.Value, e, rhs, e.Range.StartIndex, rhs.Range.EndIndex, op.StartIndex, op.EndIndex, NodeStyle.Operator);
}
}
stop:;
}