예제 #1
0
        private VariableExpresionNode Variable()
        {
            List <int> c;

            if (this.lookahead.token == Token.VARIABLE)
            {
                String nombreVariable = this.lookahead.sequence;

                NextToken();
                if (this.lookahead != null && this.lookahead.token == Token.ASIGNACION)
                {
                    NextToken();
                    ExpresionNode exp = Expresion();
                    c = exp.GetConjunto();
                    this.variables.Add(nombreVariable, c);
                }
                else
                {
                    c = variables[nombreVariable];
                    if (c == null)
                    {
                        throw new Exception("Variable no definida");
                    }
                }
                return(new VariableExpresionNode(c));
            }
            return(null);
        }
예제 #2
0
        private ExpresionNode Expresion()
        {
            ExpresionNode node = Conjunto();

            if (node != null)
            {
                return(node);
            }

            node = Variable();
            if (node != null)
            {
                return(node);
            }

            node = Creacion();
            if (node != null)
            {
                return(node);
            }

            node = Mostrar();
            if (node != null)
            {
                return(node);
            }

            node = Maximo();
            if (node != null)
            {
                return(node);
            }

            node = Minimo();
            if (node != null)
            {
                return(node);
            }

            node = Media();
            if (node != null)
            {
                return(node);
            }

            node = Extraer();
            if (node != null)
            {
                return(node);
            }

            return(null);
        }
예제 #3
0
        private void Parse(List <Token> tokens)
        {
            //Para hacer una copia de la lista
            this.tokens = new LinkedList <Token>();
            foreach (var item in tokens)
            {
                this.tokens.AddLast(item);
            }

            NextToken();

            while (this.lookahead != null)
            {
                ExpresionNode e = Expresion();
            }
        }