コード例 #1
0
        //Este metodo es el encargado de crear las nuevas producciones, recibe una cadena que es de
        //donde se extraeran los tokens al igual que una lista de tokens, regresa la nueva produccion
        //si es que se pudo crear.
        private Produccion nuevaprod(string cadena, CTK listokens)
        {
            Produccion prodaux = new Produccion();

            if (prodaux.crealistok(cadena, listokens) == true)
            {
                return(prodaux);
            }
            else
            {
                return(null);
            }
        }
コード例 #2
0
        public int agregar(Produccion nuevoCuadruplo)
        {
            string[] datos = new string[4];
            int      num   = listaCuadruplos.Count;

            listaCuadruplos.Add(nuevoCuadruplo);
            datos[0] = nuevoCuadruplo.LISTATOKENS[0].NOMBRE;
            datos[1] = nuevoCuadruplo.LISTATOKENS[1].NOMBRE;
            datos[2] = nuevoCuadruplo.LISTATOKENS[2].NOMBRE;
            datos[3] = nuevoCuadruplo.LISTATOKENS[3].NOMBRE;
            tablaCu.Rows.Add(datos);
            return(listaCuadruplos.Count - 1);
        }
コード例 #3
0
 public CCuadruplos(RichTextBox codigo, DataGridView tablaCu, CVariables listaVar, RichTextBox consola, Form1 comp)
 {
     this.codigo     = codigo;
     this.tablaCu    = tablaCu;
     this.listaVar   = listaVar;
     this.consola    = consola;
     this.compilador = comp;
     listaCuadruplos = new List <Produccion>();
     iterador        = 0;
     cuadruplo       = null;
     espera          = false;
     modoAnt         = 0;
     filaAux         = 0;
     fila            = 0;
 }
コード例 #4
0
 public void finREAD(string captura)
 {
     cuadruplo.LISTATOKENS[3].VALOR = captura;
     listaVar.ActualizaVariable(cuadruplo.LISTATOKENS[3].NOMBRE);
     espera = false;
     if (modoAnt == 3)
     {
         cuadruplo = null;
         codigo.Select();
     }
     else
     {
         cuadruplo = null;
         tablaCu.Select();
     }
     ejecutaCuadruplos(0);
 }
コード例 #5
0
 public void modo_3()
 {
     if (cuadruplo != null)
     {
         filaAux = fila;
         do
         {
             evaluaCuadruplo();
             if (espera == true)
             {
                 seleccionar(filaAux);
                 break;
             }
             fila = listaCuadruplos[iterador].FILA;
             if (fila == filaAux)
             {
                 cuadruplo = listaCuadruplos[iterador];
                 if (iterador < listaCuadruplos.Count)
                 {
                     iterador++;
                 }
             }
         } while (fila == filaAux);
         if (espera == false)
         {
             cuadruplo = null;
         }
     }
     if (iterador < listaCuadruplos.Count && espera == false)
     {
         cuadruplo = listaCuadruplos[iterador];
         resaltaCuadruplo();
         seleccionar(listaCuadruplos[iterador].FILA);
         fila = listaCuadruplos[iterador].FILA;
         iterador++;
         if (iterador == listaCuadruplos.Count)
         {
             MessageBox.Show("Fin de programa, el resultado es: " + listaCuadruplos[iterador - 2].LISTATOKENS[3].VALOR);
             compilador.activaBoton(0);
             fila      = 0;
             cuadruplo = null;
             filaAux   = 0;
         }
     }
 }
コード例 #6
0
        /// Este metodo compara si esta Produccion es igual a otra Produccion.
        public bool comparaprod(Produccion prec)
        {
            int aux = 0;

            if (prec.ltok.Count != ltok.Count)
            {
                return(false);
            }
            foreach (NT tk in ltok)
            {
                if (tk.nom != prec.ltok[aux].nom)
                {
                    return(false);
                }
                aux++;
            }
            return(true);
        }
コード例 #7
0
 public void Terminal()
 {
     esTerminal = true;
     primero    = null;
     siguiente  = null;
 }
コード例 #8
0
 //Este metodo inicializa los NT.
 public void NoTerminal()
 {
     esTerminal = false;
     primero    = new Produccion();
     siguiente  = new Produccion();
 }
コード例 #9
0
 public CVariables(DataGridView tablaSi)
 {
     this.tablaSi   = tablaSi;
     listaVariables = new Produccion();
     varTemp        = 1;
 }