UNIDAD 1 AUTOMATAS 2
Enviado por Johnny1508 • 26 de Noviembre de 2014 • 2.990 Palabras (12 Páginas) • 2.908 Visitas
UNIDAD 1
1.1 ÁRBOLES DE EXPRESIONES…………………………………………………4
1.2 ACCIONES SEMÁNTICAS DE UN ANALIZADOR SINTÁCTICO…………4
1.3 COMPROBACIONES DE TIPOS DE EXPRESIONES………………………5
1.4 PILAS SEMÁNTICAS EN UN ANALIZADOR SINTÁCTICO……………….7
1.5 ESQUEMA DE TRADUCCIÓN………………………………………………….7
1.6 GENERACIÓN DE LA TABLA DE SÍMBOLOS Y DE DIRECCIONES…….8
1.7 MANEJO DE ERRORES SEMÁNTICOS……………………………………11
BIBILIOGRAFIA……………………………………………………..................14
3
UNIDAD 1
Análisis semántico
Bueno se refiere a los aspectos del significado, sentido o interpretación del
mismo de un determinado elemento, símbolo, palabra, expresión o
representación formal determina el tipo de resultados intermedios y que si
los argumentos que tiene un operador pertenecen al conjunto de los
operadores posibles.
Revisa si el significado de lo que se va leyendo es válido. el resultado de la
fase de análisis semántico viene siendo lo que se conoce como "árbol
semántico"
La semántica corresponde al significado asociado a las estructuras formales
(sintaxis) del lenguaje. Como las gramáticas (E)BNF —además
normalmente limitadas a LR o LL— no pueden describir todos los elementos
sintácticos del lenguaje, se hace preciso algún análisis adicional... Así, se
denomina tradicionalmente “análisis semántico” a todo aquello que forma
parte del frontal [front-end] más allá de lo que la gramática utilizada nos
permite: Tabla de símbolos Chequeos de tipos (y otros) Generación de
representación interna
El analizador semántico es la fase que sigue al análisis sintáctico. En esta
fase se explora el AST (árbol de sintaxis abstracta) con el fin de detectar los
errores semánticos. Al analizador semántico también se conoce como tree -parser.
4
1.1 ÁRBOLES DE EXPRESIONES
Es una estructura jerárquica en la cual se registran las operaciones que
realiza el programa fuente, en cada una de las ramas del árbol se registra el
valor o significado que este debe tener y el análisis analiza cuál de los
valores registrado en las ramas es aplicable.
Los árboles de expresiones representan el código de nivel del lenguaje en
forma de datos. Los datos se almacenan en una estructura con forma de
árbol. Cada nodo del árbol de expresión representa una expresión, por
ejemplo, una llamada al método o una operación binaria, como x < y.
1.2 ACCIONES SEMÁNTICAS DE UN ANALIZADOR SINTÁCTICO
Dependiendo del tipo de sentencias, las acciones semánticas pueden
agruparse en:
Sentencias de Declaración: completar la sección de tipos de la Tabla de
Símbolos.
5
Sentencias “ejecutables”: realizar comprobaciones de tipos entre los
operandos implicados.
Funciones y procedimientos: comprobar el número, orden y tipo de los
parámetros actuales en cada llamada a una función o procedimiento.
Identificación de variables: comprobar si un identificador ha sido declarado
antes de utilizarlo.
Etiquetas: comprobar si hay etiquetas repetidas y validación.
Constantes: comprobar que no se utilicen en la parte izquierda de una
asignación.
Conversiones y equivalencias de tipo: verificación.
Sobrecarga de operadores y funciones: detectar y solventar.
1.3 COMPROBACIONES DE TIPOS DE EXPRESIONES
E à literal {E.tipo = char}
E à num {E.tipo = entero}
E à id {E.tipo = Consultar_TS(id.entrada)}
E à id [E1] {id.tipo = Consultar_TS(id.entrada)}
La labor de comprobación de tipos consiste en conferir a las construcciones
sintácticas del lenguaje la semántica de tipificación y en realizar todo tipo de
comprobaciones de dicha índole. Por su naturaleza, sin embargo, ésta se
encuentra repartida entre la fase de análisis semántico y la generación de
código intermedio.
Tipos de comprobaciones semánticas
Comprobaciones estáticas
Las comprobaciones estáticas recogen el compendio de todas aquellas
tareas de carácter semántico que, por su naturaleza, pueden ser realizadas
directamente durante la fase de compilación mediante el uso de los
artefactos y mecanismos propios de dicha fase. Este tipo de
6
comprobaciones son beneficiosas puesto que confieren seguridad a la
ejecución del programa.
Comprobaciones dinámicas
Las comprobaciones dinámicas son aquellas que no se realizan durante la
fase de compilación y se delegan al momento de la ejecución del programa.
Ello requiere generar código ejecutable específicamente diseñado para
realizar tales comprobaciones.
Los lenguajes con una carga excesiva de comprobaciones dinámicas
generan programas más largos, lentos e inseguros en ejecución.
Tipos de comprobaciones semánticas estáticas
Gestión de declaraciones
Se encarga de registrar todas las declaraciones realizadas por el
programador a lo largo de los distintos ámbitos. Esta tarea implica el registro
de tipos y la comprobación de que no se produce ninguna colisión de
nombres con los identificadores de otras declaraciones.
Verificación de tipos
Comprueba la compatibilidad de tipos de todas las expresiones del código
fuente recuperando la información durante la gestión de declaraciones.
Además se asegura de que no existe en el programa ninguna referencia a
ningún símbolo no declarado.
Inferencia de tipos
En lenguajes sin tipificación de variables o con sobrecarga se aplican tareas
de inferencia de tipos en el nivel gramatical de las expresiones para resolver
el tipo de datos de la expresión resultante en función del contexto de
evaluación
7
1.4 PILAS SEMÁNTICAS EN UN ANALIZADOR SINTÁCTICO
Como podemos entender un analizador sintáctico ascendente utiliza durante
...