コード例 #1
0
ファイル: Symtab.cs プロジェクト: MarieTSD/CompiladorCSharp
        public static void AñadirVariable(Nodo var)
        {
            Variable x;

            x.nombre = var.getLexema();
            x.linea  = var.getLinea();
            x.tipo   = var.getTipoDato();
            if (!BuscarVariable(var))
            {
                tabla.Add(var.getLexema(), x);
                tablaS.Add(var.getLexema() + "/" + var.getLinea() + "/" + var.getTipoDato().ToString());
            }
            else
            {
                // Console.WriteLine($"Var = {var.getLexema()} no añadida\t");
                errores.Add($"La llave {var.getLexema()} ya se encuentra en la tabla");
            }

            /* try
             * {
             *   tabla.Add(var.getLexema(), x);
             * }
             * catch
             * {
             *   errores.Add($"La llave {var.getLexema()} ya se encuentra en la tabla");
             * ;
             * }*/
        }
コード例 #2
0
ファイル: Symtab.cs プロジェクト: MarieTSD/CompiladorCSharp
        public static void ActualizarVariable(Nodo var)
        {
            Variable temp = tabla[var.getLexema()];

            temp.linea = var.getLinea();
            //temp.tipo = var.getTipoDato();
            tabla[var.getLexema()] = temp;
        }
コード例 #3
0
 private void ImprimirArbol(Nodo nodo)
 {
     if (nodo != null)
     {
         nodosArbol += $"Linea:{nodo.getLinea()}, Lexema:{nodo.getLexema()}, Token:{nodo.getTipoToken()}, Tipo:{nodo.getTipoDato()}" + Environment.NewLine;;
         ImprimirArbol(nodo.hijos[0]);
         ImprimirArbol(nodo.hijos[1]);
         ImprimirArbol(nodo.hijos[2]);
         ImprimirArbol(nodo.hermano);
     }
 }
コード例 #4
0
 private static void TypeError(Nodo n, string msg)
 {
     errores.Add($"Error de tipo en linea {n.getLinea()}: {msg}");
 }