Cap4 Analisis Sintactico
-
Upload
leonel-morales -
Category
Education
-
view
6.239 -
download
4
description
Transcript of Cap4 Analisis Sintactico
![Page 1: Cap4 Analisis Sintactico](https://reader036.fdocumento.com/reader036/viewer/2022082809/557b9d82d8b42aa5758b5178/html5/thumbnails/1.jpg)
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
![Page 2: Cap4 Analisis Sintactico](https://reader036.fdocumento.com/reader036/viewer/2022082809/557b9d82d8b42aa5758b5178/html5/thumbnails/2.jpg)
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](https://reader036.fdocumento.com/reader036/viewer/2022082809/557b9d82d8b42aa5758b5178/html5/thumbnails/3.jpg)
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](https://reader036.fdocumento.com/reader036/viewer/2022082809/557b9d82d8b42aa5758b5178/html5/thumbnails/4.jpg)
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](https://reader036.fdocumento.com/reader036/viewer/2022082809/557b9d82d8b42aa5758b5178/html5/thumbnails/5.jpg)
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](https://reader036.fdocumento.com/reader036/viewer/2022082809/557b9d82d8b42aa5758b5178/html5/thumbnails/6.jpg)
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](https://reader036.fdocumento.com/reader036/viewer/2022082809/557b9d82d8b42aa5758b5178/html5/thumbnails/7.jpg)
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](https://reader036.fdocumento.com/reader036/viewer/2022082809/557b9d82d8b42aa5758b5178/html5/thumbnails/8.jpg)
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](https://reader036.fdocumento.com/reader036/viewer/2022082809/557b9d82d8b42aa5758b5178/html5/thumbnails/9.jpg)
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](https://reader036.fdocumento.com/reader036/viewer/2022082809/557b9d82d8b42aa5758b5178/html5/thumbnails/10.jpg)
Corrección Global
Identificar todas las posibles variaciones
Evaluar la mínima Utilizarla