Exemple #1
0
        public override void Interpret()
        {
            var from = FromExp.Interpret();
            var to   = ToExp.Interpret();

            TablaSimbolos.Instance.SetVariableValue(Id.Name, from);
            while (((IntValue)from).Value <= ((IntValue)to).Value)
            {
                foreach (var statementNode in StatementList)
                {
                    statementNode.Interpret();
                }
                ((IntValue)from).Value += 1;
                TablaSimbolos.Instance.SetVariableValue(Id.Name, from);
            }
        }
Exemple #2
0
        public override void ValidSemantic()
        {
            var fromExpT = FromExp.EvaluateSemantic();
            var toExpT   = ToExp.EvaluateSemantic();

            if (!(fromExpT is IntTipo) || !(toExpT is IntTipo))
            {
                throw new SemanticException($"Expresion From y To deben ser tipo int, FromT: {fromExpT} ToT:{toExpT}");
            }
            var idT = Id.EvaluateSemantic();

            if (!(idT is IntTipo))
            {
                throw new SemanticException($"Id debe de ser de tipo Int, idT: {idT}");
            }
            foreach (var statementNode in StatementList)
            {
                statementNode.ValidSemantic();
            }
        }