Ejemplo n.º 1
0
        ///////////////////////////////////////////////////////////////////////////////////////////

        #region Metodo_SetInfo
        public void SetInfo(Nimbus_DAL objTmp)
        {
            try
            {
                dataGridView1.Rows.Add(objTmp.CODIGO, objTmp.SIMBOLO, objTmp.TIPO_TOKEN, objTmp.AMBITO);
            }
            catch (Exception)
            {
                MessageBox.Show("Error en Token");
            }
        }
Ejemplo n.º 2
0
 public Nimbus_DAL FOLLOWING()
 {
     if (objTmp.SIGUIENTE == null)
     {
         return(objTmp);
     }
     else
     {
         objTmp = objTmp.SIGUIENTE;
         return(objTmp);
     }
 }
Ejemplo n.º 3
0
 public Nimbus_DAL PREVIOUS()
 {
     if (objTmp.ANTERIOR == null)
     {
         return(objTmp);
     }
     else
     {
         objTmp = objTmp.ANTERIOR;
         return(objTmp);
     }
 }
Ejemplo n.º 4
0
 public void SetInfoError(Nimbus_DAL objTmp, string Error, int lineapalabra)
 {
     try
     {
         string error = "Error Lexico - Id del Token: " + objTmp.CODIGO + "- Token: " + objTmp.SIMBOLO + "- Ambito: " + objTmp.AMBITO
                        + "- Error: " + Error + "- Posición: " + lineapalabra;
         dataGridView2.Rows.Add(error);
     }
     catch (Exception)
     {
         MessageBox.Show("Error en Token");
     }
 }
Ejemplo n.º 5
0
 public void MODIFICAR(Nimbus_DAL TOKEN)
 {
     objTmp = objInitial;
     do
     {
         if (objTmp.SIMBOLO.Equals(TOKEN.SIMBOLO))
         {
             objTmp.AMBITO = TOKEN.AMBITO;
             break;
         }
         objTmp = objTmp.SIGUIENTE;
     } while (objTmp != objInitial);
 }
Ejemplo n.º 6
0
        public Nimbus_DAL FILL(string Codigo, string Simbolo, string Tipo_Token, int Ambito,
                               Nimbus_DAL Anterior, Nimbus_DAL Siguiente)
        {
            Nimbus_DAL dTemp = new Nimbus_DAL();

            dTemp.CODIGO     = Codigo;
            dTemp.SIMBOLO    = Simbolo;
            dTemp.TIPO_TOKEN = Tipo_Token;
            dTemp.AMBITO     = Ambito;
            dTemp.ANTERIOR   = Anterior;
            dTemp.SIGUIENTE  = Siguiente;
            return(dTemp);
        }
Ejemplo n.º 7
0
 public void SAVE(string Codigo, string Simbolo, string Tipo_Token, int Ambito)
 {
     if (objInitial == null)
     {
         objInitial = FILL(Codigo, Simbolo, Tipo_Token, Ambito, null, null);
         objQueue   = objInitial;
         objTmp     = objInitial;
     }
     else
     {
         objQueue.SIGUIENTE  = FILL(Codigo, Simbolo, Tipo_Token, Ambito, objQueue, objInitial);
         objQueue            = objQueue.SIGUIENTE;
         objInitial.ANTERIOR = objQueue;
     }
 }
Ejemplo n.º 8
0
        public Nimbus_DAL SEARCH_TOKEN(Nimbus_DAL TOKEN)
        {
            objTmp = objInitial;
            Nimbus_DAL dTemp = new Nimbus_DAL();

            do
            {
                if (objTmp.SIMBOLO.Equals(TOKEN.SIMBOLO))
                {
                    dTemp = objTmp;
                }
                objTmp = objTmp.SIGUIENTE;
            } while (objTmp != objInitial);
            return(dTemp);
        }
Ejemplo n.º 9
0
 public void DELETE_LIST()
 {
     objInitial = null;
     objQueue   = null;
     objTmp     = null;
     //if (objInitial == objQueue && ext.SIMBOLO.Equals(objInitial.SIMBOLO))
     //{
     //    objInitial = null;
     //    objQueue = null;
     //}
     //else if (ext.SIMBOLO.Equals(objInitial.SIMBOLO))
     //{
     //    Nimbus_DAL tmpanterior = new Nimbus_DAL();
     //    tmpanterior = objTmp.ANTERIOR;
     //    objTmp = objTmp.SIGUIENTE;
     //    objInitial = objTmp;
     //    objTmp.ANTERIOR = tmpanterior;
     //    tmpanterior.SIGUIENTE = objTmp;
     //}
     //else if (ext.SIMBOLO.Equals(objQueue.SIMBOLO))
     //{
     //    Nimbus_DAL tmpanterior = new Nimbus_DAL();
     //    tmpanterior = objQueue.ANTERIOR;
     //    objTmp = objQueue.SIGUIENTE;
     //    objQueue = tmpanterior;
     //    objTmp.ANTERIOR = tmpanterior;
     //    tmpanterior.SIGUIENTE = objTmp;
     //}
     //else
     //{
     //    Nimbus_DAL tmpanterior = new Nimbus_DAL();
     //    objTmp = objInitial;
     //    while (objTmp.SIGUIENTE != objQueue)
     //    {
     //        if (ext.Equals(objTmp))
     //        {
     //            tmpanterior = objTmp.ANTERIOR;
     //            objTmp = objTmp.SIGUIENTE;
     //            objTmp.ANTERIOR = tmpanterior;
     //            tmpanterior.SIGUIENTE = objTmp;
     //        }
     //        else
     //        {
     //            objTmp = objTmp.SIGUIENTE;
     //        }
     //    }
     //}
 }
Ejemplo n.º 10
0
        public void LoadData()
        {
            contador = 1;
            Nimbus_DAL objTmp = new Nimbus_DAL();

            try
            {
                //OpenFileDialog ofd = new OpenFileDialog();
                //ofd.Title = "csv";
                //ofd.ShowDialog();
                //if (File.Exists(ofd.FileName))
                //{
                //    string[] Lines = File.ReadAllLines(ofd.FileName);
                //    foreach (var line in Lines)
                //    {
                //        var values = line.Split(',');
                //        objTmp.CODIGO = values[0];
                //        objTmp.SIMBOLO = values[1];
                //        objTmp.TIPO_TOKEN = values[2];
                //        obj_Bll.SAVE(objTmp.CODIGO, objTmp.SIMBOLO, objTmp.TIPO_TOKEN);
                //        contador++;
                //    }
                //}
                //ofd.Dispose();
                //MessageBox.Show("Lenguaje cargado.");
                /////////////////////////////////////////////////////////////////////////////////////////
                string[] Lines = File.ReadAllLines("C:\\Users\\dmx369zhw\\Documents\\GitHub\\Modelo_Programacion_Sistemas\\Tabla_Simbolos\\Tabla_Simbolos.csv");
                foreach (var line in Lines)
                {
                    var values = line.Split(',');
                    objTmp.CODIGO     = values[0];
                    objTmp.SIMBOLO    = values[1];
                    objTmp.TIPO_TOKEN = values[2];
                    objTmp.AMBITO     = Convert.ToInt32(values[3]);
                    obj_Bll.SAVE(objTmp.CODIGO, objTmp.SIMBOLO, objTmp.TIPO_TOKEN, objTmp.AMBITO);
                    contador = contador + 1;
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error en carga el Lenguaje");
                LoadData();
            }
        }
Ejemplo n.º 11
0
        ///////////////////////////////////////////////////////////////////////////////////////////

        #region Cogigo_Intermedio
        public void Codigo_intermedio()
        {
            //LoadData();
            try
            {
                Semantica_DAL objSemantica_dal  = new Semantica_DAL();
                Semantica_DAL objSeamntica2_dal = new Semantica_DAL();
                Nimbus_DAL    obj_Dal           = new Nimbus_DAL();
                Nimbus_DAL    obj_temp          = new Nimbus_DAL();

                char[]   delimitador1 = { '\udddd', '\xA' };
                char[]   delimitador = { ' ', '\n' }; //  \udddd \xA
                string   Frase = Panel_Codigo.Text;
                string[] Palabras = Frase.Split(delimitador1);
                string   mensaje = "dd", cabecera = "jj", pie = "df", fin = "tg";
                Boolean  b_Suma = false, b_Resta = false, b_Multi = false, b_Div = false;

                if (!Directory.Exists(@"C:\Nimbus\Cod_Intermedio"))
                {
                    Directory.CreateDirectory(@"C:\Nimbus\Cod_Intermedio");
                }
                StreamWriter Cod_Intermedio = File.AppendText(@"C:\Nimbus\Cod_Intermedio\Cod_Intermedio.asm");
                #region Cabecera
                cabecera = "include \'emu8086.inc\'\r\n"
                           + "org 100h \r\n"
                           + ".data \r\n\n"
                           + "define_print_string \r\n"
                           + "define_print_num \r\n"
                           + "define_print_num_uns \r\n"
                           + "sum db 3 dup (?) \r\n"
                           + "rest db 3 dup (?) \r\n"
                           + "mult db 3 dup (?) \r\n"
                           + "divi db 3 dup (?) \r\n\n"
                           + ".code \r\n";
                Cod_Intermedio.WriteLine(cabecera);
                #endregion
                foreach (var palabra in Palabras)
                {
                    //MessageBox.Show(palabra);
                    string[] valores = palabra.Trim().Split(' ');

                    if (PatronSemantico.Validad_Variables(palabra))
                    {
                        #region Seccion_Suma
                        if (palabra.Contains("sum"))
                        {
                            b_Suma = true;
                            int i = 0;
                            foreach (var valor in valores)
                            {
                                objSemantica_dal.NOMBRE = valor.Trim();
                                objSeamntica2_dal       = obj_Sema_bll.SEARCH_NOMBRE(objSemantica_dal);
                                if (!(objSeamntica2_dal.NOMBRE == null))
                                {
                                    mensaje = "mov sum[" + i + "]," + objSeamntica2_dal.VALOR;
                                    i++;
                                    //MessageBox.Show(mensaje);
                                    Cod_Intermedio.WriteLine(mensaje);
                                }
                            }
                        }
                        #endregion

                        #region Seccion_Resta
                        if (palabra.Contains("res"))
                        {
                            b_Resta = true;
                            int i = 0;
                            foreach (var valor in valores)
                            {
                                objSemantica_dal.NOMBRE = valor.Trim();
                                objSeamntica2_dal       = obj_Sema_bll.SEARCH_NOMBRE(objSemantica_dal);
                                if (!(objSeamntica2_dal.NOMBRE == null))
                                {
                                    mensaje = "mov rest[" + i + "]," + objSeamntica2_dal.VALOR;
                                    i++;
                                    //MessageBox.Show(mensaje);
                                    Cod_Intermedio.WriteLine(mensaje);
                                }
                            }
                        }
                        #endregion

                        #region Seccion_Multiplicacion
                        if (palabra.Contains("mult"))
                        {
                            b_Multi = true;
                            int i = 0;
                            foreach (var valor in valores)
                            {
                                objSemantica_dal.NOMBRE = valor.Trim();
                                objSeamntica2_dal       = obj_Sema_bll.SEARCH_NOMBRE(objSemantica_dal);
                                if (!(objSeamntica2_dal.NOMBRE == null))
                                {
                                    mensaje = "mov mult[" + i + "]," + objSeamntica2_dal.VALOR;
                                    i++;
                                    //MessageBox.Show(mensaje);
                                    Cod_Intermedio.WriteLine(mensaje);
                                }
                            }
                        }
                        #endregion

                        #region Seccion_Division
                        if (palabra.Contains("div"))
                        {
                            b_Div = true;
                            int i = 0;
                            foreach (var valor in valores)
                            {
                                objSemantica_dal.NOMBRE = valor.Trim();
                                objSeamntica2_dal       = obj_Sema_bll.SEARCH_NOMBRE(objSemantica_dal);
                                if (!(objSeamntica2_dal.NOMBRE == null))
                                {
                                    mensaje = "mov divi[" + i + "]," + objSeamntica2_dal.VALOR;
                                    i++;
                                    //MessageBox.Show(mensaje);
                                    Cod_Intermedio.WriteLine(mensaje);
                                }
                            }
                        }
                        #endregion
                    }
                }

                #region Pie
                if (b_Suma)
                {
                    pie = "\r\nSumas proc\r\n"
                          + "printn \" \"\r\n"
                          + "xor ax,ax \r\n"
                          + "add al, sum[1] \r\n"
                          + "add al, sum[2] \r\n"
                          + "mov sum[0],al \r\n"
                          + "print \"La suma es: \" \r\n"
                          + "call print_num \r\n"
                          + "Sumas endp \r\n";
                    Cod_Intermedio.WriteLine(pie);
                }
                if (b_Resta)
                {
                    pie = "\r\nRestas proc\r\n"
                          + "printn \" \"\r\n"
                          + "xor ax,ax \r\n"
                          + "add al, rest[1] \r\n"
                          + "sub al, rest[2] \r\n"
                          + "mov rest[0],al \r\n"
                          + "print \"La resta es: \" \r\n"
                          + "call print_num \r\n"
                          + "Restas endp \r\n";
                    Cod_Intermedio.WriteLine(pie);
                }

                if (b_Multi)
                {
                    pie = "\r\nMultiplicaciones proc\r\n"
                          + "printn \" \"\r\n"
                          + "xor ax,ax \r\n"
                          + "add al, mult[1] \r\n"
                          + "mul mult[2] \r\n"
                          + "mov mult[0],al \r\n"
                          + "print \"La multiplicacion es: \" \r\n"
                          + "call print_num \r\n"
                          + "Multiplicaciones endp \r\n";
                    Cod_Intermedio.WriteLine(pie);
                }

                if (b_Div)
                {
                    pie = "\r\nDivisiones proc\r\n"
                          + "printn \" \"\r\n"
                          + "xor ax,ax \r\n"
                          + "add al, divi[1] \r\n"
                          + "div divi[2] \r\n"
                          + "mov divi[0],al \r\n"
                          + "print \"La division es: \" \r\n"
                          + "call print_num \r\n"
                          + "Divisiones endp \r\n";
                    Cod_Intermedio.WriteLine(pie);
                }
                #endregion

                #region Fin
                fin = "\r\nexit:\r\n"
                      + "mov ah,0 \r\n"
                      + "int 16h \r\n\n"
                      + "ret \r\n"
                      + "end \r\n";
                Cod_Intermedio.WriteLine(fin);
                #endregion
                Cod_Intermedio.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error en: " + ex);
            }
        }
Ejemplo n.º 12
0
        public void Analizar_Valores()
        {
            //LoadData();
            Semantica_DAL objSemantica_dal  = new Semantica_DAL();
            Semantica_DAL objSeamntica2_dal = new Semantica_DAL();
            Nimbus_DAL    obj_Dal           = new Nimbus_DAL();
            Nimbus_DAL    obj_temp          = new Nimbus_DAL();

            char[] delimitador1 = { '\udddd', '\xA' };
            char[] delimitador  = { ' ', '\n' }; //  \udddd \xA
            string Frase        = Panel_Codigo.Text;

            string[] Palabras    = Frase.Split(delimitador1);
            string   auxsema     = "dd";
            string   auxnimbus   = "dd";
            bool     compatibleN = false;
            bool     compatibleC = false;

            foreach (var palabra in Palabras)
            {
                //MessageBox.Show(palabra);
                string[] valores = palabra.Trim().Split(' ');

                if (PatronSemantico.Validad_Variables(palabra))
                {
                    foreach (var valor in valores)
                    {
                        //MessageBox.Show(valor);
                        obj_Dal.SIMBOLO = valor.Trim();
                        auxnimbus       = valor.Trim();

                        obj_temp  = obj_Bll.SEARCH_TOKEN(obj_Dal);
                        auxnimbus = obj_temp.SIMBOLO;

                        if (!(obj_temp.TIPO_TOKEN.Equals("Signo_de_Puntuacion") || obj_temp.TIPO_TOKEN.Equals("Constante") ||
                              obj_temp.TIPO_TOKEN.Equals("Concatenacion") || obj_temp.TIPO_TOKEN.Equals("Asignacion") ||
                              obj_temp.TIPO_TOKEN.Equals("Encapsulamiento") || obj_temp.TIPO_TOKEN.Equals("Palabra_Reservada") ||
                              obj_temp.TIPO_TOKEN.Equals("Funcion_Imprimir") || obj_temp.TIPO_TOKEN.Equals("Funcion_Capturar") ||
                              obj_temp.TIPO_TOKEN.Equals("Operador_Matematico") || obj_temp.TIPO_TOKEN.Equals("Expresion_Booleana") ||
                              obj_temp.TIPO_TOKEN.Equals("Operador_Logico") || obj_temp.TIPO_TOKEN.Equals("Condicional") ||
                              obj_temp.TIPO_TOKEN.Equals("Ciclo") || obj_temp.TIPO_TOKEN.Equals("Declarador_de_Funcion") ||
                              obj_temp.TIPO_TOKEN.Equals("Retorno_Funcion") || obj_temp.TIPO_TOKEN.Equals("Declarador_de_Procedimiento") ||
                              obj_temp.TIPO_TOKEN.Equals("Delimitador_de_Sentencia") || obj_temp.TIPO_TOKEN.Equals("Digito_Entero") ||
                              obj_temp.TIPO_TOKEN.Equals("Digito_Flotante") || obj_temp.TIPO_TOKEN.Equals("Caracter")))
                        {
                            objSemantica_dal.NOMBRE = obj_temp.SIMBOLO;
                            objSeamntica2_dal       = obj_Sema_bll.SEARCH_NOMBRE(objSemantica_dal);
                            auxsema = objSeamntica2_dal.NOMBRE;

                            if (auxsema != auxnimbus)
                            {
                                //MessageBox.Show("Variable " + auxnimbus + " no definida");
                                string error = "Error Semantico - Definición: " + auxnimbus + " - Error variable no definida - Posición: " + (lineapalabra - 1);
                                dataGridView2.Rows.Add(error);
                            }
                            else
                            {
                                List <Semantica_DAL> lista = new List <Semantica_DAL>();
                                Semantica_DAL        objSemantica_dal_temp = new Semantica_DAL();
                                objSemantica_dal_temp.NOMBRE = auxsema;
                                objSemantica_dal_temp        = obj_Sema_bll.SEARCH_NOMBRE(objSemantica_dal_temp);
                                lista.Add(objSemantica_dal_temp);

                                foreach (var objeto in lista)
                                {
                                    if (objeto.TIPO.Equals("flo") || objeto.TIPO.Equals("en"))
                                    {
                                        compatibleN = true;
                                    }
                                    if (objeto.TIPO.Equals("ca"))
                                    {
                                        compatibleC = true;
                                    }
                                }
                            }
                            if (compatibleN == true && compatibleC == true)
                            {
                                string error = "Error Semantico - Error de tipos en variables - Posición: " + (lineapalabra - 1);
                                dataGridView2.Rows.Add(error);
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 13
0
        ///////////////////////////////////////////////////////////////////////////////////////////

        #region Analisis_Lexico
        public void Lexico()
        {
            Ambito = 0; llave = 0; llaveC = 0;
            LoadData();

            Nimbus_DAL obj_Dal = new Nimbus_DAL();
            Nimbus_DAL obj_temp = new Nimbus_DAL();
            string     Simbol = "hh", Token = "jj";

            char[] delimitador  = { ' ', '\n' }; //   \udddd \xA
            char[] delimitador2 = { '\udddd', '\xA' };

            string Frase = Panel_Codigo.Text;

            string[] Oraciones = Frase.Split(delimitador2);

            foreach (var oracion in Oraciones)
            {
                #region error_Line
                try
                {
                    int linha, palavra;
                    linha        = Panel_Codigo.Find(oracion);
                    palavra      = Panel_Codigo.GetLineFromCharIndex(linha);
                    lineapalabra = palavra + 1;
                }
                catch (Exception)
                {
                    string error = "EL DOCUMENTO NO DEBE TENER SALTOS EN BLANCO";
                    SetInfoError(obj_Bll.SEARCH_TOKEN(obj_Dal), error, lineapalabra);
                }
                #endregion

                string ora = oracion;
                //MessageBox.Show(ora);

                string[] Palabras = ora.Split(delimitador);

                foreach (var palabra in Palabras)
                {
                    obj_Dal.SIMBOLO = palabra.Trim();
                    Token           = palabra.Trim();

                    obj_temp = obj_Bll.SEARCH_TOKEN(obj_Dal);
                    Simbol   = obj_temp.SIMBOLO;

                    #region Control de Ambito Apertura
                    if (Token.Equals("["))
                    {
                        llave  = llave + 1;
                        Ambito = llave;
                        //Ambito = Ambito + 1;
                    }
                    #endregion

                    if (Simbol == string.Empty || Simbol == null)
                    {
                        if (Token != string.Empty || Token != null)
                        {
                            bool   vacio  = true;
                            char[] letras = Token.ToCharArray();

                            foreach (var letra in letras)
                            {
                                if (!letra.Equals(" "))
                                {
                                    if (char.IsNumber(letra))
                                    {
                                        if (ValidaEntero(Token))
                                        {
                                            obj_Dal.TIPO_TOKEN = "Digito_Entero";
                                        }
                                        else
                                        {
                                            obj_Dal.TIPO_TOKEN = "Digito_Flotante";
                                        }
                                    }
                                    else if (char.IsPunctuation(letra))
                                    {
                                        obj_Dal.TIPO_TOKEN = "Caracter";
                                    }
                                    else
                                    {
                                        obj_Dal.TIPO_TOKEN = "Definicion_del_Usuario";
                                    }
                                    vacio = false;
                                }
                            }
                            if (vacio == false)
                            {
                                obj_Dal.CODIGO  = Convert.ToString(contador);
                                obj_Dal.SIMBOLO = Token;
                                obj_Dal.AMBITO  = Ambito;
                                obj_Bll.SAVE(obj_Dal.CODIGO, obj_Dal.SIMBOLO, obj_Dal.TIPO_TOKEN, obj_Dal.AMBITO);
                                SetInfo(obj_Bll.SEARCH_TOKEN(obj_Dal));
                                contador = contador + 1;
                            }
                        }
                    }
                    else
                    {
                        if (obj_temp.TIPO_TOKEN.Equals("Inicio_de_Programa") || obj_temp.TIPO_TOKEN.Equals("Funcion_Principal") ||
                            obj_temp.TIPO_TOKEN.Equals("Apertura_Ambito") || obj_temp.TIPO_TOKEN.Equals("Cierre_Ambito") ||
                            obj_temp.TIPO_TOKEN.Equals("Signo_de_Puntuacion") || obj_temp.TIPO_TOKEN.Equals("Constante") ||
                            obj_temp.TIPO_TOKEN.Equals("Concatenacion") || obj_temp.TIPO_TOKEN.Equals("Asignacion") ||
                            obj_temp.TIPO_TOKEN.Equals("Encapsulamiento") || obj_temp.TIPO_TOKEN.Equals("Palabra_Reservada") ||
                            obj_temp.TIPO_TOKEN.Equals("Funcion_Imprimir") || obj_temp.TIPO_TOKEN.Equals("Funcion_Capturar") ||
                            obj_temp.TIPO_TOKEN.Equals("Operador_Matematico") || obj_temp.TIPO_TOKEN.Equals("Expresion_Booleana") ||
                            obj_temp.TIPO_TOKEN.Equals("Operador_Logico") || obj_temp.TIPO_TOKEN.Equals("Condicional") ||
                            obj_temp.TIPO_TOKEN.Equals("Ciclo") || obj_temp.TIPO_TOKEN.Equals("Declarador_de_Funcion") ||
                            obj_temp.TIPO_TOKEN.Equals("Retorno_Funcion") || obj_temp.TIPO_TOKEN.Equals("Declarador_de_Procedimiento") ||
                            obj_temp.TIPO_TOKEN.Equals("Delimitador_de_Sentencia") || obj_temp.TIPO_TOKEN.Equals("Digito_Entero") ||
                            obj_temp.TIPO_TOKEN.Equals("Digito_Flotante") || obj_temp.TIPO_TOKEN.Equals("Caracter"))
                        {
                            obj_temp.AMBITO = Ambito;
                            obj_Bll.MODIFICAR(obj_temp);
                            SetInfo(obj_Bll.SEARCH_TOKEN(obj_Dal));
                        }
                        else
                        {
                            if (obj_temp.AMBITO == Ambito)
                            {
                                string error = "Variable ya fue declarada";
                                SetInfoError(obj_Bll.SEARCH_TOKEN(obj_Dal), error, lineapalabra);
                            }
                            else
                            {
                                obj_temp.AMBITO = Ambito;
                                obj_Bll.MODIFICAR(obj_temp);
                                SetInfo(obj_Bll.SEARCH_TOKEN(obj_Dal));
                            }
                        }
                    }
                    #region Control de Ambito Cierre
                    if (Token.Equals("]"))
                    {
                        llaveC = llaveC + 1;
                        Ambito = Ambito - llaveC;
                        if (Ambito < 0)
                        {
                            Ambito = 1;
                        }
                        //Ambito = Ambito - 1;
                    }
                    #endregion
                }
            }
            if (llaveC != llave)
            {
                string error = "- Fata cierre o apertura de Ambito -";
                SetInfoError(obj_Bll.SEARCH_TOKEN(obj_Dal), error, lineapalabra);
            }
            //obj_Bll.DELETE_LIST();
        }