public void Agregar(Token tk) { items.Add(tk); }
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(); }
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 (); }