Pila semántica
Esquema de traducción
Generación de la tabla de símbolo y de direcciones.
Universidad Autónoma de Chiapas | Campus 01 | Facultad de contaduría y administración.
Docente: Gutiérrez Alfaro Luis, Dr.
Materia: Compiladores. Nombre del alumno (s):
• Carrasco Zavala Carlos Emmanuel | A210731. Semestre: 6° | Grupo: “M”. Actividad 3.2 | AP. Número de Actividad: Investigar .- Pila semántica, Esquema de traducción, Generación de tablas de símbolos y de direcciones. Unidad 3 Tuxtla Gutiérrez, Chiapas; a 28 de Marzo del 2024
Introducción
En el mundo de la informática, la compilación de programas es un proceso fundamental que transforma el código fuente escrito en un lenguaje de programación a un lenguaje que la máquina puede ejecutar. Dentro de este proceso, existen componentes críticos que aseguran la correcta interpretación y ejecución del código. Estos incluyen la Pila Semántica en un analizador sintáctico, el Esquema de Traducción, la Generación de la Tabla de Símbolos y la Generación de Direcciones. Cada uno de estos elementos desempeña un papel único y esencial en la traducción del código fuente, garantizando que el programa final funcione como se espera.
Pila
PILA
Estructura de datos que se usa en programación para
simplificar ciertas operaciones.
Push
Pop
LIFO
TOS
Push
Pop
LIFO
TOS
+info
Arrays (Listas enlazadas)
Una colección de datos a los que se puede acceder mediante un extremo, que se conoce generalmente como tope. Nos permiten organizar nuestros datos de manera ordenada en la memoria de la computadora. Imaginátelo así: cada elemento tiene su propio casillero, y podés acceder directamente a él sin perder tiempo.
+info
Pila semántica en un analizador sintáctico
El análisis semántico usa como entrada el árbol
sintáctico para comprobar restricciones de tipo y
otras limitaciones semánticas y preparar la
generación de código.
Para que se usa la pila ?
Para contener la información semántica asociada a
los operandos (y operadores) en forma de registros
semánticos tomando en cuenta las reglas
semánticas (conj. De normas y especificaciones que
definen al lenguaje). Conversiones implícitas
Ejemplo del uso de pila semántica
SI SE TIENE LA EXPRESION ((1+2)*4)+3
1. Generar el árbol de análisis sintáctico (árbol de la
expresión)
2. Ejemplificar el uso de la pila semántica y evaluar la expresión.
Ejemplo de pila semántica
Una vez que se tiene un A.A.S. se debe guardar todo en la
pila para realizar posteriormente su “evaluación” (de ser
necesario EQ y/o CONV semánticas) y encontrar posibles
errores semánticos.
A.A.S pila opciones a) Recorrido IDR o b) en su
defecto RID.
Evaluación de la “pila semántica” (IDR)
CRITERIOS: SI LA PILA FUE CREADA
CON IDR
› Para evaluar la expresión, se
deben tener siempre 1
Operador y 2 Operando (1
Signo y 2 valores), en caso
de no ser así, recorrer la pila
hasta cumplir la condición,
actualizar la pila y usar en
forma recursiva la misma
regla. Hasta dejar la pila
vacía.
Evaluación de la “pila semántica” (RID)
CRITERIOS: SI FUE CREADA CON RID
› Para evaluar la expresión, se
deben tener siempre 2
Operandos y 1 Operador (2
valores y 1 signo), en caso
de no ser así, recorrer la pila
hasta cumplir la condición,
actualizar la pila y usar en
forma recursiva la misma
regla. Hasta dejar la pila
vacía.
+info
ESQUEMAS DE TRADUCCIÓN
Es una Gramática independiente del contexto en la que se asocian atributos con los símbolos gramaticales y se insertan acciones semánticas encerradas entre las llaves { } dentro de los lados derechos de las producciones. - Son una notación complementaria a las definiciones dirigidas por la sintaxis.
- Consiste en una gramática incontextual con fragmentos de programas insertados en medio del cuerpo de las producciones. (Los fragmentos se llaman acciones semánticas).
REQUISITO PARA HACER UN ESQUEMA DE tRADUCCION
Conocer el lenguaje -----> Símbolos gramaticales ------> Acciones semánticas ------> Reglas
Conocer el Lenguaje: Entender la sintaxis y semántica del lenguaje fuente para poder definir las reglas de traducción adecuadas. Símbolos Gramaticales: Identificar los símbolos gramaticales que formarán parte de la gramática del lenguaje. Acciones Semánticas: Definir las acciones semánticas que se ejecutarán durante el proceso de traducción. Estas acciones están asociadas con las reglas gramaticales y se encierran entre llaves {}. Reglas: Establecer las reglas de traducción que guiarán la conversión del lenguaje fuente al lenguaje objetivo.
+info
PROCESO PARA GENERAR/USAR UN ESQUEMA DE TRADUCCIÓN
• Un esquema de traducción dirigido por sintaxis se puede implementar construyendo
el árbol de análisis sintáctico y luego realizar un recorrido en preorden del árbol
ejecutando las acciones semánticas.
a) Construir el árbol de análisis sintáctico ignorando las acciones semánticas.
b) Adicionar nuevos hijos a cada símbolo de la parte izquierda como nuevos hijos que
contienen las acciones semánticas en el punto donde ellas se deben realizar
c) Recorrer en preorden el árbol de análisis sintáctico ejecutando las acciones.
Generación de una tabla de símbolos.
Una tabla de símbolos es una estructura de datos que almacena toda la información de los identificadores del lenguaje fuente y tiene como 2 objetivos principales: 1. Efectuar chequeos semánticos. 2. Facilitar la generación de código. Esta estructura permanece en memoria sólo en tiempo de compilación, no de ejecución, excepto en aquellos casos en que se compila con opciones de depuración. La Tabla de símbolos almacena los atributos referentes a las variables, como el nombre, tipo, dirección de localización en memoria, tamaño, etc. Y también información sobre cualquier identificador como los tipos de datos creados. Los atributos se obtienen unas veces directamente del análisis del programa fuente, es decir, están en forma explícita (por ejemplo en la sección de declaraciones del programa fuente) y otras veces los atributos se obtienen de forma implícita a través del contexto en el que aparece el elemento en el programa fuente. Por ende una gestión adecuada y eficaz de la tabla de símbolos es muy importante ya que su manipulación consume gran parte del tiempo de compilación.
Identificadores.
Nombre del elemento: EL identificador puede almacenarse limitando o no la longitud del mismo. Puede almacenarse con un límite empleando un tamaño máximo fijo para cada nombre, se puede aumentar la velocidad de creación y manipulación, pero a costa de limitar la longitud de los nombres en unos casos y desperdiciar espacio en la mayoría. El método alternativo consiste en habilitar la memoria que necesitemos en cada caso para guardar el nombre (esto depende del lenguaje). Tipo del elemento: Cuando se almacenan variables, resulta fundamental conocer el tipo de datos a que pertenece cada una de ellas, tanto si es primitivo como si no, con objeto de poder controlar que el uso que se hace de tales variables es coherente con el tipo con que fueron declaradas. Dirección de memoria en que se almacenará su valor en tiempo de ejecución: Esta dirección es necesaria, porque las instrucciones que referencian a una variable deben saber dónde encontrar el valor de esa variable en tiempo de ejecución con objeto de poder generar código máquina, tanto si se trata de variables globales como de locales. Valor del elemento: Cuando se trabaja con intérpretes sencillos, y dado que en un intérprete se solapan los tiempos de compilación y ejecución, puede resultar más fácil gestionar las variables si almacenamos sus valores en la tabla de símbolos. En un compilador, no obstante, la tabla de símbolos no almacena nunca el valor. Número de dimensiones: Si la variable a almacenar es un array, también pueden almacenarse sus dimensiones. Aunque esta información puede extraerse de la estructura de tipos, se puede indicar explícitamente para un control más eficiente. Tipos de los parámetros formales: Si el identificador a almacenar pertenece a una función o procedimiento, es necesario almacenar los tipos de los parámetros formales para controlar que toda invocación a esta función sea hecha con parámetros reales coherentes. El tipo de retorno también se almacena como tipo del elemento. Otra información: Con objeto de obtener resúmenes estadísticos e información, puede resultar interesante almacenar otros datos: números de línea en los que se ha usado un identificador, número de línea en que se declaró, tamaño del registro de activación, si es una variable global o local, en qué función fue declarada si es local, etc.
OPERACIONES BASICAS EN UNA T.D.S.
Cont. Operaciones básicas en una T.D.S.
Generación de tabla de direcciones:
Gramática: Una gramática con atributos es una gramática de contexto libre cuyos símbolos pueden tener asociados atributos y las producciones pueden tener asociadas reglas de evaluación de los atributos. Los atributos a mencionar son dos: 1) Atributo asociado: si b está asociado con algún símbolo de a. Las reglas de evaluación se realizan cuando se aplican reducciones en el análisis sintáctico. Dentro de los requisitos de evaluación los atributos deben definirse en función de los atributos asociados con los símbolos gramaticales a su derecha y realizar un análisis ascendente. 2) Atributo sintetizado: si b está asociado con el símbolo no terminal A. Su evaluación depende de los atributos asociados con los símbolos precedentes en la derivación. Como requisito es realizar un análisis descendente. Cuando aparecen definidos atributos sintetizados y heredados, es necesario establecer un ORDEN DE EVALUACION DE LOS ATRIBUTOS, para ello se utilizan los grafos de dependencia estos están construidos por nodos y arcos, cada uno de ellos tiene algún método de evaluación de las reglas semánticas; por ejemplo el nodo está compuesto por uno método de evaluación que es árbol de análisis dice que para cada entrada se construye el árbol sintáctico. Y en arco basado en reglas semánticas dependiendo de estas (atributos heredados o sintetizados) se establece el orden de evaluación. Comprobaciones semánticas: Estáticas: las comprobaciones sintácticas y semánticas. Dinámicas: realizadas en tiempo de ejecución. Semánticas: De tipo: operando en las expresiones De flujo de control: puntos de salida y entrada. De unicidad: verifica la presencia de símbolos de forma única. Relación de nombres. Un mismo nombre puede aparecer más de una vez. Expresiones de tipo: Tipos básicos: boolean, char, integer, real,........ Nombre de tipos
Conclusiones
La compilación es más que la simple traducción de un lenguaje a otro; es un proceso intrincado que requiere una atención meticulosa a los detalles semánticos y sintácticos del código fuente. La Pila Semántica, el Esquema de Traducción, la Tabla de Símbolos y la Generación de Direcciones son los pilares que sostienen la integridad de este proceso. A través de su interacción sinérgica, estos componentes permiten que los compiladores realicen su tarea crítica: convertir ideas abstractas en instrucciones concretas que las computadoras pueden comprender y ejecutar eficientemente, abriendo así las puertas a la innovación y el progreso tecnológico.
bibliografias
Jurado Málaga, E. (2008). Teoría de autómatas y lenguajes formales. Universidad de Extremadura. Servicio de Publicaciones. Recuperado de https://dehesa.unex.es/flexpaper/template.html?path=https://dehesa.unex.es/bitstream/10662/2367/1/978-84-691-6345-0.pdf#page=1
referencias
http://www.lcc.uma.es/~galvez/ftp/libros/Compiladores.pdf
https://enlinea.zacatecas.tecnm.mx/pluginfile.php/10834/mod_resource/content/1/1.5%20Esquemas%20de%20Traduccion.pdf
https://enlinea.zacatecas.tecnm.mx/pluginfile.php/10833/mod_resource/content/1/1.4%20Pila%20Semantica%20en%20un%20Analizador%20Sintactico.pdf
¡Recuerda publicar!
¿Sabías que... El 90% de la información que asimilamos nos llega a través de la vista? Los recursos visuales son de gran ayuda para reforzar tus clases: imágenes, ilustraciones, gifs, vídeos… No solo porque permanecen en la memoria, sino también porque son más atractivos y más fáciles de comprender.
Truquito: La interactividad es la pieza clave para captar el interés y la atención de tus estudiantes.Un genially es interactivo porque tu grupo explora y se relaciona con él.
Con esta función... Puedes añadir un contenido adicional que emocione al cerebro de tu alumnado: vídeos, imágenes, enlaces, interactividad... ¡Lo que tú quieras!
Pila semántica, Esquema de traducción, Generación de tablas de símbolo
Carlos Emmanuel Carrasco Zavala
Created on March 27, 2024
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Vaporwave presentation
View
Animated Sketch Presentation
View
Memories Presentation
View
Pechakucha Presentation
View
Decades Presentation
View
Color and Shapes Presentation
View
Historical Presentation
Explore all templates
Transcript
Pila semántica
Esquema de traducción
Generación de la tabla de símbolo y de direcciones.
Universidad Autónoma de Chiapas | Campus 01 | Facultad de contaduría y administración.
Docente: Gutiérrez Alfaro Luis, Dr. Materia: Compiladores. Nombre del alumno (s): • Carrasco Zavala Carlos Emmanuel | A210731. Semestre: 6° | Grupo: “M”. Actividad 3.2 | AP. Número de Actividad: Investigar .- Pila semántica, Esquema de traducción, Generación de tablas de símbolos y de direcciones. Unidad 3 Tuxtla Gutiérrez, Chiapas; a 28 de Marzo del 2024
Introducción
En el mundo de la informática, la compilación de programas es un proceso fundamental que transforma el código fuente escrito en un lenguaje de programación a un lenguaje que la máquina puede ejecutar. Dentro de este proceso, existen componentes críticos que aseguran la correcta interpretación y ejecución del código. Estos incluyen la Pila Semántica en un analizador sintáctico, el Esquema de Traducción, la Generación de la Tabla de Símbolos y la Generación de Direcciones. Cada uno de estos elementos desempeña un papel único y esencial en la traducción del código fuente, garantizando que el programa final funcione como se espera.
Pila
PILA Estructura de datos que se usa en programación para simplificar ciertas operaciones.
Push Pop LIFO TOS
Push Pop LIFO TOS
+info
Arrays (Listas enlazadas)
Una colección de datos a los que se puede acceder mediante un extremo, que se conoce generalmente como tope. Nos permiten organizar nuestros datos de manera ordenada en la memoria de la computadora. Imaginátelo así: cada elemento tiene su propio casillero, y podés acceder directamente a él sin perder tiempo.
+info
Pila semántica en un analizador sintáctico
El análisis semántico usa como entrada el árbol sintáctico para comprobar restricciones de tipo y otras limitaciones semánticas y preparar la generación de código. Para que se usa la pila ? Para contener la información semántica asociada a los operandos (y operadores) en forma de registros semánticos tomando en cuenta las reglas semánticas (conj. De normas y especificaciones que definen al lenguaje). Conversiones implícitas
Ejemplo del uso de pila semántica
SI SE TIENE LA EXPRESION ((1+2)*4)+3 1. Generar el árbol de análisis sintáctico (árbol de la expresión) 2. Ejemplificar el uso de la pila semántica y evaluar la expresión.
Ejemplo de pila semántica
Una vez que se tiene un A.A.S. se debe guardar todo en la pila para realizar posteriormente su “evaluación” (de ser necesario EQ y/o CONV semánticas) y encontrar posibles errores semánticos. A.A.S pila opciones a) Recorrido IDR o b) en su defecto RID.
Evaluación de la “pila semántica” (IDR)
CRITERIOS: SI LA PILA FUE CREADA CON IDR › Para evaluar la expresión, se deben tener siempre 1 Operador y 2 Operando (1 Signo y 2 valores), en caso de no ser así, recorrer la pila hasta cumplir la condición, actualizar la pila y usar en forma recursiva la misma regla. Hasta dejar la pila vacía.
Evaluación de la “pila semántica” (RID)
CRITERIOS: SI FUE CREADA CON RID › Para evaluar la expresión, se deben tener siempre 2 Operandos y 1 Operador (2 valores y 1 signo), en caso de no ser así, recorrer la pila hasta cumplir la condición, actualizar la pila y usar en forma recursiva la misma regla. Hasta dejar la pila vacía.
+info
ESQUEMAS DE TRADUCCIÓN
Es una Gramática independiente del contexto en la que se asocian atributos con los símbolos gramaticales y se insertan acciones semánticas encerradas entre las llaves { } dentro de los lados derechos de las producciones. - Son una notación complementaria a las definiciones dirigidas por la sintaxis. - Consiste en una gramática incontextual con fragmentos de programas insertados en medio del cuerpo de las producciones. (Los fragmentos se llaman acciones semánticas).
REQUISITO PARA HACER UN ESQUEMA DE tRADUCCION
Conocer el lenguaje -----> Símbolos gramaticales ------> Acciones semánticas ------> Reglas
Conocer el Lenguaje: Entender la sintaxis y semántica del lenguaje fuente para poder definir las reglas de traducción adecuadas. Símbolos Gramaticales: Identificar los símbolos gramaticales que formarán parte de la gramática del lenguaje. Acciones Semánticas: Definir las acciones semánticas que se ejecutarán durante el proceso de traducción. Estas acciones están asociadas con las reglas gramaticales y se encierran entre llaves {}. Reglas: Establecer las reglas de traducción que guiarán la conversión del lenguaje fuente al lenguaje objetivo.
+info
PROCESO PARA GENERAR/USAR UN ESQUEMA DE TRADUCCIÓN
• Un esquema de traducción dirigido por sintaxis se puede implementar construyendo el árbol de análisis sintáctico y luego realizar un recorrido en preorden del árbol ejecutando las acciones semánticas. a) Construir el árbol de análisis sintáctico ignorando las acciones semánticas. b) Adicionar nuevos hijos a cada símbolo de la parte izquierda como nuevos hijos que contienen las acciones semánticas en el punto donde ellas se deben realizar c) Recorrer en preorden el árbol de análisis sintáctico ejecutando las acciones.
Generación de una tabla de símbolos.
Una tabla de símbolos es una estructura de datos que almacena toda la información de los identificadores del lenguaje fuente y tiene como 2 objetivos principales: 1. Efectuar chequeos semánticos. 2. Facilitar la generación de código. Esta estructura permanece en memoria sólo en tiempo de compilación, no de ejecución, excepto en aquellos casos en que se compila con opciones de depuración. La Tabla de símbolos almacena los atributos referentes a las variables, como el nombre, tipo, dirección de localización en memoria, tamaño, etc. Y también información sobre cualquier identificador como los tipos de datos creados. Los atributos se obtienen unas veces directamente del análisis del programa fuente, es decir, están en forma explícita (por ejemplo en la sección de declaraciones del programa fuente) y otras veces los atributos se obtienen de forma implícita a través del contexto en el que aparece el elemento en el programa fuente. Por ende una gestión adecuada y eficaz de la tabla de símbolos es muy importante ya que su manipulación consume gran parte del tiempo de compilación.
Identificadores.
Nombre del elemento: EL identificador puede almacenarse limitando o no la longitud del mismo. Puede almacenarse con un límite empleando un tamaño máximo fijo para cada nombre, se puede aumentar la velocidad de creación y manipulación, pero a costa de limitar la longitud de los nombres en unos casos y desperdiciar espacio en la mayoría. El método alternativo consiste en habilitar la memoria que necesitemos en cada caso para guardar el nombre (esto depende del lenguaje). Tipo del elemento: Cuando se almacenan variables, resulta fundamental conocer el tipo de datos a que pertenece cada una de ellas, tanto si es primitivo como si no, con objeto de poder controlar que el uso que se hace de tales variables es coherente con el tipo con que fueron declaradas. Dirección de memoria en que se almacenará su valor en tiempo de ejecución: Esta dirección es necesaria, porque las instrucciones que referencian a una variable deben saber dónde encontrar el valor de esa variable en tiempo de ejecución con objeto de poder generar código máquina, tanto si se trata de variables globales como de locales. Valor del elemento: Cuando se trabaja con intérpretes sencillos, y dado que en un intérprete se solapan los tiempos de compilación y ejecución, puede resultar más fácil gestionar las variables si almacenamos sus valores en la tabla de símbolos. En un compilador, no obstante, la tabla de símbolos no almacena nunca el valor. Número de dimensiones: Si la variable a almacenar es un array, también pueden almacenarse sus dimensiones. Aunque esta información puede extraerse de la estructura de tipos, se puede indicar explícitamente para un control más eficiente. Tipos de los parámetros formales: Si el identificador a almacenar pertenece a una función o procedimiento, es necesario almacenar los tipos de los parámetros formales para controlar que toda invocación a esta función sea hecha con parámetros reales coherentes. El tipo de retorno también se almacena como tipo del elemento. Otra información: Con objeto de obtener resúmenes estadísticos e información, puede resultar interesante almacenar otros datos: números de línea en los que se ha usado un identificador, número de línea en que se declaró, tamaño del registro de activación, si es una variable global o local, en qué función fue declarada si es local, etc.
OPERACIONES BASICAS EN UNA T.D.S.
Cont. Operaciones básicas en una T.D.S.
Generación de tabla de direcciones:
Gramática: Una gramática con atributos es una gramática de contexto libre cuyos símbolos pueden tener asociados atributos y las producciones pueden tener asociadas reglas de evaluación de los atributos. Los atributos a mencionar son dos: 1) Atributo asociado: si b está asociado con algún símbolo de a. Las reglas de evaluación se realizan cuando se aplican reducciones en el análisis sintáctico. Dentro de los requisitos de evaluación los atributos deben definirse en función de los atributos asociados con los símbolos gramaticales a su derecha y realizar un análisis ascendente. 2) Atributo sintetizado: si b está asociado con el símbolo no terminal A. Su evaluación depende de los atributos asociados con los símbolos precedentes en la derivación. Como requisito es realizar un análisis descendente. Cuando aparecen definidos atributos sintetizados y heredados, es necesario establecer un ORDEN DE EVALUACION DE LOS ATRIBUTOS, para ello se utilizan los grafos de dependencia estos están construidos por nodos y arcos, cada uno de ellos tiene algún método de evaluación de las reglas semánticas; por ejemplo el nodo está compuesto por uno método de evaluación que es árbol de análisis dice que para cada entrada se construye el árbol sintáctico. Y en arco basado en reglas semánticas dependiendo de estas (atributos heredados o sintetizados) se establece el orden de evaluación. Comprobaciones semánticas: Estáticas: las comprobaciones sintácticas y semánticas. Dinámicas: realizadas en tiempo de ejecución. Semánticas: De tipo: operando en las expresiones De flujo de control: puntos de salida y entrada. De unicidad: verifica la presencia de símbolos de forma única. Relación de nombres. Un mismo nombre puede aparecer más de una vez. Expresiones de tipo: Tipos básicos: boolean, char, integer, real,........ Nombre de tipos
Conclusiones
La compilación es más que la simple traducción de un lenguaje a otro; es un proceso intrincado que requiere una atención meticulosa a los detalles semánticos y sintácticos del código fuente. La Pila Semántica, el Esquema de Traducción, la Tabla de Símbolos y la Generación de Direcciones son los pilares que sostienen la integridad de este proceso. A través de su interacción sinérgica, estos componentes permiten que los compiladores realicen su tarea crítica: convertir ideas abstractas en instrucciones concretas que las computadoras pueden comprender y ejecutar eficientemente, abriendo así las puertas a la innovación y el progreso tecnológico.
bibliografias
Jurado Málaga, E. (2008). Teoría de autómatas y lenguajes formales. Universidad de Extremadura. Servicio de Publicaciones. Recuperado de https://dehesa.unex.es/flexpaper/template.html?path=https://dehesa.unex.es/bitstream/10662/2367/1/978-84-691-6345-0.pdf#page=1
referencias
http://www.lcc.uma.es/~galvez/ftp/libros/Compiladores.pdf
https://enlinea.zacatecas.tecnm.mx/pluginfile.php/10834/mod_resource/content/1/1.5%20Esquemas%20de%20Traduccion.pdf
https://enlinea.zacatecas.tecnm.mx/pluginfile.php/10833/mod_resource/content/1/1.4%20Pila%20Semantica%20en%20un%20Analizador%20Sintactico.pdf
¡Recuerda publicar!
¿Sabías que... El 90% de la información que asimilamos nos llega a través de la vista? Los recursos visuales son de gran ayuda para reforzar tus clases: imágenes, ilustraciones, gifs, vídeos… No solo porque permanecen en la memoria, sino también porque son más atractivos y más fáciles de comprender.
Truquito: La interactividad es la pieza clave para captar el interés y la atención de tus estudiantes.Un genially es interactivo porque tu grupo explora y se relaciona con él.
Con esta función... Puedes añadir un contenido adicional que emocione al cerebro de tu alumnado: vídeos, imágenes, enlaces, interactividad... ¡Lo que tú quieras!