ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

UNIDAD 1 AUTOMATAS 2

Johnny150826 de Noviembre de 2014

2.990 Palabras (12 Páginas)2.943 Visitas

Página 1 de 12

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

el análisis una pila. En esta va guardando datos que le permiten ir haciendo

las operaciones de reducción que necesita.

Para incorporar acciones semánticas como lo es construir el árbol sintáctico,

es necesario incorporar a la pila del analizador sintáctico ascendente otra

columna que guarde los atributos de los símbolos que se van analizando.

Fundamentación: Un parser ascendente utiliza durante el análisis una pila.

En esta va guardando datos que le permiten ir haciendo las operaciones de

reducción que necesita.

Para incorporar acciones semánticas como lo es construir el árbol sintáctico,

es necesario incorporar a la pila del parser otra columna que guarde los

atributos de los símbolos que se van analizando.

Estos atributos estarían ligados a la correspondiente producción en la tabla

de parsing.

APORTACIÓN: La pila juega un papel fundamental en el desarrollo de

cualquier analizador semántico. Dentro de cada elemento de la pila se

guardan los valores que pueden tener una expresión

1.5 ESQUEMA DE TRADUCCIÓN

Un esquema de traducción es una gramática independiente del contexto en

la cual se han insertado fragmentos de código en las partes derechas de

sus reglas de producción. Los fragmentos de código así insertados se

denominan acciones semánticas. Dichos fragmentos actúan, calculan y

modifican los atributos asociados con los nodos del árbol sintáctico. El

orden en que se evalúan los fragmentos es el de un recorrido primeroprofundo del árbol de análisis sintáctico.

Obsérvese que, en general, para poder aplicar un esquema de traducción

hay que construir el árbol sintáctico y después aplicar las acciones

empotradas en las reglas en el orden de recorrido primero-profundo. Por

supuesto, si la gramática es ambigua una frase podría tener dos árboles y la

ejecución

...

Descargar como (para miembros actualizados) txt (16 Kb)
Leer 11 páginas más »
Disponible sólo en Clubensayos.com