Exemplo n.º 1
0
        public override TreeNode GetAstCodeGenerator(SymbolTable t)
        {
            switch (op)
            {
            case "<":
                var less = new Lt((MIPSCodeGenerator.Expression)Left.GetAstCodeGenerator(t), (MIPSCodeGenerator.Expression)Rigth.GetAstCodeGenerator(t), Line);
                SetGeneratorType(less);
                return(less);

            case "<=":
                var lesseq = new Leq((MIPSCodeGenerator.Expression)Left.GetAstCodeGenerator(t), (MIPSCodeGenerator.Expression)Rigth.GetAstCodeGenerator(t), Line);
                SetGeneratorType(lesseq);
                return(lesseq);

            case "=":
                var eq = new Eq((MIPSCodeGenerator.Expression)Left.GetAstCodeGenerator(t), (MIPSCodeGenerator.Expression)Rigth.GetAstCodeGenerator(t), Line);
                SetGeneratorType(eq);
                return(eq);

            case ">":
                var greater = new Lt((MIPSCodeGenerator.Expression)Rigth.GetAstCodeGenerator(t), (MIPSCodeGenerator.Expression)Left.GetAstCodeGenerator(t), Line);
                SetGeneratorType(greater);
                return(greater);

            case ">=":
                var greaterEq = new Leq((MIPSCodeGenerator.Expression)Rigth.GetAstCodeGenerator(t), (MIPSCodeGenerator.Expression)Left.GetAstCodeGenerator(t), Line);
                SetGeneratorType(greaterEq);
                return(greaterEq);

            default: throw new InvalidOperationException();
            }
        }
        /// <summary>
        /// Add a &lt;Leq>-Tag
        /// </summary>
        /// <returns><see cref="BaseCoreComparingGroupElement{T}"/></returns>
        public static T Leq <T>(this T parent, Action <Leq> action)
            where T : BaseCoreComparingGroupElement <T>
        {
            var leq = new Leq();

            action(leq);
            parent.Childs.Add(leq);
            return(parent);
        }