private void Panic() { //este metodo se encarga de evitar que el analisis se detenga por un error, lo recupera preanalisis = getNextToken(); Token.Tipo tipo = preanalisis.TipoToken; while (!tipo.Equals(Token.Tipo.puntoycoma)) { tipo = getNextToken().TipoToken; } //preanalisis = getNextToken(); }
private Token Match(Token.Tipo tk, String descripcion) { Token.Tipo tipo = preanalisis.TipoToken; if (tk.Equals(tipo)) { Token tok = preanalisis; preanalisis = getNextToken(); return(tok); } else { Errores(descripcion + " y se obtuvo " + preanalisis.Lexema, preanalisis.Fila, preanalisis.Columna); Panic(); } return(null); }
public Token Match(Token.Tipo tk, String descripcion) { Token.Tipo tipo = preanalisis.TipoToken; if (tk.Equals(tipo)) { Token valor = preanalisis; String val = valor.Lexema.ToLower(); valor.Lexema = val; preanalisis = getNextToken(); return(valor); } else { Errores(descripcion + " y se obtuvo " + preanalisis.Lexema, preanalisis.Fila, preanalisis.Columna); Panic(); } return(null); }
public void revisarTipo() { Token.Tipo tipoActual = tipoToken; string valorActual = valor; if (tipoActual.Equals(Token.Tipo.IDENTIFICADOR)) { switch (valorActual) { case "SI": this.tipoToken = Tipo.SI; break; case "SINO": this.tipoToken = Tipo.SI_NO; break; case "SINOSI": this.tipoToken = Tipo.SINOSI; break; case "MIENTRAS": this.tipoToken = Tipo.MIENTRAS; break; case "HACER": this.tipoToken = Tipo.HACER; break; case "DESDE": this.tipoToken = Tipo.DESDE; break; case "HASTA": this.tipoToken = Tipo.HASTA; break; case "INCREMENTO": this.tipoToken = Tipo.INCREMENTO; break; case "Entero": this.tipoToken = Tipo.ENTERO; break; case "Decimal": this.tipoToken = Tipo.DECIMAL; break; case "Cadena": this.tipoToken = Tipo.CADENA; break; case "Boolean": this.tipoToken = Tipo.BOOLEAN; break; case "Chart": this.tipoToken = Tipo.CHART; break; case "verdadero": this.tipoToken = Tipo.TRUE; break; case "falso": this.tipoToken = Tipo.FALSE; break; case "imprimir": this.tipoToken = Tipo.PRINT; break; case "leer": this.tipoToken = Tipo.READ; break; case "Principal": this.tipoToken = Tipo.PRINCIPAL; break; default: break; } } }