Beispiel #1
0
// ПростоеВыраж [Отношение ПростоеВыраж]
    static tType Expression()
    {
        tLex Op;

        tType T = SimpleExpr();

        if (Scan.Lex == tLex.lexEQ || Scan.Lex == tLex.lexNE ||
            Scan.Lex == tLex.lexGT || Scan.Lex == tLex.lexGE ||
            Scan.Lex == tLex.lexLT || Scan.Lex == tLex.lexLE)
        {
            Op = Scan.Lex;
            if (T != tType.Int)
            {
                Error.Message(
                    "Несоответствие операции типу операнда"
                    );
            }
            Scan.NextLex();
            if ((T = SimpleExpr()) != tType.Int)
            {
                Error.Expected("выражение целого типа");
            }
            Gen.Comp(Op); //Генерация условного перехода
            T = tType.Bool;
        } //иначе тип равен типу первого простого выражения
        return(T);
    }