10
Análisis Sintáctico Capítulo 4 Leonel Morales Díaz [email protected] om right 2008 by Leonel Morales Díaz – Ingeniería Simple. Derechos reservados Disponible en: http://www.ingenieriasimple.com/compila

Cap4 Analisis Sintactico

Embed Size (px)

DESCRIPTION

Se presentan las diferentes estrategias de recuperación de errores que pueden utilizarse en el análsis sintáctico.

Citation preview

Page 1: Cap4 Analisis Sintactico

Análisis Sintáctico

Capítulo 4Leonel Morales Díaz

[email protected]

Copyright 2008 by Leonel Morales Díaz – Ingeniería Simple.Derechos reservados Disponible en: http://www.ingenieriasimple.com/compiladores

Page 2: Cap4 Analisis Sintactico

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

Page 3: Cap4 Analisis Sintactico

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

Page 4: Cap4 Analisis Sintactico

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

Page 5: Cap4 Analisis Sintactico

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.

Page 6: Cap4 Analisis Sintactico

Estrategias de recuperación de errores

En modo de pánico A nivel de frase De producciones de error De corrección global

Page 7: Cap4 Analisis Sintactico

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

Page 8: Cap4 Analisis Sintactico

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

Page 9: Cap4 Analisis Sintactico

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

Page 10: Cap4 Analisis Sintactico

Corrección Global

Identificar todas las posibles variaciones

Evaluar la mínima Utilizarla