Exemple #1
0
        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);
        }