Professional Documents
Culture Documents
Análisis Semántico
Análisis Semántico
Análisis Semántico
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.
Lo que se encuentra en la parte superior es una “premisa” y en la parte inferior una “conclusión”.
La premisa indica que el resultado de evaluar una expresión e en un determinado almacén σ
(estado de una máquina abstracta) produce un valor v. La conclusión indica que, dado un estado
σ, la asignación de una expresión e a un identificador x produce un nuevo estado resultado de
añadir a σ la asociación del valor de v al identificador x.
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 [Watt96].
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
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 a:
Qué comprende el análisis semántico como decoración del Árbol de Sintaxis abstracta.
Un procesador de lenguaje en el que todas las fases ocurren en un único recorrido del código
fuente se denomina de una pasada 14. En este tipo de procesadores, el análisis semántico y la
generación de código están intercaladas con el análisis sintáctico –y por tanto con el análisis
léxico. Este tipo de compiladores es más eficiente y emplea menos memoria que los que
requieren más de una pasada. Sin embargo, el código que genera acostumbra a ser menos
eficiente que los compiladores que emplean más de una pasada. Pascal y C son ejemplos de
lenguajes que pueden ser compilados con una sola pasada –por ello, es siempre necesario
declarar una función antes de utilizarla (forward en Pascal).
Una simplificación de árbol sintáctico que represente toda la información necesaria para el resto
del procesamiento del programa de un modo más eficiente que el árbol sintáctico original,
recibe el nombre de árbol de sintaxis abstracta (AST, Abstract Syntax Tree). Así, la salida
generada por un analizador sintáctico de varias pasadas, será el AST representativo del
programa de entrada. Un AST puede ser visto como el árbol sintáctico de una gramática
denominada abstracta, al igual que un árbol sintáctico es la representación de una gramática
(en ocasiones denominada concreta). Por tanto, es común ver una gramática que representa
una simplificación de un lenguaje de programación denominada gramática abstracta del
lenguaje.
Defina una gramática concreta para la siguiente operación 7+(4*2) * 5 /(10*2) y finalmente
genere su árbol sintáctico.
Gramatica Abstracta:
Expresion: expresionBinaria
| expresionUnaria
| constanteEntera
;
expresionBinaria: expresion ( ' * ' | ' / ' | ' + ' ) expresion
; ;
constanteEntera: CTE_ENTERA
;