COMPILADOR
ES
COMPILADOR
ES
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.
Interfaz de la tabla de símbolos
 Las principales operaciones de la tabla de símbolos las
  definimos así:
 Inserción: Almacena información proporcionada por
  las declaraciones de nombre cuando estas son
  procesadas.
 Búsqueda: Recupera la información asociada con un
  nombre cuando este se utiliza en una declaración o el
  código asociado.
Eliminación: Elimina la información proporcionada por
  una declaración cuando esta ya no se aplica.
Ejemplo : Parte de procedimientos en programa fuente



                               Se procesa de nuevo
                               La operación Datos(var1, var2) por
                               Ser llamada de nuevo en la aplicación
                      Si
  Datos(var1, var2)   Se aplica la operación
                      No

                                       Se elimina de la tabla de símbolos
                                       La operación Datos(var1, var2)
                                       Ya que no se considera
                                       necesarios para procesos
                                       posteriores
Manejo de la palabra clave
              reservada
En las sintaxis anteriores, también se pueden
 emplear palabras reservadas como pueden ser los
 componentes léxico por ej: mod, div

Insertar (“div”, div);   Insertar (“mod”, mod);

Cualquier llamada posterior busca(“div”) devuelve el
 componente léxico div, de modo que div no puede
 usarse como identificador o variable.
Implantación de una tabla de
símbolos
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.
MATRIZ
                     TABLASIMB
                                         Div
                                         Mod
                                         i




d        i      v      FDC   m   o   d   FDC   i   FDC


    Matriz Lexemas
MAQUINA DE PILA ABSTRACTAS
 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:
 Aritmética,
 Manipulación de la pila
 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:
 La expresión -- 1 3 + 5
 Insertar 1 en la pila
                                                               PILA
 Insertar 3 en la pila                          ----------------------------------
                                                                  1
                                                                 3
 Sumar                                               Operador aritmético
                                                                 5
 Insertar 5 en la pila                            + (VALOR DE LA CIMA)
                                                                 9

 Sumar los dos elementos de la cima, extraerlos e insertar en la
  pila el resultado 9
GRAMATICAS LIBRES DE CONTEXTO
El análisis gramatical es la tarea de determinar la
  sintaxis, o estructura de un programa.
  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.
EL PROCESO DEL ANALISIS
                    SINTACTICO
La tarea del analizador sintáctico es determinar
la estructura sintáctica de un programa a partir
de los tokens producidos por el analizador lexico
y, ya sea de manera explicita o implícita, construir
un árbol de análisis gramatical o árbol sintáctico
Que represente esta estructura. De este modo,
Se puede ver el analizador sintáctico como una
Funcion que toma su entrada la secuencia de
Tokens producidos por el analizador léxico y que produce
 como su salida el árbol sintáctico.
Secuencia de tokens analizador sintáctico árbol sintáctico
 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 analisis sintactico. De este
 modo, la etapa de analisis sintactico del compilador se
 reduce a una llamada al anlizador lexico de la manera :
syntaxtree = parse ();
 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.
  parse();
GRAMATICAS LIBRES DE CONTEXTO
 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
 Simples de enteros con operaciones de suma resta y
  multiplicación. Estas expresiones se pueden dar mediante
  la gramatica siguiente
 exp — exp op exp /(exp)/ numero
 op -- +/-/*
ARBOLES GRAMATICALES Y
           ABSTRACTOS
Corresponde al árbol de análisis gramatical
ARBOL DE ANALISIS GRAMATICAL
PARA LA EXPRESION ARITMETICA
(34-3) * 42

Compilacion parcial

  • 1.
  • 2.
  • 3.
    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.
  • 4.
    Interfaz de latabla de símbolos  Las principales operaciones de la tabla de símbolos las definimos así:  Inserción: Almacena información proporcionada por las declaraciones de nombre cuando estas son procesadas.  Búsqueda: Recupera la información asociada con un nombre cuando este se utiliza en una declaración o el código asociado.
  • 5.
    Eliminación: Elimina lainformación proporcionada por una declaración cuando esta ya no se aplica. Ejemplo : Parte de procedimientos en programa fuente Se procesa de nuevo La operación Datos(var1, var2) por Ser llamada de nuevo en la aplicación Si Datos(var1, var2) Se aplica la operación No Se elimina de la tabla de símbolos La operación Datos(var1, var2) Ya que no se considera necesarios para procesos posteriores
  • 6.
    Manejo de lapalabra clave reservada En las sintaxis anteriores, también se pueden emplear palabras reservadas como pueden ser los componentes léxico por ej: mod, div Insertar (“div”, div); Insertar (“mod”, mod); Cualquier llamada posterior busca(“div”) devuelve el componente léxico div, de modo que div no puede usarse como identificador o variable.
  • 7.
    Implantación de unatabla de símbolos 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.
  • 8.
    MATRIZ TABLASIMB Div Mod i d i v FDC m o d FDC i FDC Matriz Lexemas
  • 9.
    MAQUINA DE PILAABSTRACTAS  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:  Aritmética,  Manipulación de la pila
  • 10.
     A continuaciónse 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:  La expresión -- 1 3 + 5  Insertar 1 en la pila PILA  Insertar 3 en la pila ---------------------------------- 1 3  Sumar Operador aritmético 5  Insertar 5 en la pila + (VALOR DE LA CIMA) 9  Sumar los dos elementos de la cima, extraerlos e insertar en la pila el resultado 9
  • 11.
    GRAMATICAS LIBRES DECONTEXTO El análisis gramatical es la tarea de determinar la sintaxis, o estructura de un programa. 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.
  • 12.
    EL PROCESO DELANALISIS SINTACTICO La tarea del analizador sintáctico es determinar la estructura sintáctica de un programa a partir de los tokens producidos por el analizador lexico y, ya sea de manera explicita o implícita, construir un árbol de análisis gramatical o árbol sintáctico Que represente esta estructura. De este modo, Se puede ver el analizador sintáctico como una Funcion que toma su entrada la secuencia de
  • 13.
    Tokens producidos porel analizador léxico y que produce como su salida el árbol sintáctico. Secuencia de tokens analizador sintáctico árbol sintáctico 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 analisis sintactico. De este modo, la etapa de analisis sintactico del compilador se reduce a una llamada al anlizador lexico de la manera :
  • 14.
    syntaxtree = parse(); 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. parse();
  • 15.
    GRAMATICAS LIBRES DECONTEXTO 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
  • 16.
     Simples deenteros con operaciones de suma resta y multiplicación. Estas expresiones se pueden dar mediante la gramatica siguiente  exp — exp op exp /(exp)/ numero  op -- +/-/*
  • 17.
    ARBOLES GRAMATICALES Y ABSTRACTOS Corresponde al árbol de análisis gramatical
  • 18.
    ARBOL DE ANALISISGRAMATICAL PARA LA EXPRESION ARITMETICA (34-3) * 42