com/compiladores
Componente
Léxico (Token)
Arbol de Resto de Código
Programa Analizador Analizador Análisis
Fuente Etapa Inicial Intermedio
Léxico sintáctico Sintáctico
GetNextToken()
Tabla de
Símbolos
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
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
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 := i
else max := j
End;
Begin
readln(x,y);
writeln(max(x,y))
End.
En modo de pánico
A nivel de frase
De producciones de error
De corrección global
Se descubre el error
Se desechan símbolos de entrada
Se llega a un componente de sincronización