Пример #1
0
        //INSTRUCCION
        public Instruction_Trad INSTRUCCION(ParseTreeNode actual, int cant_tabs)
        {
            if (actual.Term.ToString().Equals("WRITE"))
            {
                var writeAST = (new WriteTraduccion()).getWrite(actual, cant_tabs);
                return(writeAST);
            }
            else if (actual.Term.ToString().Equals("IF-THEN"))
            {
                IFTraduccion iF_AST = new IFTraduccion();
                If_Trad      _ifs   = iF_AST.IFTHEN(actual, cant_tabs);
                return(_ifs);
            }
            else if (actual.Term.ToString().Equals("WHILE"))
            {
                While_Trad _while = (new WhileTraduccion()).WHILE(actual, cant_tabs);
                return(_while);
            }
            else if (actual.Term.ToString().Equals("VAR_ASSIGNATE"))
            {
                Assignation_Trad _assignation = (new AssignationTraduction()).VAR_ASSIGNATE(actual, cant_tabs);
                return(_assignation);
            }
            else if (actual.Term.ToString().Equals("REPEAT_UNTIL"))
            {
                Repeat_Trad _repeat = (new RepeatTraduction()).REPEAT_UNTIL(actual, cant_tabs);
                return(_repeat);
            }
            else if (actual.Term.ToString().Equals("FOR"))
            {
                For_Trad _for = ((new ForTraduccion())).SENCECIA_FOR(actual, cant_tabs);
                return(_for);
            }
            else if (actual.Term.ToString().Equals("SENTENCE_CASE"))
            {
                Switch_Trad _SW = (new CaseTraduccion()).SENTENCE_CASE(actual, cant_tabs);
                return(_SW);
            }
            else if (actual.Term.ToString().Equals("CONTINUE"))
            {
                return(new Continue_Trad(cant_tabs));
            }
            else if (actual.Term.ToString().Equals("BREAK"))
            {
                return(new Break_Trad(cant_tabs));
            }
            else if (actual.Term.ToString().Equals("CALL"))
            {
                return((new CallTraduccion()).CALL(actual, cant_tabs));
            }
            else if (actual.Term.ToString().Equals("EXIT"))
            {
                return((new ExitTraduccion()).getExit(actual.ChildNodes[2], cant_tabs));
            }

            return(null);
        }
Пример #2
0
        public If_Trad IFTHEN(ParseTreeNode actual, int cant_tabs)
        {
            /*
             * IFTHEN.Rule
             *  = RESERV_IF + EXPRESION
             + RESERV_THEN
             + IF_SENTENCE
             + ELIF;
             */
            If_Trad ifs = new If_Trad();
            ExpressionTraduccion expressionAST = new ExpressionTraduccion();

            var LOGIC_EXPRESION = expressionAST.getExpresion(actual.ChildNodes[1]);
            var SENTENCES       = IF_SENTENCE(actual.ChildNodes[3], cant_tabs + 1);
            var ELSE            = ELIF(actual.ChildNodes[4], cant_tabs + 1);


            return(new If_Trad(LOGIC_EXPRESION, SENTENCES, ELSE, cant_tabs));
        }