public void SetupPrefixOp(PrefixOperator op) { Eat(); op.Position = CurToken.Position; op.CurScope = CurScope; CurPrefixStack.Enqueue(op); }
public void SetupExpr(Expression expr, bool eat) { if (Error) { return; } if (eat) { Eat(); } expr.Position = CurToken.Position; expr.CurScope = CurScope; ParsePostfix(); if (Error) { return; } while (CurPostfixStack.Count > 0) { var postfix = CurPostfixStack.Dequeue(); postfix.Child = expr; expr = postfix; } while (CurPrefixStack.Count > 0) { var prefix = CurPrefixStack.Dequeue(); prefix.Child = expr; expr = prefix; } CurExprStack.Enqueue(expr); ExpectPrefix = false; if (CurExprStack.Count != CurBinaryStack.Count + 1) { ReportError("Missing operator"); } }