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 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(); }