private Expresion AnalizarPotencias(Token tipoDeDato)
        {
            var izquierda = AnalizarExpresionAritmeticaPrimaria(tipoDeDato);

            while (TokenActual.Tipo == TipoSintaxis.TokenPotencia)
            {
                var operatorToken = SiguienteToken();
                var derecha       = AnalizarExpresionAritmeticaPrimaria(tipoDeDato);
                izquierda = new ExpresionBinaria(izquierda, operatorToken, derecha);
            }

            return(izquierda);
        }
        private Expresion AnalizarExpresionString()
        {
            var izquierda = AnalizarExpresionStringPrimaria();

            while (TokenActual.Tipo == TipoSintaxis.TokenMas)
            {
                var operador = SiguienteToken();
                var derecha  = AnalizarExpresionStringPrimaria();
                izquierda = new ExpresionBinaria(izquierda, operador, derecha);
            }

            return(izquierda);
        }
        private Expresion AnalizarTerminos(Token tipoDeDato)
        {
            var izquierda = AnalizarFactores(tipoDeDato);

            while (TokenActual.Tipo == TipoSintaxis.TokenMas ||
                   TokenActual.Tipo == TipoSintaxis.TokenMenos)
            {
                var operador = SiguienteToken();
                var derecha  = AnalizarFactores(tipoDeDato);
                izquierda = new ExpresionBinaria(izquierda, operador, derecha);
            }

            return(izquierda);
        }
        private Expresion AnalizarFactores(Token tipoDeDato)
        {
            var izquierda = AnalizarPotencias(tipoDeDato);

            while (TokenActual.Tipo == TipoSintaxis.TokenMultiplicacion ||
                   TokenActual.Tipo == TipoSintaxis.TokenDivision ||
                   TokenActual.Tipo == TipoSintaxis.TokenModulo)
            {
                var operador = SiguienteToken();
                var right    = AnalizarPotencias(tipoDeDato);
                izquierda = new ExpresionBinaria(izquierda, operador, right);
            }

            return(izquierda);
        }