Your SlideShare is downloading. ×
0
TABLA DE SIMBOLOS
TABLA DE SIMBOLOS
TABLA DE SIMBOLOS
TABLA DE SIMBOLOS
TABLA DE SIMBOLOS
TABLA DE SIMBOLOS
TABLA DE SIMBOLOS
TABLA DE SIMBOLOS
TABLA DE SIMBOLOS
TABLA DE SIMBOLOS
TABLA DE SIMBOLOS
TABLA DE SIMBOLOS
TABLA DE SIMBOLOS
TABLA DE SIMBOLOS
TABLA DE SIMBOLOS
TABLA DE SIMBOLOS
TABLA DE SIMBOLOS
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

TABLA DE SIMBOLOS

30,156

Published on

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
30,156
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
385
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Teoría de Autómatas y Compiladores
  • 2. <ul><li>La tabla de símbolos es una estructura de datos que nos permite realizar operaciones de inserción, búsqueda y eliminación de información en varias construcciones del lenguaje fuente, la cual es analizada por el compilador originándose un código objeto. </li></ul>
  • 3. <ul><li>Las principales operaciones de la tabla de símbolos las definimos así: </li></ul><ul><li>Inserción : Almacena información proporcionada por las declaraciones de nombre cuando estas son procesadas. </li></ul><ul><li>Búsqueda : Recupera la información asociada con un nombre cuando este se utiliza en una declaración o el código asociado. </li></ul>
  • 4. <ul><li>Eliminación : Elimina la información proporcionada por una declaración cuando esta ya no se aplica. </li></ul><ul><li>Ejemplo : Parte de procedimientos en programa fuente </li></ul>Datos(var1, var2) Si Se aplica la operación No Se procesa de nuevo La operación Datos(var1, var2) por Ser llamada de nuevo en la aplicación Se elimina de la tabla de símbolos La operación Datos(var1, var2) Ya que no se considera necesarios para procesos posteriores
  • 5. <ul><li>En las sintaxis anteriores, también se pueden emplear palabras reservadas como pueden ser los componentes léxico por ej: mod, div </li></ul><ul><li>Insertar (“div”, div); Insertar (“mod”, mod); </li></ul><ul><li>Cualquier llamada posterior busca(“div”) devuelve el componente léxico div, de modo que div no puede usarse como identificador o variable. </li></ul>
  • 6. <ul><li>En la siguiente tabla de símbolos de matriz para el almacenamiento de cadenas, una cadena fija de espacios no puede ser lo suficientemente grande para guardar un identificador muy largo, y puede ser innecesariamente grande para un identificador corto, donde se determina que al final de cada cadena se finaliza con un fin-de-cadena representado por FDC, y que no puede aparecer en los identificadores. </li></ul>
  • 7. MATRIZ TABLASIMB Matriz Lexemas d i v FDC m o d FDC i FDC Div Mod i
  • 8. <ul><li>La maquina tiene memorias independiente para las instrucciones y datos, y todas las operaciones aritméticas se realizan con los valores en una pila. Las instrucciones son bastantes limitadas y están comprendidas en las siguientes clases: </li></ul><ul><li>Aritmética, </li></ul><ul><li>Manipulación de la pila </li></ul>
  • 9. <ul><li>A continuación se simula la representación de una expresión en una pila. La evaluación se realiza de izq. A der. Insertando los operadores en la pila a medida que los encuentran asi: </li></ul><ul><li>La expresión --  1 3 + 5 </li></ul><ul><li>Insertar 1 en la pila </li></ul><ul><li>Insertar 3 en la pila </li></ul><ul><li>Sumar </li></ul><ul><li>Insertar 5 en la pila </li></ul><ul><li>Sumar los dos elementos de la cima, extraerlos e insertar en la pila el resultado 9 </li></ul>PILA ---------------------------------- 1 3 Operador aritmético 5 + (VALOR DE LA CIMA) 9
  • 10. <ul><li>El análisis gramatical es la tarea de determinar la sintaxis, o estructura de un programa. </li></ul><ul><li>Por esta razón también se le conoce como análisis sintáctico. La sintaxis de un lenguaje de programación por lo regular se determina mediante las reglas gramaticales de una gramática libre de contexto de manera similar como se determina mediante expresiones regulares la estructura léxica de los tokens. </li></ul>
  • 11. <ul><li>La tarea del analizador sintáctico es determinar </li></ul><ul><li>la estructura sintáctica de un programa a partir </li></ul><ul><li>de los tokens producidos por el analizador lexico </li></ul><ul><li>y, ya sea de manera explicita o implícita, construir </li></ul><ul><li>un árbol de análisis gramatical o árbol sintáctico </li></ul><ul><li>Que represente esta estructura. De este modo, </li></ul><ul><li>Se puede ver el analizador sintáctico como una </li></ul><ul><li>Funcion que toma su entrada la secuencia de </li></ul>
  • 12. <ul><li>Tokens producidos por el analizador léxico y que produce como su salida el árbol sintáctico. </li></ul><ul><li>Secuencia de tokens </li></ul><ul><li>Analizador sintáctico </li></ul><ul><li>Árbol sintáctico </li></ul><ul><li>La secuencia de tokens por lo regular no es un parámetro de entrada explicito pero el analizador sintáctico llama a un procedimiento del analizador léxico, como get token para obtener el siguiente token desde la entrada a medida que lo necesite durante el proceso de análisis sintáctico. De este modo, la etapa de análisis sintáctico del compilador se reduce a una llamada al analizador léxico de la manera : </li></ul>
  • 13. <ul><li>syntaxtree = parse (); </li></ul><ul><li>En un compilador de una sola pasada el analizador sintáctico incorpora todas las otras fases de un compilador incluyendo la generacion del codigo y no es necesario construir ningun arbol sintactico explicito (las mismas etapas del analizador sintactico representaran de manera implicita al arbol sintactico y por consiguiente una llamada. </li></ul><ul><li>parse(); </li></ul>
  • 14. <ul><li>Una gramática libre de contexto es una especificación para la estructura sintactica de un lenguaje de programación. Una especificación así es muy similar a la especificación de la estructura lexica de un lenguaje utilizando expresiones regulares, excepto que una gramática libre de contexto involucra reglas de recursividad. Como ejemplo de ejecución utilizaremos expresiones aritmeti </li></ul>
  • 15. <ul><li>Simples de enteros con operaciones de suma resta y multiplicación. Estas expresiones se pueden dar mediante la gramatica siguiente </li></ul><ul><li>exp — exp op exp /(exp)/ numero </li></ul><ul><li>op -- +/-/* </li></ul>
  • 16. Corresponde al árbol de análisis gramatical
  • 17.  

×