private Expr ParsePostfixedExpr() { Expr ret = ParseCallOrNewExpr(); if (ret == null) return ret; TotemOperator op; while (IsPostfixToken(PeekToken(), out op)) { Token t = NextToken(); var start = ret.StartIndex; ret = new UnaryExpr(op, ret); ret.SetLoc(_globalParent, start, GetEnd()); } return ret; }
private Expr ParsePrefixedExpr() { int start; Token t; Expr ret; TotemOperator op; if (IsPrefixToken(PeekToken(), out op)) { t = NextToken(); start = GetStart(); ret = new UnaryExpr(op, ParsePrefixedExpr()); ret.SetLoc(_globalParent, start, GetEnd()); return ret; } else { return ParsePostfixedExpr(); } }