void IfHeader() { Expect((int)TokenEnum.If); Expect((int)TokenEnum.LeftParenthesis); Expression(); try { GraphicFooType type = Quadruple.typeStack.Pop(); if (Semantics.ExpectType(type, GraphicFooType.Boolean)) { string id = Quadruple.operandStack.Pop(); Quadruple.CreateGotoFalseQuadruple(id); Quadruple.PushJump(); } else { SemErr( (int)SemanticEnum.TypeMismatch, "expected boolean, found " + type ); } } catch (InvalidOperationException) { SynErr((int)TokenEnum.NoExpression); } Expect((int)TokenEnum.RightParenthesis); }