예제 #1
0
 public ParamFormal(SimboloAbstracto tipo, SimboloAbstracto id, bool esDireccion, int linea, int columna)
     : base(linea, columna)
 {
     this.tipo = tipo;
     this.id = id;
     this.esDireccion = esDireccion;
 }
예제 #2
0
 public void agregarId(SimboloAbstracto id, Object info)
 {
     if (tbl.IsEmpty()) {
         Utilidades.fatalError("agregarId: no se puede agregar id sin un ámbito.");
     }
     tbl.Peek()[id] = info;
 }
예제 #3
0
 public FuncionDef(SimboloAbstracto nombre, ListaParamFormal parametros, int linea, int columna, Action<Emit.ILGenerator, ListaParametros> cuerpoDelMetodo)
     : base(linea, columna)
 {
     this.nombre = nombre;
     this.parametros = parametros;
     this.cuerpoDelMetodo = cuerpoDelMetodo;
 }
예제 #4
0
 public void agregarId(SimboloAbstracto id, Object info)
 {
     if (tbl.IsEmpty())
     {
         Utilidades.fatalError("agregarId: no se puede agregar id sin un ámbito.");
     }
     tbl.Peek()[id] = info;
 }
예제 #5
0
        public Object buscarAmbitoActual(SimboloAbstracto sym)
        {
            if (tbl.IsEmpty()) {
                Utilidades.fatalError("explorar: no existen ámbitos en la tabla.");
            }
            if(tbl.Peek().ContainsKey(sym))
                return tbl.Peek()[sym];

            return null;
        }
예제 #6
0
        public Object buscar(SimboloAbstracto sym)
        {
            if (tbl.IsEmpty()) {
                Utilidades.fatalError("buscar: no existen ámbitos en la tabla.");
            }

            for (int i = tbl.Count - 1; i >= 0; i--) {
                if(tbl[i].ContainsKey(sym)){
                    return tbl[i][sym];
                }
            }
            return null;
        }
예제 #7
0
        public Object buscarAmbitoActual(SimboloAbstracto sym)
        {
            if (tbl.IsEmpty())
            {
                Utilidades.fatalError("explorar: no existen ámbitos en la tabla.");
            }
            if (tbl.Peek().ContainsKey(sym))
            {
                return(tbl.Peek()[sym]);
            }

            return(null);
        }
예제 #8
0
        public Object buscar(SimboloAbstracto sym)
        {
            if (tbl.IsEmpty())
            {
                Utilidades.fatalError("buscar: no existen ámbitos en la tabla.");
            }

            for (int i = tbl.Count - 1; i >= 0; i--)
            {
                if (tbl[i].ContainsKey(sym))
                {
                    return(tbl[i][sym]);
                }
            }
            return(null);
        }
예제 #9
0
        public SimboloAbstracto agregarSimbolo(String texto, int tam, int linea, int columna)
        {
            SimboloAbstracto sym = null;

            texto = (texto.Length <= TAM_MAX_SYMB) ? texto : texto.Substring(0, TAM_MAX_SYMB);

            if (!tabla.ContainsKey(texto))
            {
                sym = getNuevoSimbolo(texto, idx++, linea, columna);
                tabla.Add(texto, sym);
            }
            else
            {
                sym         = (SimboloAbstracto)tabla[texto].clone();
                sym.Linea   = linea;
                sym.Columna = columna;
            }

            return(sym);
        }
예제 #10
0
파일: NodoArbol.cs 프로젝트: xiul/TinySharp
 protected void dump_SimboloAbstracto(System.IO.TextWriter cout, int n, SimboloAbstracto sym)
 {
     cout.Write(Utilidades.pad(n));
     cout.WriteLine(sym.Texto);
 }
예제 #11
0
파일: Expresion.cs 프로젝트: xiul/TinySharp
 public Expresion(int linea, int columna)
     : base(linea, columna)
 {
     tipo_expr = null;
 }
예제 #12
0
파일: Variable.cs 프로젝트: xiul/TinySharp
 public Variable(SimboloAbstracto variable, int linea, int columna)
     : base(linea, columna)
 {
     this.nombre = variable;
 }
예제 #13
0
 public void setNombreArchivo(string nombre)
 {
     nombreArchivo = TablaAbstracta.texTabla.agregarSimbolo(nombre, getLinea(), getColumna());
 }
예제 #14
0
 public LLamadaFuncion(SimboloAbstracto id, ListaParametros lparams, int linea, int columna)
     : base(linea, columna)
 {
     this.id = id;
     this.lparams = lparams;
 }
예제 #15
0
 public NumeroEntero(SimboloAbstracto token, int linea, int columna)
     : base(linea, columna)
 {
     this.token = token;
 }