Пример #1
0
 public void Agregar(Token tk)
 {
     items.Add(tk);
 }
Пример #2
0
        public void Escanear(string ruta)
        {
            estadoActual = 0;
            mt = new MatrizDeTransicion();
            mt.LeerDesdeArchivo("tablaDeTransicionCsharp.csv");
            Movimientos m = new Movimientos();
            estadosFinales = new Tokens();
            estadosFinales.LeerDesdeArchivo("tokens.txt");
            tokensReconocidos = new Tokens();
            pr.LeerDesdeArchivo("palabrasReservadas.txt");

            //Buscar el numero de token de identificadores y palabra reservada
            Token tid = estadosFinales.DameToken("id");
            nroTokenIdentificadores = tid.Numero;
            tid = estadosFinales.DameToken("pr");
            nroTokenPalabraReservada = tid.Numero;

            //Leer el archivo caracter por caracter
            FileStream stream = new FileStream (ruta, FileMode.Open, FileAccess.Read);
            StreamReader archivo = new StreamReader (stream);

            char caracter = ' ';
            int estadoSig;
            string palabra = "";
            bool leerDeArchivo = true;
            while (archivo.Peek () > -1) {
                if(leerDeArchivo){
                    caracter = (char)archivo.Read();
                }
                else{
                    leerDeArchivo = true;
                    palabra = "";
                }

                estadoSig = mt.Mover(estadoActual,caracter);
                //Console.WriteLine(m.Agregar(estadoActual,caracter,estadoSig));
                m.Agregar(estadoActual,caracter,estadoSig);
                estadoActual = estadoSig;
                if(estadosFinales.Contiene(estadoSig)){ //Reconocio el token
                    estadoActual = 0;
                    Token tk = new Token();
                    tk.Numero = estadoSig;
                    tk.Lexema = palabra;
                    if(estadoSig == nroTokenIdentificadores){
                        if(pr.EsPalabraReservada(palabra)){
                            estadoSig = nroTokenPalabraReservada;
                        }
                    }
                    //Detalles de un token
                    Token tkD = estadosFinales.DameToken(estadoSig);
                    if(tkD != null){
                        tk.Nombre = tkD.Nombre;
                        tk.Sinonimo = tkD.Sinonimo;
                    }
                    //Fin Detalles del token
                    palabra = "";
                    leerDeArchivo = false;
                    tokensReconocidos.Agregar(tk);
                }
                palabra += caracter.ToString();
            }
            archivo.Close ();

            //m.Imprimir();
            tokensReconocidos.Imprimir();
        }
Пример #3
0
        public void LeerDesdeArchivo(string ruta)
        {
            FileStream stream = new FileStream (ruta, FileMode.Open, FileAccess.Read);
            StreamReader reader = new StreamReader (stream);

            Token tk;
            items.Clear();
            while (reader.Peek () > -1) {
                tk = new Token();
                string[] fila = reader.ReadLine().Split(new char[]{'\t'});
                tk.Numero = int.Parse(fila[0]);
                tk.Nombre = fila[1];
                tk.Sinonimo = fila[2];
                items.Add (tk);
            }
            reader.Close ();
        }