SlideShare una empresa de Scribd logo
Funciones y Clasificación de los CompiladoresCapítulo 2Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.1
FuncionesUn compilador es:Un programa que lee un programa escrito en un lenguaje,El lenguaje fuente.Y lo traduce a un programa equivalente en otro lenguaje, El lenguaje objeto. Como parte importante de este proceso de traducción, el compilador informa a su usuario de la presencia de errores en el programa fuente.Para cada lenguaje de programación se requiere un compilador separado. El compilador traduce todo el programa antes de ejecutarlo. Los compiladores son programas de traducción insertados en la memoria por el sistema operativo para convertir programas de cómputo en pulsaciones electrónicas ejecutables (lenguaje de máquina). 2Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
Diversidad de CompiladoresA primera vista, la diversidad de compiladores puede parecer abrumadora. Hay miles de lenguajes fuente:Desde los lenguajes de programación tradicionales, como FORTRAN o Pascal, hasta los lenguajes especializados que han surgido virtualmente en todas las áreas de aplicación de la informática. Los lenguajes objeto son igualmente variados.Un lenguaje objeto puede ser otro lenguaje de programación o el lenguaje de máquina de cualquier computadora entre un microprocesador y una supercomputadora.  A pesar de existir una aparente complejidad por la clasificación de los compiladores, las tareas básicas que debe realizar cualquier compilador son esencialmente las mismas. Al comprender tales tareas, se pueden construir compiladores para una gran diversidad de lenguajes fuente y máquinas objeto utilizando las mismas técnicas básicas.3Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
Origen de los CompiladoresNuestro conocimiento sobre cómo organizar y escribir compiladores ha aumentado mucho desde que comenzaron a aparecer los primeros compiladores a principios de los años cincuenta. Es difícil dar una fecha exacta de la aparición del primer compilador, porque en un principio gran parte del trabajo de experimentación y aplicación se realizó de manera independiente por varios grupos. Gran parte de los primeros trabajos de compilación estaba relacionada con la traducción de fórmulas aritméticas a código de máquina.4Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
Técnicas SistemáticasEn la década de 1950, se consideró a los compiladores como programas notablemente difíciles de escribir. EL primer compilador de FORTRAN, por ejemplo, necesitó para su implantación de 18 años de trabajo en grupo (Backus y otros [1975]). Desde entonces, se han descubierto técnicas sistemáticas para manejar muchas de las importantes tareas que surgen en la compilación. También se han desarrollado buenos lenguajes de implantación, entornos de programación y herramientas de software. Con estos avances, puede hacerse un compilador real incluso como proyecto de estudio sobre diseño de compiladores.5Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
Partes de la CompilaciónEn la compilación hay dos partes: Análisis.La parte del análisis divide al programa fuente en sus elementos componentes y crea una representación intermedia. Durante el análisis se determina las operaciones que implica el programa fuente y se registra en una estructura jerárquica llamada árbol. Síntesis. De las dos partes, la síntesis es la que requiere las técnicas más especializadas. 6Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
Árbol SintácticoA menudo, se usa una clase especial de árbol llamado árbol sintáctico, donde cada nodo representa una operación y los hijos de un nodo son los argumentos de la operación. Por ejemplo, en la figura siguiente se muestra un árbol sintáctico para una proposición de asignación.Posición = inicial + velocidad * 607Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
Clasificación8Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
Compilador de Una Sola PasadaExamina el código fuente una vez.Generando el código o programa objeto.9Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
Compilador de Pasadas MúltiplesRequieren pasos intermedios para producir un código en otro lenguaje.Y una pasada final para producir y optimizar el código producido durante los pasos anteriores. 10Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
Compilador de OptimaciónLee un código fuente.Lo analiza.Descubre errores potenciales sin ejecutar el programa.11Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
Compiladores IncrementalesGeneran un código objeto instrucción por instrucción (en vez de hacerlo para todo el programa) cuando el usuario teclea cada orden individual. El otro tipo de compiladores requiere que todos los enunciados o instrucciones se compilen conjuntamente.12Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
Compilador EnsambladorEs aquel que trabajará con el lenguaje ensamblador como lenguaje fuente.Posee una estructura sencilla.13Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
Compilador CruzadoSe genera código en lenguaje objeto para una máquina diferente de la que se está utilizando para compilar. Es perfectamente normal construir un compilador de Pascal que genere código para MS-DOS y que el compilador funcione en Linux y se haya escrito en C++.14Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
Compilador con MontadorCompilador que “compila” distintos módulos de forma independiente y después es capaz de enlazarlos.15Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
AutocompiladorCompilador que está escrito en el mismo lenguaje que va a compilar. Evidentemente, no se puede ejecutar la primera vez. Sirve para hacer ampliaciones al lenguaje, mejorar el código generado, etc.16Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
MetacompiladorEs sinónimo de compilador de compiladores y se refiere a un programa que recibe como entrada las especificaciones del lenguaje para el que se desea obtener un compilador y genera como salida el compilador para ese lenguaje. El desarrollo de los metacompiladores se encuentra con la dificultad de unir la generación de código con la parte de análisis. Lo que sí se han desarrollado son generadores de analizadores léxicos y sintácticos. Por ejemplo, los conocidos:LEX:  generador de analizadores léxicosYACC: generador de analizadores sintácticos desarrollados para UNIX. Los inconvenientes que tienen son que los analizadores que generan no son muy eficientes.17Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
DescompiladorEs un programa que acepta como entrada código máquina y lo traduce a un lenguaje de alto nivel.Realizando el proceso inverso a la compilación.18Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.

Más contenido relacionado

PPT
Cap1 compiladores
PPT
Cap2 compiladores
PPTX
Especialidad
PPTX
Cap4
PPTX
Compiladores unidad1
PPT
Cap1
PPTX
Bootstrapping
PPTX
1. que es programacion
Cap1 compiladores
Cap2 compiladores
Especialidad
Cap4
Compiladores unidad1
Cap1
Bootstrapping
1. que es programacion

La actualidad más candente (18)

DOCX
C:\documents and settings\clientea\mis documentos\compiladores
PPTX
Compiladores diapositivas
DOCX
Trabajo practico libro2
DOC
franco lorentz word2
DOCX
Preguntas y Respuestas
DOCX
Lenguaje de programación
PPSX
Algoritmos1
PDF
Introducción al Lenguaje de Programación
PDF
Lenguajes autómatas.
PDF
Compilador Funcionamiento
PPTX
Compiladores
PPSX
Compilador
PPTX
Traducción de un programa: compilación, enlace de un programa, errores en tie...
PPTX
Arquitecturas de ordenadores y compiladores cruzados
PPTX
Repuesto de expo de programacion
PPTX
Algoritmos y programas
PDF
Historia de los compiladores
PDF
Lenguajes de programacion22
C:\documents and settings\clientea\mis documentos\compiladores
Compiladores diapositivas
Trabajo practico libro2
franco lorentz word2
Preguntas y Respuestas
Lenguaje de programación
Algoritmos1
Introducción al Lenguaje de Programación
Lenguajes autómatas.
Compilador Funcionamiento
Compiladores
Compilador
Traducción de un programa: compilación, enlace de un programa, errores en tie...
Arquitecturas de ordenadores y compiladores cruzados
Repuesto de expo de programacion
Algoritmos y programas
Historia de los compiladores
Lenguajes de programacion22
Publicidad

Destacado (16)

PPT
Carmen Saavedra Autobio
PPT
Leon Gutierrez
PPT
Hagamos Un Cuento
PPT
11 2007 Einkommensgerechtigkeit
PPTX
Presentacion diseño...
PPTX
Tema 1. el antiguo régimen
PPS
Mensajeras de la vida
PDF
Procedimiento para elaboración de sitio web
PPTX
Der Weg zur Liberalisierung des Agrarsektors im Welt-handelssystem
PPT
UN Global Compact Impuls on Base of the Pyramid
PPT
Saturno Mark Y Carlota
PPTX
WiSe 2013 | IT-Zertifikat: AMM - 00_Organisatorisches
PPTX
Infoveranstaltung Office 2010 im BMVBS
PPTX
SoSem 2015 | Programmierpropädeutikum - 01_KickOff, Memory
PPTX
Hamburg Marathon - Die Crossmedia-Strategie
 
Carmen Saavedra Autobio
Leon Gutierrez
Hagamos Un Cuento
11 2007 Einkommensgerechtigkeit
Presentacion diseño...
Tema 1. el antiguo régimen
Mensajeras de la vida
Procedimiento para elaboración de sitio web
Der Weg zur Liberalisierung des Agrarsektors im Welt-handelssystem
UN Global Compact Impuls on Base of the Pyramid
Saturno Mark Y Carlota
WiSe 2013 | IT-Zertifikat: AMM - 00_Organisatorisches
Infoveranstaltung Office 2010 im BMVBS
SoSem 2015 | Programmierpropädeutikum - 01_KickOff, Memory
Hamburg Marathon - Die Crossmedia-Strategie
 
Publicidad

Similar a Cap2 (20)

DOCX
C:\fakepath\compiladores
PPT
Cap4 compiladores
DOCX
C:\fakepath\compilador
DOCX
C:\fakepath\el software libre
DOCX
C:\fakepath\el software libre
DOCX
C:\fakepath\el software libre
DOCX
C:\fakepath\el software libre
DOCX
C:\fakepath\el software libre
PDF
Bison y flex
PDF
introducción a lenguajes de programacion
PDF
Materia unidad compiladores
DOCX
PDF
Unidad1 2 Lenguajes y automatas
DOCX
Conceptos de compilador
DOCX
Conceptos De Compilador
PDF
Introducción al lenguaje c# eidos
PDF
Introduccion (1)
PPTX
Lenguajes de programacion tema 2_compiladores e interpretes
C:\fakepath\compiladores
Cap4 compiladores
C:\fakepath\compilador
C:\fakepath\el software libre
C:\fakepath\el software libre
C:\fakepath\el software libre
C:\fakepath\el software libre
C:\fakepath\el software libre
Bison y flex
introducción a lenguajes de programacion
Materia unidad compiladores
Unidad1 2 Lenguajes y automatas
Conceptos de compilador
Conceptos De Compilador
Introducción al lenguaje c# eidos
Introduccion (1)
Lenguajes de programacion tema 2_compiladores e interpretes

Más de CJAO (20)

PPT
Cap6
PPT
Cap5
PPT
Cap4
PPT
Cap3
PPT
Cap2
PPT
Cap1
PPT
Cap3 compiladores
PPTX
Cap6
PPTX
Cap5
PPTX
Cap4
PPTX
Cap3
PPTX
Cap0
PPTX
Cap5
PPTX
Cap4
PPTX
Cap3
PPTX
Cap2
PPTX
Cap1
PPTX
Cap6
PPTX
Cap10
PPTX
Cap9
Cap6
Cap5
Cap4
Cap3
Cap2
Cap1
Cap3 compiladores
Cap6
Cap5
Cap4
Cap3
Cap0
Cap5
Cap4
Cap3
Cap2
Cap1
Cap6
Cap10
Cap9

Último (20)

DOCX
PLAN DE CASTELLANO 2021 actualizado a la normativa
PPTX
Presentación de la Cetoacidosis diabetica.pptx
PPTX
LAS MIGRACIONES E INVASIONES Y EL INICIO EDAD MEDIA
PDF
TOMO II - LITERATURA.pd plusenmas ultras
PDF
Como usar el Cerebro en las Aulas SG2 NARCEA Ccesa007.pdf
PDF
Los10 Mandamientos de la Actitud Mental Positiva Ccesa007.pdf
PPTX
T2 Desarrollo del SNC, envejecimiento y anatomia.pptx
PDF
Nadie puede salvarte excepto Tú - Madame Rouge Ccesa007.pdf
PDF
Esc. Sab. Lección 7. El pan y el agua de vida.pdf
PPTX
Historia-Clinica-de-Emergencia-Obstetrica 1.10.pptx
PDF
Iniciación Al Aprendizaje Basado En Proyectos ABP Ccesa007.pdf
PDF
RM2025 - FUNDAMENTOS TEÓRICOS - PEDIATRÍA.pdf
PPTX
Clase 3 del silabo-gestion y control financiero
PDF
Aumente su Autoestima - Lair Ribeiro Ccesa007.pdf
PDF
2.0 Introduccion a processing, y como obtenerlo
PDF
informe tipos de Informatica perfiles profesionales _pdf
PDF
La Formacion Universitaria en Nuevos Escenarios Ccesa007.pdf
PDF
Como Potenciar las Emociones Positivas y Afrontar las Negativas Ccesa007.pdf
PDF
La Inteligencia Emocional - Fabian Goleman TE4 Ccesa007.pdf
PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
PLAN DE CASTELLANO 2021 actualizado a la normativa
Presentación de la Cetoacidosis diabetica.pptx
LAS MIGRACIONES E INVASIONES Y EL INICIO EDAD MEDIA
TOMO II - LITERATURA.pd plusenmas ultras
Como usar el Cerebro en las Aulas SG2 NARCEA Ccesa007.pdf
Los10 Mandamientos de la Actitud Mental Positiva Ccesa007.pdf
T2 Desarrollo del SNC, envejecimiento y anatomia.pptx
Nadie puede salvarte excepto Tú - Madame Rouge Ccesa007.pdf
Esc. Sab. Lección 7. El pan y el agua de vida.pdf
Historia-Clinica-de-Emergencia-Obstetrica 1.10.pptx
Iniciación Al Aprendizaje Basado En Proyectos ABP Ccesa007.pdf
RM2025 - FUNDAMENTOS TEÓRICOS - PEDIATRÍA.pdf
Clase 3 del silabo-gestion y control financiero
Aumente su Autoestima - Lair Ribeiro Ccesa007.pdf
2.0 Introduccion a processing, y como obtenerlo
informe tipos de Informatica perfiles profesionales _pdf
La Formacion Universitaria en Nuevos Escenarios Ccesa007.pdf
Como Potenciar las Emociones Positivas y Afrontar las Negativas Ccesa007.pdf
La Inteligencia Emocional - Fabian Goleman TE4 Ccesa007.pdf
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula

Cap2

  • 1. Funciones y Clasificación de los CompiladoresCapítulo 2Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.1
  • 2. FuncionesUn compilador es:Un programa que lee un programa escrito en un lenguaje,El lenguaje fuente.Y lo traduce a un programa equivalente en otro lenguaje, El lenguaje objeto. Como parte importante de este proceso de traducción, el compilador informa a su usuario de la presencia de errores en el programa fuente.Para cada lenguaje de programación se requiere un compilador separado. El compilador traduce todo el programa antes de ejecutarlo. Los compiladores son programas de traducción insertados en la memoria por el sistema operativo para convertir programas de cómputo en pulsaciones electrónicas ejecutables (lenguaje de máquina). 2Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
  • 3. Diversidad de CompiladoresA primera vista, la diversidad de compiladores puede parecer abrumadora. Hay miles de lenguajes fuente:Desde los lenguajes de programación tradicionales, como FORTRAN o Pascal, hasta los lenguajes especializados que han surgido virtualmente en todas las áreas de aplicación de la informática. Los lenguajes objeto son igualmente variados.Un lenguaje objeto puede ser otro lenguaje de programación o el lenguaje de máquina de cualquier computadora entre un microprocesador y una supercomputadora. A pesar de existir una aparente complejidad por la clasificación de los compiladores, las tareas básicas que debe realizar cualquier compilador son esencialmente las mismas. Al comprender tales tareas, se pueden construir compiladores para una gran diversidad de lenguajes fuente y máquinas objeto utilizando las mismas técnicas básicas.3Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
  • 4. Origen de los CompiladoresNuestro conocimiento sobre cómo organizar y escribir compiladores ha aumentado mucho desde que comenzaron a aparecer los primeros compiladores a principios de los años cincuenta. Es difícil dar una fecha exacta de la aparición del primer compilador, porque en un principio gran parte del trabajo de experimentación y aplicación se realizó de manera independiente por varios grupos. Gran parte de los primeros trabajos de compilación estaba relacionada con la traducción de fórmulas aritméticas a código de máquina.4Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
  • 5. Técnicas SistemáticasEn la década de 1950, se consideró a los compiladores como programas notablemente difíciles de escribir. EL primer compilador de FORTRAN, por ejemplo, necesitó para su implantación de 18 años de trabajo en grupo (Backus y otros [1975]). Desde entonces, se han descubierto técnicas sistemáticas para manejar muchas de las importantes tareas que surgen en la compilación. También se han desarrollado buenos lenguajes de implantación, entornos de programación y herramientas de software. Con estos avances, puede hacerse un compilador real incluso como proyecto de estudio sobre diseño de compiladores.5Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
  • 6. Partes de la CompilaciónEn la compilación hay dos partes: Análisis.La parte del análisis divide al programa fuente en sus elementos componentes y crea una representación intermedia. Durante el análisis se determina las operaciones que implica el programa fuente y se registra en una estructura jerárquica llamada árbol. Síntesis. De las dos partes, la síntesis es la que requiere las técnicas más especializadas. 6Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
  • 7. Árbol SintácticoA menudo, se usa una clase especial de árbol llamado árbol sintáctico, donde cada nodo representa una operación y los hijos de un nodo son los argumentos de la operación. Por ejemplo, en la figura siguiente se muestra un árbol sintáctico para una proposición de asignación.Posición = inicial + velocidad * 607Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
  • 9. Compilador de Una Sola PasadaExamina el código fuente una vez.Generando el código o programa objeto.9Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
  • 10. Compilador de Pasadas MúltiplesRequieren pasos intermedios para producir un código en otro lenguaje.Y una pasada final para producir y optimizar el código producido durante los pasos anteriores. 10Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
  • 11. Compilador de OptimaciónLee un código fuente.Lo analiza.Descubre errores potenciales sin ejecutar el programa.11Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
  • 12. Compiladores IncrementalesGeneran un código objeto instrucción por instrucción (en vez de hacerlo para todo el programa) cuando el usuario teclea cada orden individual. El otro tipo de compiladores requiere que todos los enunciados o instrucciones se compilen conjuntamente.12Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
  • 13. Compilador EnsambladorEs aquel que trabajará con el lenguaje ensamblador como lenguaje fuente.Posee una estructura sencilla.13Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
  • 14. Compilador CruzadoSe genera código en lenguaje objeto para una máquina diferente de la que se está utilizando para compilar. Es perfectamente normal construir un compilador de Pascal que genere código para MS-DOS y que el compilador funcione en Linux y se haya escrito en C++.14Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
  • 15. Compilador con MontadorCompilador que “compila” distintos módulos de forma independiente y después es capaz de enlazarlos.15Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
  • 16. AutocompiladorCompilador que está escrito en el mismo lenguaje que va a compilar. Evidentemente, no se puede ejecutar la primera vez. Sirve para hacer ampliaciones al lenguaje, mejorar el código generado, etc.16Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
  • 17. MetacompiladorEs sinónimo de compilador de compiladores y se refiere a un programa que recibe como entrada las especificaciones del lenguaje para el que se desea obtener un compilador y genera como salida el compilador para ese lenguaje. El desarrollo de los metacompiladores se encuentra con la dificultad de unir la generación de código con la parte de análisis. Lo que sí se han desarrollado son generadores de analizadores léxicos y sintácticos. Por ejemplo, los conocidos:LEX: generador de analizadores léxicosYACC: generador de analizadores sintácticos desarrollados para UNIX. Los inconvenientes que tienen son que los analizadores que generan no son muy eficientes.17Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.
  • 18. DescompiladorEs un programa que acepta como entrada código máquina y lo traduce a un lenguaje de alto nivel.Realizando el proceso inverso a la compilación.18Materia: CompiladoresDocente: Ing. Carlos J. Archondo O.