SlideShare una empresa de Scribd logo
1 de 5
Descargar para leer sin conexión
TALLER DE ACTIVIDADES DE COMPILADORES
Daniel Rosero
Fecha: 06 de junio del 2019
Tema: Análisis sintáctico
Resuelva cada una de las interrogantes planteadas y subir el enlace al espacio virtual con la
publicación del enlace de la dirección de su blog.
• ¿Cuál es el objetivo principal del analizar semántico de un procesador de lenguajes?
El objetivo principal del analizador semántico de un procesador de lenguaje es asegurarse de que el programa
analizado satisfaga las reglas requeridas por la especificación del lenguaje, para garantizar su correcta ejecución. El
tipo y dimensión de análisis semántico requerido varía enormemente de un lenguaje a otro.
• A qué refiere la descripción formal de la semántica de lenguajes de programación, cite 6
especificaciones más usadas.
La descripción formal de la semántica de lenguajes de programación es la descripción rigurosa del significado o
comportamiento de programas, lenguajes de programación, máquinas abstractas o incluso cualquier dispositivo
hardware. La necesidad de hacer especificaciones formales de semántica surge para [Nielson92, Watt96, Labra03]:
o Revelar posibles ambigüedades existentes implementaciones de procesadores de lenguajes o en
documentos descriptivos de lenguajes de programación.
o Ser utilizados como base para la implementación de procesadores de lenguaje.
o Verificar propiedades de programas en relación con pruebas de corrección o información relacionada con
su ejecución.
o Diseñar nuevos lenguajes de programación, permitiendo registrar decisiones sobre construcciones
particulares del lenguaje, así como permitir descubrir posibles irregularidades u omisiones.
o Facilitar la comprensión de los lenguajes por parte del programador y como mecanismo de comunicación
entre diseñador del lenguaje, implementador y programador. La especificación semántica de un lenguaje,
como documento de referencia, aclara el comportamiento del lenguaje y sus diversas construcciones.
o Estandarizar lenguajes mediante la publicación de su semántica de un modo no ambiguo. Los programas
deben poder procesarse en otra implementación de procesador del mismo lenguaje exhibiendo el mismo
comportamiento.
• Cuáles son los puntos de vista de descripción semántica más utilizados, realice un
resumen corto y un ejemplo de la especificación de los mismos.
o Semántica operacional: El significado de cada construcción sintáctica es especificado mediante la
computación que se lleva a cabo en su ejecución sobre una máquina abstracta.
Ejemplo:
o Semántica denotacional: La representación del comportamiento de cada sentencia o frase del lenguaje se
lleva a cabo mediante entidades matemáticas (denotación) que representan el efecto de haber ejecutado
las sentencia o frase asociada.
Ejemplo:
o Semántica axiomática: Especifica las propiedades del efecto de ejecutar las sentencias sintácticamente
correctas, expresadas mediante asertos, desoyendo así los aspectos de su ejecución.
Ejemplo:
o Semántica algebraica: Se basa en la especificación de tipos de datos abstractos mediante una colección
de operaciones (incluyendo alguna constante).
Ejemplo:
o Semántica de acciones: Fue elaborado por Peter Mosses para describir la semántica de lenguajes de un
modo más inteligible. Las especificaciones semánticas de lenguajes siempre han sido consideradas como
oscuras, complicadas y únicamente legibles por expertos, adquiriendo así una mala reputación por su uso
intensivo de símbolos matemáticos.
Ejemplo:
• Cuál es la conexión directa entre el análisis semántico con el resto de fases que emplea un
compilador, explique a través del organizador gráfico de Aho.
• Cite de forma rápida ejemplos de comprobaciones que hace el analizador semántico con respecto:
✓ Declaración de identificadores y reglas de ámbitos
✓ Comprobaciones de unicidad
Constantes de cada case en Pascal, C o Java. Cada uno de los elementos existentes en los condicionales
múltiples de los lenguajes de programación mencionados, ha de ser único. En otro caso, el analizador
semántico deberá generar un error de compilación.
✓ Comprobaciones de enlace
En un ensamblador, un salto a una etiqueta requiere que ésta haya sido referida como una posición de
memoria.
✓ Comprobaciones pospuestas por el analizador sintáctico
Las sentencias break y continue de Java y C sólo pueden utilizarse en determinadas estructuras de control
del lenguaje. Éste es otro escenario para que el analizador sintáctico posponga la comprobación hasta la
fase análisis semántico.
✓ Comprobaciones dinámicas
Acceso a un vector fuera de rango, utilización de un puntero nulo o división por cero.
✓ Comprobaciones de tipo
En Java el operador de producto no es aplicable a una referencia a un objeto. De un modo contrario, el
operador punto sí es válido.
• Qué comprende el análisis semántico como decoración del Árbol de Sintaxis abstracta.
Como sabemos, un árbol sintáctico es una representación de la estructura de una consecución de componentes
léxicos (tokens), en la que éstos aparecen como nodos hoja y los nodos internos representan los pasos en las
derivaciones de la gramática asociada. Los árboles sintácticos poseen mucha más información de la necesaria para
el resto de las fases de un compilador, una vez finalizada la fase de análisis sintáctico.
• Defina las características más importantes del Árbol de sintaxis abstracta.
o Comparado al código fuente, un AST no incluye ciertos elementos, como puntuación no esencial y
delimitadores (corchetes, punto y coma, paréntesis, entre otros.).
o Una diferencia importante es que el AST puede ser editado y mejorado con propiedades y anotaciones para
cada elemento que contiene. Esta edición y anotación es imposible con el código fuente de un programa,
mientras que esto implicaría cambiarlo.
o Al mismo tiempo, un AST usualmente contiene información extra sobre el programa, debido a las etapas
consecutivas de análisis del compilador. Un ejemplo simple de la información adicional presente en un AST
es la posición de un elemento en el código fuente. Esta información es usada en caso de un error en el
código, para notificar al usuario la locación de un error.
• Defina una gramática concreta para la siguiente operación 7+(4*2) * 5/(10*2) y finalmente genere
su árbol sintáctico.
o expresión: expresión '*' término
expresión '*' término
término;
o termino: término '*' factor
término '/' factor
factor;
Taller de actividades de compiladores 06 06 2019

Más contenido relacionado

La actualidad más candente

Materia unidad compiladores
Materia unidad compiladoresMateria unidad compiladores
Materia unidad compiladoresbachispasaca
 
Taller n15 compiladores_analis_semantico_15_junio_2021 (1)
Taller n15 compiladores_analis_semantico_15_junio_2021 (1)Taller n15 compiladores_analis_semantico_15_junio_2021 (1)
Taller n15 compiladores_analis_semantico_15_junio_2021 (1)Bryan Chasiguano
 
Clase6 ejemplo analisis lexico dev cpp
Clase6 ejemplo analisis lexico dev cppClase6 ejemplo analisis lexico dev cpp
Clase6 ejemplo analisis lexico dev cppInfomania pro
 
Compiladores
CompiladoresCompiladores
CompiladoresIsabel
 
Clase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptosClase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptosInfomania pro
 
Análisis semántico
Análisis semánticoAnálisis semántico
Análisis semánticoAndres Pozo
 
Herramientas
HerramientasHerramientas
HerramientasIsabel
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador SintácticoPablo Guerra
 
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS Infomania pro
 
Capítulo 2 compiladores (willian gallo -------boris chungandro)
Capítulo 2 compiladores (willian gallo -------boris chungandro)Capítulo 2 compiladores (willian gallo -------boris chungandro)
Capítulo 2 compiladores (willian gallo -------boris chungandro)MARCO POLO SILVA SEGOVIA
 
Introducción a Compiladores
Introducción a  CompiladoresIntroducción a  Compiladores
Introducción a CompiladoresLeopoldo Capa
 
Clase6 conceptos del analisis lexico
Clase6 conceptos del analisis lexicoClase6 conceptos del analisis lexico
Clase6 conceptos del analisis lexicoInfomania pro
 
Compiladores unidad1
Compiladores unidad1Compiladores unidad1
Compiladores unidad1X3025990
 
Actividad 3
Actividad 3Actividad 3
Actividad 3maryr_
 
Alejandra gomez
Alejandra gomezAlejandra gomez
Alejandra gomezalejitaacg
 

La actualidad más candente (20)

Materia unidad compiladores
Materia unidad compiladoresMateria unidad compiladores
Materia unidad compiladores
 
Análisis lexicográfico
Análisis lexicográficoAnálisis lexicográfico
Análisis lexicográfico
 
Taller n15 compiladores_analis_semantico_15_junio_2021 (1)
Taller n15 compiladores_analis_semantico_15_junio_2021 (1)Taller n15 compiladores_analis_semantico_15_junio_2021 (1)
Taller n15 compiladores_analis_semantico_15_junio_2021 (1)
 
Clase6 ejemplo analisis lexico dev cpp
Clase6 ejemplo analisis lexico dev cppClase6 ejemplo analisis lexico dev cpp
Clase6 ejemplo analisis lexico dev cpp
 
Analisis semantico
Analisis semanticoAnalisis semantico
Analisis semantico
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Clase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptosClase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptos
 
Análisis semántico
Análisis semánticoAnálisis semántico
Análisis semántico
 
Herramientas
HerramientasHerramientas
Herramientas
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador Sintáctico
 
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
 
Capítulo 2 compiladores (willian gallo -------boris chungandro)
Capítulo 2 compiladores (willian gallo -------boris chungandro)Capítulo 2 compiladores (willian gallo -------boris chungandro)
Capítulo 2 compiladores (willian gallo -------boris chungandro)
 
Introducción a Compiladores
Introducción a  CompiladoresIntroducción a  Compiladores
Introducción a Compiladores
 
Examen de compiladores i parcial
Examen de compiladores i parcialExamen de compiladores i parcial
Examen de compiladores i parcial
 
Clase6 conceptos del analisis lexico
Clase6 conceptos del analisis lexicoClase6 conceptos del analisis lexico
Clase6 conceptos del analisis lexico
 
Compiladores, Analisis Lexico, Ejemplo Minilenguaje
Compiladores, Analisis Lexico, Ejemplo MinilenguajeCompiladores, Analisis Lexico, Ejemplo Minilenguaje
Compiladores, Analisis Lexico, Ejemplo Minilenguaje
 
Compiladores unidad1
Compiladores unidad1Compiladores unidad1
Compiladores unidad1
 
Actividad 3
Actividad 3Actividad 3
Actividad 3
 
Resumencap1 carmen vargas_jeremycamacho
Resumencap1 carmen vargas_jeremycamachoResumencap1 carmen vargas_jeremycamacho
Resumencap1 carmen vargas_jeremycamacho
 
Alejandra gomez
Alejandra gomezAlejandra gomez
Alejandra gomez
 

Similar a Taller de actividades de compiladores 06 06 2019

Taller n13 compiladores_10_junio_2021
Taller n13 compiladores_10_junio_2021Taller n13 compiladores_10_junio_2021
Taller n13 compiladores_10_junio_2021Bryan Chasiguano
 
Taller analisis semantico
Taller analisis semanticoTaller analisis semantico
Taller analisis semanticoAlvaro Cedeño
 
Analisis sintactico
Analisis sintacticoAnalisis sintactico
Analisis sintacticoAndresDvila
 
Actividad 2 programacion de sistemas
Actividad 2 programacion de sistemasActividad 2 programacion de sistemas
Actividad 2 programacion de sistemasJESSIKADG86
 
Analisis sintactico
Analisis sintacticoAnalisis sintactico
Analisis sintacticoAndres Pozo
 
Introducción a los compiladores - Parte 2
Introducción a los compiladores - Parte 2Introducción a los compiladores - Parte 2
Introducción a los compiladores - Parte 2Universidad
 
Actividad 2 Programación de Sistemas.
Actividad 2 Programación de Sistemas.Actividad 2 Programación de Sistemas.
Actividad 2 Programación de Sistemas.Dispositivosmoviles
 
Proyecto De Tecnica De Programacioin I I
Proyecto De Tecnica De Programacioin  I IProyecto De Tecnica De Programacioin  I I
Proyecto De Tecnica De Programacioin I IAmistadLealtad
 
Grupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iGrupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iRossana Sosa
 
diaposichap.pptx
diaposichap.pptxdiaposichap.pptx
diaposichap.pptxLuisSimn12
 
Preguntas de diagnostico
Preguntas de diagnosticoPreguntas de diagnostico
Preguntas de diagnosticoJavierCR2017
 
Alejandra gomez (1)
Alejandra gomez (1)Alejandra gomez (1)
Alejandra gomez (1)alejandra985
 

Similar a Taller de actividades de compiladores 06 06 2019 (20)

Taller n13 compiladores_10_junio_2021
Taller n13 compiladores_10_junio_2021Taller n13 compiladores_10_junio_2021
Taller n13 compiladores_10_junio_2021
 
Lenguaje de programacion mike alvarado
Lenguaje de programacion mike alvaradoLenguaje de programacion mike alvarado
Lenguaje de programacion mike alvarado
 
Taller analisis semantico
Taller analisis semanticoTaller analisis semantico
Taller analisis semantico
 
Analisis sintactico
Analisis sintacticoAnalisis sintactico
Analisis sintactico
 
Actividad 2 programacion de sistemas
Actividad 2 programacion de sistemasActividad 2 programacion de sistemas
Actividad 2 programacion de sistemas
 
Analisis sintactico
Analisis sintacticoAnalisis sintactico
Analisis sintactico
 
TALLER ANALISIS LEXICO
TALLER ANALISIS LEXICOTALLER ANALISIS LEXICO
TALLER ANALISIS LEXICO
 
Introducción a los compiladores - Parte 2
Introducción a los compiladores - Parte 2Introducción a los compiladores - Parte 2
Introducción a los compiladores - Parte 2
 
Taller de compiladores
Taller de compiladoresTaller de compiladores
Taller de compiladores
 
Compilador2
Compilador2Compilador2
Compilador2
 
Actividad 2 Programación de Sistemas.
Actividad 2 Programación de Sistemas.Actividad 2 Programación de Sistemas.
Actividad 2 Programación de Sistemas.
 
Tratamiento de errores
Tratamiento de erroresTratamiento de errores
Tratamiento de errores
 
Proyecto De Tecnica De Programacioin I I
Proyecto De Tecnica De Programacioin  I IProyecto De Tecnica De Programacioin  I I
Proyecto De Tecnica De Programacioin I I
 
Grupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iGrupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes i
 
Fases de los compiladores
Fases de los compiladoresFases de los compiladores
Fases de los compiladores
 
diaposichap.pptx
diaposichap.pptxdiaposichap.pptx
diaposichap.pptx
 
Herramientas de software
Herramientas de softwareHerramientas de software
Herramientas de software
 
Preguntas de diagnostico
Preguntas de diagnosticoPreguntas de diagnostico
Preguntas de diagnostico
 
Curso prog sist
Curso prog sistCurso prog sist
Curso prog sist
 
Alejandra gomez (1)
Alejandra gomez (1)Alejandra gomez (1)
Alejandra gomez (1)
 

Más de DanielRosero23

Graficas sencillas con_matlab
Graficas sencillas con_matlabGraficas sencillas con_matlab
Graficas sencillas con_matlabDanielRosero23
 
Operaciones con matlab
Operaciones con matlabOperaciones con matlab
Operaciones con matlabDanielRosero23
 
Operaciones con matrices
Operaciones con matricesOperaciones con matrices
Operaciones con matricesDanielRosero23
 
Segunda y tercera_parte_matlab
Segunda y tercera_parte_matlabSegunda y tercera_parte_matlab
Segunda y tercera_parte_matlabDanielRosero23
 
Primera_parte_instalacion_de_matlab_2017
Primera_parte_instalacion_de_matlab_2017Primera_parte_instalacion_de_matlab_2017
Primera_parte_instalacion_de_matlab_2017DanielRosero23
 
La luz y_el_espectro_electromagnetico
La luz y_el_espectro_electromagneticoLa luz y_el_espectro_electromagnetico
La luz y_el_espectro_electromagneticoDanielRosero23
 
Fundamentos de la_Teoria_del_Color_2
Fundamentos de la_Teoria_del_Color_2Fundamentos de la_Teoria_del_Color_2
Fundamentos de la_Teoria_del_Color_2DanielRosero23
 
Fundamentos de la_teoria_del_color
Fundamentos de la_teoria_del_colorFundamentos de la_teoria_del_color
Fundamentos de la_teoria_del_colorDanielRosero23
 
Taller de Compiladores flx y bsn
Taller de Compiladores flx y bsnTaller de Compiladores flx y bsn
Taller de Compiladores flx y bsnDanielRosero23
 
Lenguajes de programacion1
Lenguajes de programacion1Lenguajes de programacion1
Lenguajes de programacion1DanielRosero23
 
Frameworks de Javascript Lema-Rosero
Frameworks de Javascript Lema-RoseroFrameworks de Javascript Lema-Rosero
Frameworks de Javascript Lema-RoseroDanielRosero23
 

Más de DanielRosero23 (15)

Graficas sencillas con_matlab
Graficas sencillas con_matlabGraficas sencillas con_matlab
Graficas sencillas con_matlab
 
Operaciones con matlab
Operaciones con matlabOperaciones con matlab
Operaciones con matlab
 
Operaciones con matrices
Operaciones con matricesOperaciones con matrices
Operaciones con matrices
 
Segunda y tercera_parte_matlab
Segunda y tercera_parte_matlabSegunda y tercera_parte_matlab
Segunda y tercera_parte_matlab
 
Primera_parte_instalacion_de_matlab_2017
Primera_parte_instalacion_de_matlab_2017Primera_parte_instalacion_de_matlab_2017
Primera_parte_instalacion_de_matlab_2017
 
La luz y_el_espectro_electromagnetico
La luz y_el_espectro_electromagneticoLa luz y_el_espectro_electromagnetico
La luz y_el_espectro_electromagnetico
 
Fundamentos de la_Teoria_del_Color_2
Fundamentos de la_Teoria_del_Color_2Fundamentos de la_Teoria_del_Color_2
Fundamentos de la_Teoria_del_Color_2
 
Fundamentos de la_teoria_del_color
Fundamentos de la_teoria_del_colorFundamentos de la_teoria_del_color
Fundamentos de la_teoria_del_color
 
Taller de Compiladores flx y bsn
Taller de Compiladores flx y bsnTaller de Compiladores flx y bsn
Taller de Compiladores flx y bsn
 
Analisis sintactico
Analisis sintacticoAnalisis sintactico
Analisis sintactico
 
Parte 2
Parte 2Parte 2
Parte 2
 
Emu8086
Emu8086Emu8086
Emu8086
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Lenguajes de programacion1
Lenguajes de programacion1Lenguajes de programacion1
Lenguajes de programacion1
 
Frameworks de Javascript Lema-Rosero
Frameworks de Javascript Lema-RoseroFrameworks de Javascript Lema-Rosero
Frameworks de Javascript Lema-Rosero
 

Último

PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 

Último (7)

PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 

Taller de actividades de compiladores 06 06 2019

  • 1. TALLER DE ACTIVIDADES DE COMPILADORES Daniel Rosero Fecha: 06 de junio del 2019 Tema: Análisis sintáctico Resuelva cada una de las interrogantes planteadas y subir el enlace al espacio virtual con la publicación del enlace de la dirección de su blog. • ¿Cuál es el objetivo principal del analizar semántico de un procesador de lenguajes? El objetivo principal del analizador semántico de un procesador de lenguaje es asegurarse de que el programa analizado satisfaga las reglas requeridas por la especificación del lenguaje, para garantizar su correcta ejecución. El tipo y dimensión de análisis semántico requerido varía enormemente de un lenguaje a otro. • A qué refiere la descripción formal de la semántica de lenguajes de programación, cite 6 especificaciones más usadas. La descripción formal de la semántica de lenguajes de programación es la descripción rigurosa del significado o comportamiento de programas, lenguajes de programación, máquinas abstractas o incluso cualquier dispositivo hardware. La necesidad de hacer especificaciones formales de semántica surge para [Nielson92, Watt96, Labra03]: o Revelar posibles ambigüedades existentes implementaciones de procesadores de lenguajes o en documentos descriptivos de lenguajes de programación. o Ser utilizados como base para la implementación de procesadores de lenguaje. o Verificar propiedades de programas en relación con pruebas de corrección o información relacionada con su ejecución. o Diseñar nuevos lenguajes de programación, permitiendo registrar decisiones sobre construcciones particulares del lenguaje, así como permitir descubrir posibles irregularidades u omisiones. o Facilitar la comprensión de los lenguajes por parte del programador y como mecanismo de comunicación entre diseñador del lenguaje, implementador y programador. La especificación semántica de un lenguaje, como documento de referencia, aclara el comportamiento del lenguaje y sus diversas construcciones. o Estandarizar lenguajes mediante la publicación de su semántica de un modo no ambiguo. Los programas deben poder procesarse en otra implementación de procesador del mismo lenguaje exhibiendo el mismo comportamiento. • Cuáles son los puntos de vista de descripción semántica más utilizados, realice un resumen corto y un ejemplo de la especificación de los mismos. o Semántica operacional: El significado de cada construcción sintáctica es especificado mediante la computación que se lleva a cabo en su ejecución sobre una máquina abstracta. Ejemplo:
  • 2. o Semántica denotacional: La representación del comportamiento de cada sentencia o frase del lenguaje se lleva a cabo mediante entidades matemáticas (denotación) que representan el efecto de haber ejecutado las sentencia o frase asociada. Ejemplo: o Semántica axiomática: Especifica las propiedades del efecto de ejecutar las sentencias sintácticamente correctas, expresadas mediante asertos, desoyendo así los aspectos de su ejecución. Ejemplo: o Semántica algebraica: Se basa en la especificación de tipos de datos abstractos mediante una colección de operaciones (incluyendo alguna constante). Ejemplo: o Semántica de acciones: Fue elaborado por Peter Mosses para describir la semántica de lenguajes de un modo más inteligible. Las especificaciones semánticas de lenguajes siempre han sido consideradas como oscuras, complicadas y únicamente legibles por expertos, adquiriendo así una mala reputación por su uso intensivo de símbolos matemáticos. Ejemplo:
  • 3. • Cuál es la conexión directa entre el análisis semántico con el resto de fases que emplea un compilador, explique a través del organizador gráfico de Aho. • Cite de forma rápida ejemplos de comprobaciones que hace el analizador semántico con respecto: ✓ Declaración de identificadores y reglas de ámbitos ✓ Comprobaciones de unicidad Constantes de cada case en Pascal, C o Java. Cada uno de los elementos existentes en los condicionales múltiples de los lenguajes de programación mencionados, ha de ser único. En otro caso, el analizador semántico deberá generar un error de compilación. ✓ Comprobaciones de enlace En un ensamblador, un salto a una etiqueta requiere que ésta haya sido referida como una posición de memoria. ✓ Comprobaciones pospuestas por el analizador sintáctico Las sentencias break y continue de Java y C sólo pueden utilizarse en determinadas estructuras de control del lenguaje. Éste es otro escenario para que el analizador sintáctico posponga la comprobación hasta la fase análisis semántico. ✓ Comprobaciones dinámicas Acceso a un vector fuera de rango, utilización de un puntero nulo o división por cero. ✓ Comprobaciones de tipo En Java el operador de producto no es aplicable a una referencia a un objeto. De un modo contrario, el operador punto sí es válido.
  • 4. • Qué comprende el análisis semántico como decoración del Árbol de Sintaxis abstracta. Como sabemos, un árbol sintáctico es una representación de la estructura de una consecución de componentes léxicos (tokens), en la que éstos aparecen como nodos hoja y los nodos internos representan los pasos en las derivaciones de la gramática asociada. Los árboles sintácticos poseen mucha más información de la necesaria para el resto de las fases de un compilador, una vez finalizada la fase de análisis sintáctico. • Defina las características más importantes del Árbol de sintaxis abstracta. o Comparado al código fuente, un AST no incluye ciertos elementos, como puntuación no esencial y delimitadores (corchetes, punto y coma, paréntesis, entre otros.). o Una diferencia importante es que el AST puede ser editado y mejorado con propiedades y anotaciones para cada elemento que contiene. Esta edición y anotación es imposible con el código fuente de un programa, mientras que esto implicaría cambiarlo. o Al mismo tiempo, un AST usualmente contiene información extra sobre el programa, debido a las etapas consecutivas de análisis del compilador. Un ejemplo simple de la información adicional presente en un AST es la posición de un elemento en el código fuente. Esta información es usada en caso de un error en el código, para notificar al usuario la locación de un error. • Defina una gramática concreta para la siguiente operación 7+(4*2) * 5/(10*2) y finalmente genere su árbol sintáctico. o expresión: expresión '*' término expresión '*' término término; o termino: término '*' factor término '/' factor factor;