LNode IdAtom()
{
// line 175
LNode r;
// Line 176: ( TT.Substitute Atom | TT.Operator AnyOperator | (TT.Id|TT.TypeKeyword) | IdNotLinqKeyword )
switch (LA0) {
case TT.Substitute:
{
var t = MatchAny();
var e = Atom();
e = AutoRemoveParens(e);
r = F.Call(S.Substitute, e, t.StartIndex, e.Range.EndIndex, t.StartIndex, t.EndIndex, NodeStyle.Operator);
}
break;
case TT.Operator:
{
var op = MatchAny();
var t = AnyOperator();
// line 179
r = F.Attr(_triviaUseOperatorKeyword, F.Id((Symbol) t.Value, op.StartIndex, t.EndIndex));
}
break;
case TT.Id: case TT.TypeKeyword:
{
var t = MatchAny();
// line 181
r = F.Id(t);
}
break;
default:
{
var t = IdNotLinqKeyword();
// line 183
r = F.Id(t);
}
break;
}
// line 184
return r;
}