Manejo de Errores
Manejo de Errores
Manejo de Errores
• Modo Pánico
• Nivel de Frase
• Producciones de error
• Corrección global
Recuperación en Modo Pánico
• Es el más sencillo de implantar.
main() {
int a;
}
Recuperación a nivel de frase
• Esta técnica utiliza una corrección de
caracteres adyacentes, ya sea por inserción,
eliminación o intercambio.
%%
Gramáticas Nombre:prod1|prod2|…|prodn;
%%
Código auxiliar C
Consejos
• Todo lexema debe ser un entero:
• #define VAR 200 (256)
• return (VAR);
• Reduce/Reduceambigüedad infinita
• Shift/Reduce
• %%
• main(intargc, char*argv[]) {
• FILE *f = fopen(argv[1], “r”);
• yyin= f;
• while(yyparse());
• fclose(f); }
Compilación con Yacc
• $flexanalizador.lex
• $bisonanalizador.y
• yytextcomponente léxico
• yyinflujo de entrada
• yylinenolínea de error
Manejo de errores con Yacc
• %% yyerror() {
• printf(“Error sintáctico en %dlinea”, yylineno);
• }