SlideShare una empresa de Scribd logo
1 de 20
Ángel Antonio Carvajal C. Jesús Antonio Hoyos Perdomo COMPILADOR SENCILLO DE UNA PASADA
COMPILADOR SENCILLO DE UNA PASADA Examina el código fuente una vez, generando el código o programa objeto.
ANALISIS LEXICO ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Los espacios en blanco que separan los caracteres de estos componentes léxicos normalmente se eliminan durante el análisis léxico. La fase de análisis léxico lee los caracteres en el programa fuente y los agrupa en una cadena de componentes léxico en los que cada componente representa una secuencia lógicamente coherente de caracteres, como un identificador, una palabra clave (if, While, etc), un carácter de puntuación, o un operador de varios caracteres, como  := . La secuencia de caracteres que forma un componente léxico se denomina l exema  del componente  A ciertos componentes léxicos se les agregara un “valor léxico”. Así, cuando se encuentra un identificador como  velocidad,  el analizador léxico no solo genera un componente léxico, por ejemplo:  id,  sino que también introduce el lexema  velocidad  en la tabla de símbolos, si aun no estaba allí. El valor léxico asociado con esta aparición de  id  señala la entrada de la tabla de símbolos correspondiente a  velocidad.
En esta sección, se usaran id 1 , id 2  e  id 3 , para posición, inicial y velocidad, respectivamente, para enfatizar que la representación interna de un identificador es diferente de la secuencia de caracteres que forman el identificador. Por tanto, la representación  Posición:=  inicial  +  velocidad  *  60  después del análisis léxico queda sugerida por:  id 1  := id 2  +  id 3  *  60 Se deberían construir componentes léxicos para el operador de varios caracteres := y el numero 60, para reflejar su representación interna. En  id 1  := id 2  +  id 3  *  60  ya se introdujeron las fases segunda y tercera: los análisis sintáctico y semántico.
El análisis sintáctico impone una estructura jerárquica a la cadena de componentes léxicos, que se representara por medio de arboles sintácticos así:   Id 1 Id 2 Id 3 60 := + * a)
Una estructura de datos típica para el árbol sería la siguiente: := + * 1 Id 2 Id 3 Id 60 num
En la que un nodo interior es un registro con un campo para el operador y dos campos que contienen apuntadores a los registros de los hijos izquierdo y derecho. Una hoja es un registro con dos o mas campos, una para identificar el componente léxico de la hoja, y los otros para registrar información sobre el componente léxico. Se puede tener información adicional sobre las construcciones del lenguaje añadiendo mas campos a los registros de los nodos.
ANALISIS SINTACTICO También llamado  análisis jerárquico.  Este implica agrupar los componentes léxicos del programa fuente en frases gramaticales que el compilador utiliza para sintetizar la salida. Por lo general las frases gramaticales del programa fuente se representan mediante un árbol de análisis sintáctico como el de la siguiente figura:
Proposición de asignación Expresión Expresión Expresión Expresión Identificador Identificador Posición Inicial Velocidad 60 := + * Expresión Identificador Numero
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Las reglas a)  y  b)  son reglas básicas, mientras que la regla  c)  define expresiones en función de operadores aplicados a otras expresiones. Así, por la regla  a), inicial y velocidad son expresiones. Por la regla  b),  60 es una expresión, mientras que por la regla  c), primero podemos inferir que velocidad * 60 es una expresión, y finalmente, que inicial + velocidad * 60 también es una expresión.  De manera similar, muchos lenguajes definen recursivamente las proposiciones mediante reglas como:   Si Identificador 1  es un identificador y Expresion 1  es una expresión, entonces… Identificador 1  :=  Expresion 2  es una proposición Si Expresion 1  es una expresión y Proposicion 2  es una proposición, entonces… While ( expresión 1  ) do proposicion 2   If ( expresión 1  ) then proposicion 2  son proposiciones.
La división entre análisis léxico y análisis sintáctico es algo arbitraria. Generalmente se elige una división que simplifique la tarea completa del análisis. Un factor para determinar la división es si una construcción del lenguaje fuente es inherentemente recursiva o no. Las construcciones léxicas no requieren recursión, mientras que las construcciones sintácticas suelen requerirla. Las gramáticas independientes del contexto son una formalización de reglas recursivas que se pueden usar para guiar el análisis sintáctico.
Por ejemplo, no se requiere recursión para reconocer los identificadores, que suelen ser cadenas de letras y dígitos que comienzan con una letra. Normalmente, se reconocen los identificadores por el simple examen del flujo de entrada, esperando hasta encontrar un carácter que no sea ni letra ni digito, y agrupando después todas las letras y dígitos encontrados hasta ese punto en un componente léxico identificador. Los caracteres asi agrupados se registran en una tabla, llamada  tabla de símbolos,  y se retiran de la entrada, para que pueda empezar el procesamiento del siguiente elemento léxico.
Por otra parte, esta clase de análisis léxico lineal no es suficientemente poderoso para analizar expresiones o proposiciones. Por ejemplo, no podemos emparejar de manera apropiada los paréntesis de las expresiones, o las palabras begin y end en proposiciones sin imponer alguna clase de estructura jerárquica o de anidamiento a la entrada.
El árbol de análisis sintáctico de la figura anterior describe la estructura sintáctica de la entrada. Una representación interna más común de esta estructura es la que da el árbol sintáctico de la figura  a) Posición Inicial Velocidad 60 := + * a) Entareal Posición Inicial Velocidad 60 := + *
TABLA DE SIMBOLOS 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 tipos, etc. Esta información se almacena en una estructura de datos interna conocida como tabla de símbolos. El compilador debe desarrollar una serie de funciones relativas a la manipulación de esta tabla como insertar un nuevo elemento en ella, consultar la información relacionada con un símbolo, borrar un elemento, etc. Como se tiene que acceder mucho a la tabla de símbolos los accesos deben ser lo más rápidos posible para que la compilación sea eficiente.
GRAMATICA TIPO CERO Una cadena de componentes léxicos es una secuencia de cero o más componentes léxicos. Si la cadena posee cero componentes entonces se dice que es una cadena  vacía  y se escribe ε.
 
 

Más contenido relacionado

La actualidad más candente

Cap5
Cap5Cap5
Cap5
CJAO
 
Tabladesmbolos 101103230525-phpapp02
Tabladesmbolos 101103230525-phpapp02Tabladesmbolos 101103230525-phpapp02
Tabladesmbolos 101103230525-phpapp02
Javier Alva
 
Incorporacion De Una Tabla De Simbolos Compiladores
Incorporacion De Una Tabla De Simbolos CompiladoresIncorporacion De Una Tabla De Simbolos Compiladores
Incorporacion De Una Tabla De Simbolos Compiladores
guest5fa3fc
 
Introducción a los compiladores - Parte 2
Introducción a los compiladores - Parte 2Introducción a los compiladores - Parte 2
Introducción a los compiladores - Parte 2
Universidad
 

La actualidad más candente (19)

Compiladores1
Compiladores1Compiladores1
Compiladores1
 
Compiladores, Analisis Lexico Conceptos
Compiladores, Analisis Lexico ConceptosCompiladores, Analisis Lexico Conceptos
Compiladores, Analisis Lexico Conceptos
 
Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores
Tabla SiMbolos, victor mamani catachura, boreasH,CompiladoresTabla SiMbolos, victor mamani catachura, boreasH,Compiladores
Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores
 
Cap5
Cap5Cap5
Cap5
 
Apuntes compiladores
Apuntes compiladoresApuntes compiladores
Apuntes compiladores
 
COMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de SimbolosCOMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de Simbolos
 
Tabla simbolos
Tabla simbolosTabla simbolos
Tabla simbolos
 
Tabladesmbolos 101103230525-phpapp02
Tabladesmbolos 101103230525-phpapp02Tabladesmbolos 101103230525-phpapp02
Tabladesmbolos 101103230525-phpapp02
 
TABLA DE SÍMBOLOS
TABLA DE SÍMBOLOSTABLA DE SÍMBOLOS
TABLA DE SÍMBOLOS
 
Administrador de Tabla de Símbolos
Administrador de Tabla de SímbolosAdministrador de Tabla de Símbolos
Administrador de Tabla de Símbolos
 
Ud2 el modelo relacional
Ud2  el modelo relacionalUd2  el modelo relacional
Ud2 el modelo relacional
 
Claselexico
ClaselexicoClaselexico
Claselexico
 
Incorporacion De Una Tabla De Simbolos Compiladores
Incorporacion De Una Tabla De Simbolos CompiladoresIncorporacion De Una Tabla De Simbolos Compiladores
Incorporacion De Una Tabla De Simbolos Compiladores
 
Introducción a los compiladores - Parte 2
Introducción a los compiladores - Parte 2Introducción a los compiladores - Parte 2
Introducción a los compiladores - Parte 2
 
Representaciones estructurales
Representaciones estructuralesRepresentaciones estructurales
Representaciones estructurales
 
1expo yeisland12
1expo yeisland121expo yeisland12
1expo yeisland12
 
Maria reyes
Maria reyesMaria reyes
Maria reyes
 
Lex
LexLex
Lex
 
Presentación1
Presentación1Presentación1
Presentación1
 

Destacado (6)

Unidad1 2 Lenguajes y automatas
Unidad1 2  Lenguajes y automatasUnidad1 2  Lenguajes y automatas
Unidad1 2 Lenguajes y automatas
 
Traductores de lenguaje
Traductores de lenguajeTraductores de lenguaje
Traductores de lenguaje
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretador
 
Clasificacion de Interpretes
Clasificacion de InterpretesClasificacion de Interpretes
Clasificacion de Interpretes
 
Procesadores de Lenguajes II
Procesadores de Lenguajes IIProcesadores de Lenguajes II
Procesadores de Lenguajes II
 
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
 

Similar a Compilador Exp

Compiladores - Incorporacion de una Tabla de Simbolos Compiladores
Compiladores - Incorporacion de una Tabla de Simbolos CompiladoresCompiladores - Incorporacion de una Tabla de Simbolos Compiladores
Compiladores - Incorporacion de una Tabla de Simbolos Compiladores
jose haar
 
Actividad 2 programacion de sistemas
Actividad 2 programacion de sistemasActividad 2 programacion de sistemas
Actividad 2 programacion de sistemas
JESSIKADG86
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2
perlallamas
 
Análisis léxico y análisis sintáctico
Análisis léxico y análisis sintácticoAnálisis léxico y análisis sintáctico
Análisis léxico y análisis sintáctico
angiepao1717
 
Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico
maryr_
 

Similar a Compilador Exp (20)

Compiladores - Incorporacion de una Tabla de Simbolos Compiladores
Compiladores - Incorporacion de una Tabla de Simbolos CompiladoresCompiladores - Incorporacion de una Tabla de Simbolos Compiladores
Compiladores - Incorporacion de una Tabla de Simbolos Compiladores
 
Presentación 2014 profe gabriel
Presentación 2014 profe gabrielPresentación 2014 profe gabriel
Presentación 2014 profe gabriel
 
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Taller analisis semantico
Taller analisis semanticoTaller analisis semantico
Taller analisis semantico
 
Compilador2
Compilador2Compilador2
Compilador2
 
Unidad4 analisis-semantico
Unidad4 analisis-semanticoUnidad4 analisis-semantico
Unidad4 analisis-semantico
 
Analizador léxico
Analizador léxicoAnalizador léxico
Analizador léxico
 
Analizador sintáctico
Analizador sintácticoAnalizador sintáctico
Analizador sintáctico
 
Curso prog sist
Curso prog sistCurso prog sist
Curso prog sist
 
Actividad 2 programacion de sistemas
Actividad 2 programacion de sistemasActividad 2 programacion de sistemas
Actividad 2 programacion de sistemas
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2
 
Datos y algoritmos
Datos y algoritmosDatos y algoritmos
Datos y algoritmos
 
Clase6 conceptos del analisis lexico
Clase6 conceptos del analisis lexicoClase6 conceptos del analisis lexico
Clase6 conceptos del analisis lexico
 
Análisis léxico y análisis sintáctico
Análisis léxico y análisis sintácticoAnálisis léxico y análisis sintáctico
Análisis léxico y análisis sintáctico
 
Compilacion parcial
Compilacion parcialCompilacion parcial
Compilacion parcial
 
Curso prog sist
Curso prog sistCurso prog sist
Curso prog sist
 
Analisis lexico automatas i
Analisis lexico automatas iAnalisis lexico automatas i
Analisis lexico automatas i
 
Estructura general del programa
Estructura general del programaEstructura general del programa
Estructura general del programa
 
Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (12)

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 

Compilador Exp

  • 1. Ángel Antonio Carvajal C. Jesús Antonio Hoyos Perdomo COMPILADOR SENCILLO DE UNA PASADA
  • 2. COMPILADOR SENCILLO DE UNA PASADA Examina el código fuente una vez, generando el código o programa objeto.
  • 3.
  • 4. Los espacios en blanco que separan los caracteres de estos componentes léxicos normalmente se eliminan durante el análisis léxico. La fase de análisis léxico lee los caracteres en el programa fuente y los agrupa en una cadena de componentes léxico en los que cada componente representa una secuencia lógicamente coherente de caracteres, como un identificador, una palabra clave (if, While, etc), un carácter de puntuación, o un operador de varios caracteres, como := . La secuencia de caracteres que forma un componente léxico se denomina l exema del componente A ciertos componentes léxicos se les agregara un “valor léxico”. Así, cuando se encuentra un identificador como velocidad, el analizador léxico no solo genera un componente léxico, por ejemplo: id, sino que también introduce el lexema velocidad en la tabla de símbolos, si aun no estaba allí. El valor léxico asociado con esta aparición de id señala la entrada de la tabla de símbolos correspondiente a velocidad.
  • 5. En esta sección, se usaran id 1 , id 2 e id 3 , para posición, inicial y velocidad, respectivamente, para enfatizar que la representación interna de un identificador es diferente de la secuencia de caracteres que forman el identificador. Por tanto, la representación Posición:= inicial + velocidad * 60 después del análisis léxico queda sugerida por: id 1 := id 2 + id 3 * 60 Se deberían construir componentes léxicos para el operador de varios caracteres := y el numero 60, para reflejar su representación interna. En id 1 := id 2 + id 3 * 60 ya se introdujeron las fases segunda y tercera: los análisis sintáctico y semántico.
  • 6. El análisis sintáctico impone una estructura jerárquica a la cadena de componentes léxicos, que se representara por medio de arboles sintácticos así:   Id 1 Id 2 Id 3 60 := + * a)
  • 7. Una estructura de datos típica para el árbol sería la siguiente: := + * 1 Id 2 Id 3 Id 60 num
  • 8. En la que un nodo interior es un registro con un campo para el operador y dos campos que contienen apuntadores a los registros de los hijos izquierdo y derecho. Una hoja es un registro con dos o mas campos, una para identificar el componente léxico de la hoja, y los otros para registrar información sobre el componente léxico. Se puede tener información adicional sobre las construcciones del lenguaje añadiendo mas campos a los registros de los nodos.
  • 9. ANALISIS SINTACTICO También llamado análisis jerárquico. Este implica agrupar los componentes léxicos del programa fuente en frases gramaticales que el compilador utiliza para sintetizar la salida. Por lo general las frases gramaticales del programa fuente se representan mediante un árbol de análisis sintáctico como el de la siguiente figura:
  • 10. Proposición de asignación Expresión Expresión Expresión Expresión Identificador Identificador Posición Inicial Velocidad 60 := + * Expresión Identificador Numero
  • 11.
  • 12. Las reglas a) y b) son reglas básicas, mientras que la regla c) define expresiones en función de operadores aplicados a otras expresiones. Así, por la regla a), inicial y velocidad son expresiones. Por la regla b), 60 es una expresión, mientras que por la regla c), primero podemos inferir que velocidad * 60 es una expresión, y finalmente, que inicial + velocidad * 60 también es una expresión. De manera similar, muchos lenguajes definen recursivamente las proposiciones mediante reglas como:   Si Identificador 1 es un identificador y Expresion 1 es una expresión, entonces… Identificador 1 := Expresion 2 es una proposición Si Expresion 1 es una expresión y Proposicion 2 es una proposición, entonces… While ( expresión 1 ) do proposicion 2 If ( expresión 1 ) then proposicion 2 son proposiciones.
  • 13. La división entre análisis léxico y análisis sintáctico es algo arbitraria. Generalmente se elige una división que simplifique la tarea completa del análisis. Un factor para determinar la división es si una construcción del lenguaje fuente es inherentemente recursiva o no. Las construcciones léxicas no requieren recursión, mientras que las construcciones sintácticas suelen requerirla. Las gramáticas independientes del contexto son una formalización de reglas recursivas que se pueden usar para guiar el análisis sintáctico.
  • 14. Por ejemplo, no se requiere recursión para reconocer los identificadores, que suelen ser cadenas de letras y dígitos que comienzan con una letra. Normalmente, se reconocen los identificadores por el simple examen del flujo de entrada, esperando hasta encontrar un carácter que no sea ni letra ni digito, y agrupando después todas las letras y dígitos encontrados hasta ese punto en un componente léxico identificador. Los caracteres asi agrupados se registran en una tabla, llamada tabla de símbolos, y se retiran de la entrada, para que pueda empezar el procesamiento del siguiente elemento léxico.
  • 15. Por otra parte, esta clase de análisis léxico lineal no es suficientemente poderoso para analizar expresiones o proposiciones. Por ejemplo, no podemos emparejar de manera apropiada los paréntesis de las expresiones, o las palabras begin y end en proposiciones sin imponer alguna clase de estructura jerárquica o de anidamiento a la entrada.
  • 16. El árbol de análisis sintáctico de la figura anterior describe la estructura sintáctica de la entrada. Una representación interna más común de esta estructura es la que da el árbol sintáctico de la figura a) Posición Inicial Velocidad 60 := + * a) Entareal Posición Inicial Velocidad 60 := + *
  • 17. TABLA DE SIMBOLOS 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 tipos, etc. Esta información se almacena en una estructura de datos interna conocida como tabla de símbolos. El compilador debe desarrollar una serie de funciones relativas a la manipulación de esta tabla como insertar un nuevo elemento en ella, consultar la información relacionada con un símbolo, borrar un elemento, etc. Como se tiene que acceder mucho a la tabla de símbolos los accesos deben ser lo más rápidos posible para que la compilación sea eficiente.
  • 18. GRAMATICA TIPO CERO Una cadena de componentes léxicos es una secuencia de cero o más componentes léxicos. Si la cadena posee cero componentes entonces se dice que es una cadena vacía y se escribe ε.
  • 19.  
  • 20.