public CrearTablas(String[] palabras, int[] lineas, String[] constantes, String[] identificadores, int[] nConstantes, int[] lIdentificadores) { this.tablaC = new TablaConstante(constantes, nConstantes); this.tablaI = new TablaIdentificador(identificadores, lIdentificadores); this.tablaL = new TablaLexica(palabras, lineas, tablaI, tablaC); }
private Identificador darIdentificador(String palabra, TablaIdentificador ti) { for (int x = 0; x < ti.palabras.Length; x++) { if (ti != null && ti.palabras[x] != null && ti.palabras[x].palabra != null && ti.palabras[x].palabra.Equals(palabra)) { return(ti.palabras[x]); } } return(null); }
public TablaLexica(String[] palabras, int[] lineas, TablaIdentificador tablaI, TablaConstante tablaC) { this.palabras = new Token[palabras.Length]; //this.palabras[0].reiniciar(); Token.sNumero = 1; // Creando todos los TOKENS for (int x = 0; x < palabras.Length; x++) { //Regex.IsMatch(palabra, @"\d+") if (palabras[x] != null && !Regex.IsMatch(palabras[x], @"((\W|^)\s+(\W|$))")) { if (palabras[x] != null && Regex.IsMatch(palabras[x], @regexT1)) { // Tipo 1 - Reservadas Reservada apuntador = this.darReservada(palabras[x]); if (apuntador != null) { this.palabras[x] = new Token(lineas[x], palabras[x], 1, apuntador.valor); } } else if (palabras[x] != null && Regex.IsMatch(palabras[x], @regexT6)) { // Tipo 6 - Cosntantes Constante apuntador = this.darConstante(palabras[x], tablaC); if (apuntador != null) { this.palabras[x] = new Token(lineas[x], "Constante", 6, apuntador.valor); } } else if (palabras[x] != null && Regex.IsMatch(palabras[x], regexT5)) { // Tipo 5 - Delimitadores Delimitador apuntador = this.darDelimitador(palabras[x]); if (apuntador != null) { this.palabras[x] = new Token(lineas[x], palabras[x], 5, apuntador.valor); } } else if (palabras[x] != null && Regex.IsMatch(palabras[x], @regexT4)) { // Tipo 4 - Identificador Identificador apuntador = this.darIdentificador(palabras[x], tablaI); if (apuntador != null) { this.palabras[x] = new Token(lineas[x], palabras[x], 4, apuntador.valor); } } else if (palabras[x] != null && Regex.IsMatch(palabras[x], @regexT7)) { // Tipo 7 - Operadores Operador apuntador = this.darOperador(palabras[x]); this.palabras[x] = new Token(lineas[x], palabras[x], 7, apuntador.valor); } else if (palabras[x] != null && Regex.IsMatch(palabras[x], @regexT8)) { // Tipo 8 - Relacionales Relacional apuntador = this.darRelacional(palabras[x]); this.palabras[x] = new Token(lineas[x], palabras[x], 8, apuntador.valor); } else { // Error this.lError = lineas[x]; this.error = true; this.pError = palabras[x]; x = palabras.Length; } } } }