LNode PrimaryExpr()
{
TT la0, la1;
Token lp = default(Token);
Token rp = default(Token);
Token tok__Any = default(Token);
Token tok__Id = default(Token);
// Line 125: ( TT.Minus PrimaryExpr | TT.Any TT.Id (TT.In GateExpr / ) | Atom greedy(TT.Dot Atom | &{a.Range.EndIndex == LT($LI).StartIndex} (TT.LParen TT.RParen | TT.LBrack TT.RBrack))* )
la0 = (TT) LA0;
if (la0 == TT.Minus) {
Skip();
var e = PrimaryExpr();
#line 125 "StageOneParserGrammar.ecs"
return F.Call(S._Negate, e);
#line default
} else if (la0 == TT.Any) {
#line 126 "StageOneParserGrammar.ecs"
LNode e, id;
#line default
tok__Any = MatchAny();
tok__Id = Match((int) TT.Id);
#line 127 "StageOneParserGrammar.ecs"
id = F.Id(tok__Id);
#line default
// Line 128: (TT.In GateExpr / )
do {
la0 = (TT) LA0;
if (la0 == TT.In) {
la1 = (TT) LA(1);
if (PrimaryExpr_set0.Contains((int) la1)) {
Skip();
e = GateExpr();
} else
goto match2;
} else
goto match2;
break;
match2:
{
#line 129 "StageOneParserGrammar.ecs"
e = id;
#line default
}
} while (false);
e = F.Call(_Any, id, e, tok__Any.StartIndex, e.Range.EndIndex);
return e;
} else {
var a = Atom();
// Line 135: greedy(TT.Dot Atom | &{a.Range.EndIndex == LT($LI).StartIndex} (TT.LParen TT.RParen | TT.LBrack TT.RBrack))*
for (;;) {
la0 = (TT) LA0;
if (la0 == TT.Dot) {
var op = MatchAny();
var b = Atom();
#line 135 "StageOneParserGrammar.ecs"
Infix(ref a, (Symbol) op.Value, b);
#line default
} else if (la0 == TT.LParen) {
if (a.Range.EndIndex == LT(0).StartIndex) {
la1 = (TT) LA(1);
if (la1 == TT.RParen)
goto match2_a;
else
break;
} else
break;
} else if (la0 == TT.LBrack) {
if (a.Range.EndIndex == LT(0).StartIndex) {
la1 = (TT) LA(1);
if (la1 == TT.RBrack)
goto match2_a;
else
break;
} else
break;
} else
break;
continue;
match2_a:
{
// Line 138: (TT.LParen TT.RParen | TT.LBrack TT.RBrack)
la0 = (TT) LA0;
if (la0 == TT.LParen) {
lp = MatchAny();
rp = Match((int) TT.RParen);
} else {
lp = Match((int) TT.LBrack);
rp = Match((int) TT.RBrack);
}
#line 141 "StageOneParserGrammar.ecs"
a = F.Call(a, ParseHostCode(lp, ParsingMode.Expressions), a.Range.StartIndex, rp.EndIndex);
#line default
}
}
#line 143 "StageOneParserGrammar.ecs"
return a;
#line default
}
}
LNode Atom()