Professional Documents
Culture Documents
LENGUAJES AUTÓMATAS II
L.C.C. Jesús Epifanio Bote May
7-B
Reporte de investigación
Integrantes:
Miguel Ángel Hobak Koh
Oscar Samuel Perez Rangel
Ángel Adrián Mukul May
SEMESTRE 2018B
Índice.
Introducción……………………………………………………………………………pág. 3
Objetivo General………………………………………………………………………pág. 3
Objetivos Específicos………………………………………………………………….pág. 3
Metodologías………..………………………………………………………………….pág. 3
Expresiones Regulares………………………………………………………………..pág. 4
Conclusión…………..………………………………………………………………….pág. 6
Referencias………….………………………………………………………………….pág. 6
2
Introducción
Objetivos generales
Lograr que el reporte cumpla con las indicaciones establecidas en la rúbrica del curso.
Expresar el fin concreto de la investigación en correspondencia directa con el problema.
Hacer el reporte lo mas entendible posible para cada persona en general.
Objetivos Específicos
El objetivo de este tema es comprender las tareas necesarias para realizar el análisis semántico.
Análisis semántico
3
La semántica se refiere a los aspectos del significado, sentido o interpretación del significado de
un determinado elemento, símbolo, palabra o expresión.
Análisis semántico
Se trata de determinar el tipo de los resultados intermedios, comprobar que los argumentos que
tienen un operador perteneces al conjunto de operadores posibles. El análisis semántico se realiza
posterior mente al sintáctico, la salida “teórica” de la fase de análisis semántico sería un árbol
semántico.
Árbol semántico.
Es una estructura jerárquica en la cual se registran las operaciones que implica u operan dentro
de un programa fuente. En cada una de las ramas del árbol semántico se registra el valor
o significado que este debe tener, y el análisis.
Ejemplo:
Res=Valor1+Valor 2 En C el símbolo (+) implica una suma de valores o una unión de las
cadenas.
El análisis semántico se va encargar que tanto el valor1 como el valor 2 tengan datos que son
compatibles en común y que además se les pueda aplicar dicho operador.
4
Tabla de símbolos
Un compilador necesita guardar y usar la información de los objetos que se va encontrando en el
texto fuente, como variables, etiquetas, declaraciones de tipo, etc.
Esta información se almacena en una estructura de datos interna conocida como tabla de
símbolos.
Esquema conceptual
La forma de proceder conceptual es la siguiente:
1. Se analiza sintácticamente los componentes léxicos que constituyen la cadena de entrada.
2. Se construye el árbol de análisis sintáctico.
3. Se recorre el árbol para evaluar las reglas semánticas de cada uno de sus nodos.
4. La traducción de la cadena de componentes léxicos es el resultado obtenido al evaluar las
reglas semánticas.
5
Aunque este es el esquema, lo lógico es ir construyendo el árbol y a la vez ir realizando los
controles semánticos. De hecho, si el análisis semántico pudiera realizarse cuando está hecho
todo el análisis sintáctico y por tanto se ha construido un árbol de sintaxis abstracta, entonces
esta tarea de análisis semántico sería mucho más fácil, puesto q ue consistiría en la
especificación del orden para el recorrido de dicho árbol, junto con los cálculos a realizar en cada
nodo del recorrido.
Hemos aprendido a reconocer los tokens de un lenguaje y a partir de ellos verificar la estructura
sintáctica de un programa construyendo un árbol sintáctico y ahora nos falta comprobar que estas
sentencias sintácticamente correctas tienen validez semántica. Es decir, vamos a verificar que
estas sentencias sintácticamente correctas tienen coherencia en su contexto y por tanto tienen
sentido.
6
Conclusión
En este tema hemos comprendido las tareas necesarias para realizar un análisis semántico,
entendiendo los pasos necesarios citados en el esquema conceptual.
Por otro lado hemos visto varios tipos de atributos a tener en cuenta como son el tipo de datos, el
valor, el ámbito o la posición en memoria, que junto con las gramáticas de atributos nos permite
incorporar reglas semánticas basadas en estos atributos que se calculan según se va produciendo
el proceso de análisis, permitiendo por tanto realizar en una sola pasada todas las fases del
compilador.
También hemos aprendido a utilizar atributos sintetizados (paso de atributos de nodos hijo a
nodos padre) y heredados (el valor de un nodo depende del valor de los hermanos y del padre)
para realizar los controles semánticos y aplicarlos a las reglas semánticas.
Por último hemos aprendido a utilizar los grafos de dependencias cuando en una misma
gramática tenemos atributos sintetizados y heredados, con el objeto de validar que el flujo de
atributos es el correcto.
7
8
9
Fuentes:
https://ccc.inaoep.mx/~emorales/Cursos/Automatas/ExpRegulares.pdf
10