cap4 analisis sintactico
DESCRIPTION
Se presentan las diferentes estrategias de recuperación de errores que pueden utilizarse en el análsis sintáctico.TRANSCRIPT
Análisis Sintáctico
Capítulo 4Leonel Morales Díaz
Copyright 2008 by Leonel Morales Díaz – Ingeniería Simple.Derechos reservados Disponible en: http://www.ingenieriasimple.com/compiladores
Analizador Sintáctico
AnalizadorLéxico
Analizadorsintáctico
Tabla deSímbolos
ComponenteLéxico (Token)
GetNextToken()
ProgramaFuente
Arbol deAnálisis
Sintáctico
Resto deEtapa Inicial
CódigoIntermedio
Errores
Léxicos Escribir mal algo (fi en lugar de if)
Sintácticos Paréntesis no equilibrados If sin Then
Semáticos Llamada a función con parámetros de tipo
incorrecto Lógicos
Recursión infinita Run time error
Errores Sintácticos
Objetivos Informar de los errores con claridad
Lugar donde ocurrió el error Recuperarse de los errores
Varias estrategias No retrasar el análisis en programas
correctos
Programa ejemplo
Program impmax(input, output);Var
x, y : integer;Function max(i: integer; j: integer) : integer;{devuelve el máximo de los enteros i y j}Begin
if i > j then max := ielse max := j
End;
Beginreadln(x,y);writeln(max(x,y))
End.
Estrategias de recuperación de errores
En modo de pánico A nivel de frase De producciones de error De corrección global
En modo de pánico
Se descubre el error Se desechan símbolos de entrada Se llega a un componente de
sincronización ; end loop then Se debe definir cuáles se usarán
Puede desechar gran parte de la entrada Garantiza recuperación
A nivel de frase
Identificar prefijo para la entrada restante
Ejemplo If while not true then ... Entrada restante: not true then... Prefijo identificable: if Corrección: if not true then ...
Difícil de implementar
Producciones de error
Se identifican patrones de error Se incluyen producciones para
esos patrones Si la producción se usa...
Corregir en reglas semánticas Modificar la gramática
Corrección Global
Identificar todas las posibles variaciones
Evaluar la mínima Utilizarla