private void match(Token.Tipo tipo) { if (actual.getTipoToken() != tipo) { Console.WriteLine("No se esperaba este caracter\"" + actual.getTipo() + "\", se esperaba" + tipo.ToString()); } else if (actual.getTipoToken() != Token.Tipo.ULTIMO) { listaAnalizada.AddLast(actual); controlToken++; actual = salidaSintactico.ElementAt(controlToken); } }
/** * Parea: * Compara si el token de preanalisis tiene el tipo que se indica, en caso de que no sean iguales marca error. **/ public void Parea(Token.Tipo tipoToken) { //Si existe un error sintactico buscara al simbolo punto y coma para poder continuar con el analisis. if (errorSintactico) { if (controlToken < listaTokens.Count - 1) { controlToken++; tokenActual = listaTokens.ElementAt(controlToken); if (tokenActual.GetTipo() == Token.Tipo.S_PUNTO_Y_COMA) { errorSintactico = false; } else { Console.WriteLine("Ya no se pudo recuperar :c"); } } } //Si no hay error previo se procede a comparar si cumple con Parea. else { //Parea se cumple bien if (tokenActual.GetTipo() == tipoToken) { if (controlToken < listaTokens.Count - 1) { controlToken++; tokenActual = listaTokens.ElementAt(controlToken); while ((tokenActual.GetTipo() == Token.Tipo.COMENTARIO_INLINE || tokenActual.GetTipo() == Token.Tipo.COMENTARIO_MULTILINE) && controlToken < listaTokens.Count - 1) { controlToken++; tokenActual = listaTokens.ElementAt(controlToken); } } } //Error sintactico else { Console.WriteLine("Error Sintactico\nEn ID_Token: " + controlToken + "\nSe esperaba [" + tipoToken.ToString() + "] en lugar de [" + tokenActual.GetTipo() + ", " + tokenActual.GetValor() + "]"); consola += "*Error Sintactico*\nEn ID_Token: " + controlToken + "\nSe esperaba [" + tipoToken.ToString() + "] en lugar de [" + tokenActual.GetTipo() + ", " + tokenActual.GetValor() + "]\n"; errorSintactico = true; existenciaErrorSintactico = true; } } }