SlideShare a Scribd company logo
1 of 26
Ingeniería en sistemas
computacionales.
Andrea Custodio Jiménez.
Un compilador es un programa informático
que traduce un programa escrito en un
lenguaje de programación a otro lenguaje
de programación, generando un programa
equivalente que la máquina será capaz de
interpretar.
Un compilador es un programa que permite
traducir el código fuente de un programa en
lenguaje de alto nivel, a otro lenguaje de nivel
inferior (típicamente lenguaje de máquina).
De esta manera un programador puede diseñar
un programa en un lenguaje mucho más
cercano a como piensa un ser humano, para
luego compilarlo a un programa más manejable
por una computadora.
Como parte importante de este proceso de
traducción, el compilador informa a su
usuario de la presencia de errores en el
programa fuente.
Historia
En 1946 se desarrolló la primera computadora
digital. En un principio, estas máquinas
ejecutaban instrucciones consistentes en
códigos numéricos que señalaban a los circuitos
de la máquina los estados correspondientes a
cada operación, lo que se denominó lenguaje
máquina.
Pronto los primeros usuarios de estos
ordenadores descubrieron la ventaja de escribir
sus programas mediante claves más fáciles de
recordar que esos códigos; al final, todas esas
claves juntas se traducían manualmente a
lenguaje máquina. Estas claves constituyen los
llamados lenguajes ensambladores.
El primer compilador fue escrito por Grace
Hopper, en 1952 para el lenguaje de
programación A-0.
En 1950 John Backus dirigió una
investigación en IBM sobre un lenguaje
algebraico.
En 1954 se empezó a desarrollar un lenguaje que
permitía escribir fórmulas matemáticas de
manera traducible por un ordenador; le llamaron
FORTRAN (FORmulae TRANslator). Fue el primer
lenguaje de alto nivel y se introdujo en 1957 para
el uso de la computadora IBM modelo 704.
El primer compilador de FORTRAN tardó 18
años-persona en realizarse y era muy sencillo.
Este desarrollo de FORTRAN estaba muy
influenciado por la máquina objeto en la que iba
a ser implementado.
El primer compilador auto-contenido, es decir,
capaz de compilar su propio código fuente fue
el creado para Lisp por Hart y Levin en el MIT en
1962. Desde 1970 se ha convertido en una
práctica común escribir el compilador en el
mismo lenguaje que este compila, aunque
Pascal y C han sido alternativas muy usadas.
El proceso de traducción se compone
internamente de varias etapas o fases, que
realizan distintas operaciones lógicas. Es útil
pensar en estas fases como en piezas
separadas dentro del traductor, y pueden en
realidad escribirse como operaciones
codificadas separadamente aunque en la
práctica a menudo se integren juntas.
Fase de léxico
El análisis léxico constituye la primera fase, aquí
se lee el programa fuente de izquierda a derecha
y se agrupa en componentes léxicos (tokens),
que son secuencias de caracteres que tienen un
significado.
Además, todos los espacios en blanco, líneas en
blanco, comentarios y demás información
innecesaria se elimina del programa fuente.
También se comprueba que los símbolos del
lenguaje (palabras clave, operadores, etc.) se
han escrito correctamente.
En esta fase los caracteres o componentes
léxicos se agrupan jerárquicamente en frases
gramaticales que el compilador utiliza para
sintetizar la salida. Se comprueba si lo obtenido
de la fase anterior es sintácticamente correcto.
Por lo general, las frases gramaticales del
programa fuente se representan mediante un
árbol de análisis sintáctico.
1. Cualquier identificador es una expresión.
2. Cualquier número es una expresión.
3. Si expresión1 y expresión2 son expresiones,
entonces también lo son:
expresión1 + expresión2
expresión1 * expresión2
( expresión1 )
Las reglas 1 y 2 son reglas básicas (no
recursivas), en tanto que la regla 3 define
expresiones en función de operadores
aplicados a otras expresiones.
La fase de análisis semántico revisa el programa
fuente para tratar de encontrar errores
semánticos y reúne la información sobre los
tipos para la fase posterior de generación de
código.
En ella se utiliza la estructura jerárquica
determinada por la fase de análisis sintáctico
para identificar los operadores y operandos de
expresiones y proposiciones.
Fase de Generación de código intermedio
Después de los análisis sintáctico y semántico,
algunos compiladores generan una
representación intermedia explícita del programa
fuente. Se puede considerar esta representación
intermedia como un programa para una máquina
abstracta.
La representación intermedia puede tener
diversas formas. Existe una forma intermedia
llamada «código de tres direcciones» que es
como el lenguaje ensamblador de una máquina
en la que cada posición de memoria puede
actuar como un registro
Fase de Optimización de código
La fase de optimización de código consiste en
mejorar el código intermedio, de modo que
resulte un código máquina más rápido de
ejecutar. Esta fase de la etapa de síntesis es
posible sobre todo si el traductor es un
compilador
Hay mucha variación en la cantidad de
optimización de código que ejecutan los
distintos compiladores. En los que hacen
mucha optimización, llamados «compiladores
optimizadores»,
Hay optimizaciones sencillas que mejoran
sensiblemente el tiempo de ejecución del
programa objeto sin retardar demasiado la
compilación
Compilador

More Related Content

What's hot

Actividad 3
Actividad 3Actividad 3
Actividad 3maryr_
 
C:\documents and settings\clientea\mis documentos\compiladores
C:\documents and settings\clientea\mis documentos\compiladoresC:\documents and settings\clientea\mis documentos\compiladores
C:\documents and settings\clientea\mis documentos\compiladoresNancyandRegina317
 
Introducción a Compiladores
Introducción a  CompiladoresIntroducción a  Compiladores
Introducción a CompiladoresLeopoldo Capa
 
Grupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iGrupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iRossana Sosa
 
Cap2
Cap2Cap2
Cap2CJAO
 
Compiladores unidad1
Compiladores unidad1Compiladores unidad1
Compiladores unidad1X3025990
 
GENERACION DE CODIGO INTERMEDIO
GENERACION DE CODIGO INTERMEDIOGENERACION DE CODIGO INTERMEDIO
GENERACION DE CODIGO INTERMEDIOMAURICIOANDRES39
 
Compiladores y analizador léxico
Compiladores y analizador léxicoCompiladores y analizador léxico
Compiladores y analizador léxicokatherine133
 
Generador de codigo intermedio
Generador de codigo intermedioGenerador de codigo intermedio
Generador de codigo intermedioGuillermo
 
Materia unidad compiladores
Materia unidad compiladoresMateria unidad compiladores
Materia unidad compiladoresbachispasaca
 
Python guia01 1
Python guia01 1Python guia01 1
Python guia01 1zeta2015
 
Trabajo lenguajes de programacion
Trabajo lenguajes de programacionTrabajo lenguajes de programacion
Trabajo lenguajes de programacionJulian Suna Paez
 
Compiladores
CompiladoresCompiladores
CompiladoresIsabel
 
Clase de lenguajes de programación
Clase de lenguajes de programaciónClase de lenguajes de programación
Clase de lenguajes de programacióncoopermcfly
 
Introducción A Compiladores
Introducción A Compiladores Introducción A Compiladores
Introducción A Compiladores Nestor Traña
 
Ejercicio compiladores
Ejercicio compiladoresEjercicio compiladores
Ejercicio compiladoresSheyli Patiño
 
Investigacion sobre traductor, interprete y compilador
Investigacion sobre traductor, interprete y compilador   Investigacion sobre traductor, interprete y compilador
Investigacion sobre traductor, interprete y compilador ADOLFOISAIASGARCIASI
 

What's hot (20)

Actividad 3
Actividad 3Actividad 3
Actividad 3
 
C:\documents and settings\clientea\mis documentos\compiladores
C:\documents and settings\clientea\mis documentos\compiladoresC:\documents and settings\clientea\mis documentos\compiladores
C:\documents and settings\clientea\mis documentos\compiladores
 
Introducción a Compiladores
Introducción a  CompiladoresIntroducción a  Compiladores
Introducción a Compiladores
 
Compiladores, Analisis Lexico, Ejemplo Minilenguaje
Compiladores, Analisis Lexico, Ejemplo MinilenguajeCompiladores, Analisis Lexico, Ejemplo Minilenguaje
Compiladores, Analisis Lexico, Ejemplo Minilenguaje
 
Grupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iGrupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes i
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Cap2
Cap2Cap2
Cap2
 
Compiladores unidad1
Compiladores unidad1Compiladores unidad1
Compiladores unidad1
 
GENERACION DE CODIGO INTERMEDIO
GENERACION DE CODIGO INTERMEDIOGENERACION DE CODIGO INTERMEDIO
GENERACION DE CODIGO INTERMEDIO
 
Compiladores y analizador léxico
Compiladores y analizador léxicoCompiladores y analizador léxico
Compiladores y analizador léxico
 
Generador de codigo intermedio
Generador de codigo intermedioGenerador de codigo intermedio
Generador de codigo intermedio
 
Materia unidad compiladores
Materia unidad compiladoresMateria unidad compiladores
Materia unidad compiladores
 
Python guia01 1
Python guia01 1Python guia01 1
Python guia01 1
 
Compiladores (1) pedro vasques
Compiladores (1) pedro vasquesCompiladores (1) pedro vasques
Compiladores (1) pedro vasques
 
Trabajo lenguajes de programacion
Trabajo lenguajes de programacionTrabajo lenguajes de programacion
Trabajo lenguajes de programacion
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Clase de lenguajes de programación
Clase de lenguajes de programaciónClase de lenguajes de programación
Clase de lenguajes de programación
 
Introducción A Compiladores
Introducción A Compiladores Introducción A Compiladores
Introducción A Compiladores
 
Ejercicio compiladores
Ejercicio compiladoresEjercicio compiladores
Ejercicio compiladores
 
Investigacion sobre traductor, interprete y compilador
Investigacion sobre traductor, interprete y compilador   Investigacion sobre traductor, interprete y compilador
Investigacion sobre traductor, interprete y compilador
 

Viewers also liked

Viewers also liked (6)

Optimizador de codigo
Optimizador de codigoOptimizador de codigo
Optimizador de codigo
 
Optimizacion de Compiladores
Optimizacion de CompiladoresOptimizacion de Compiladores
Optimizacion de Compiladores
 
Clase15
Clase15Clase15
Clase15
 
Jerarquía de la computadora
Jerarquía de la computadoraJerarquía de la computadora
Jerarquía de la computadora
 
Proceso de Compilacion
Proceso de CompilacionProceso de Compilacion
Proceso de Compilacion
 
Etapas de compilacion
Etapas de compilacionEtapas de compilacion
Etapas de compilacion
 

Similar to Compilador

Compilador Funcionamiento
Compilador FuncionamientoCompilador Funcionamiento
Compilador FuncionamientoKriz Kozlov
 
C:\fakepath\compiladores
C:\fakepath\compiladoresC:\fakepath\compiladores
C:\fakepath\compiladorespaulina8
 
Compiladores diapositivas
Compiladores diapositivasCompiladores diapositivas
Compiladores diapositivasjonathangrief
 
C:\fakepath\el software libre
C:\fakepath\el software libreC:\fakepath\el software libre
C:\fakepath\el software libreDanielita Lopez
 
C:\fakepath\el software libre
C:\fakepath\el software libreC:\fakepath\el software libre
C:\fakepath\el software libreDanielita Lopez
 
C:\fakepath\el software libre
C:\fakepath\el software libreC:\fakepath\el software libre
C:\fakepath\el software libreDLACGP
 
C:\fakepath\el software libre
C:\fakepath\el software libreC:\fakepath\el software libre
C:\fakepath\el software libreDanielita Lopez
 
C:\fakepath\compilador
C:\fakepath\compiladorC:\fakepath\compilador
C:\fakepath\compiladorDLACGP
 
C:\fakepath\el software libre
C:\fakepath\el software libreC:\fakepath\el software libre
C:\fakepath\el software libreDanielita Lopez
 
Especialidad
EspecialidadEspecialidad
EspecialidadDilan19
 
Especialidad
EspecialidadEspecialidad
Especialidadbecew
 
Compiladores financieros trabajo 10
Compiladores financieros trabajo 10Compiladores financieros trabajo 10
Compiladores financieros trabajo 10anita andrea
 
Evolucion de los compiladores1
Evolucion de los compiladores1Evolucion de los compiladores1
Evolucion de los compiladores1udalrico
 
Conceptos De Compilador
Conceptos De CompiladorConceptos De Compilador
Conceptos De CompiladorJoel Soto
 
Conceptos de compilador
Conceptos de compiladorConceptos de compilador
Conceptos de compiladorJoel Soto
 
Compiladores y analizador lexicos
Compiladores y analizador lexicosCompiladores y analizador lexicos
Compiladores y analizador lexicosdiana8320
 

Similar to Compilador (20)

H:\compiladores
H:\compiladoresH:\compiladores
H:\compiladores
 
Compilador Funcionamiento
Compilador FuncionamientoCompilador Funcionamiento
Compilador Funcionamiento
 
C:\fakepath\compiladores
C:\fakepath\compiladoresC:\fakepath\compiladores
C:\fakepath\compiladores
 
Compiladores diapositivas
Compiladores diapositivasCompiladores diapositivas
Compiladores diapositivas
 
C:\fakepath\el software libre
C:\fakepath\el software libreC:\fakepath\el software libre
C:\fakepath\el software libre
 
C:\fakepath\el software libre
C:\fakepath\el software libreC:\fakepath\el software libre
C:\fakepath\el software libre
 
C:\fakepath\el software libre
C:\fakepath\el software libreC:\fakepath\el software libre
C:\fakepath\el software libre
 
C:\fakepath\el software libre
C:\fakepath\el software libreC:\fakepath\el software libre
C:\fakepath\el software libre
 
C:\fakepath\compilador
C:\fakepath\compiladorC:\fakepath\compilador
C:\fakepath\compilador
 
C:\fakepath\el software libre
C:\fakepath\el software libreC:\fakepath\el software libre
C:\fakepath\el software libre
 
Especialidad
EspecialidadEspecialidad
Especialidad
 
Especialidad
EspecialidadEspecialidad
Especialidad
 
Compiladores financieros trabajo 10
Compiladores financieros trabajo 10Compiladores financieros trabajo 10
Compiladores financieros trabajo 10
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Evolucion de los compiladores1
Evolucion de los compiladores1Evolucion de los compiladores1
Evolucion de los compiladores1
 
Resumencap1 carmen vargas_jeremycamacho
Resumencap1 carmen vargas_jeremycamachoResumencap1 carmen vargas_jeremycamacho
Resumencap1 carmen vargas_jeremycamacho
 
Lenguajes de desarrollo (programación)
Lenguajes de desarrollo (programación)Lenguajes de desarrollo (programación)
Lenguajes de desarrollo (programación)
 
Conceptos De Compilador
Conceptos De CompiladorConceptos De Compilador
Conceptos De Compilador
 
Conceptos de compilador
Conceptos de compiladorConceptos de compilador
Conceptos de compilador
 
Compiladores y analizador lexicos
Compiladores y analizador lexicosCompiladores y analizador lexicos
Compiladores y analizador lexicos
 

Recently uploaded

Willer Gehizon Sanchez Mora
Willer Gehizon Sanchez MoraWiller Gehizon Sanchez Mora
Willer Gehizon Sanchez Morawillersanchez93
 
Expo Construir 2024 agenda-workshops (2).pdf
Expo Construir 2024 agenda-workshops (2).pdfExpo Construir 2024 agenda-workshops (2).pdf
Expo Construir 2024 agenda-workshops (2).pdfTamanaTablada
 
Día Mundial de la Seguridad y Salud en el Trabajo 2024
Día Mundial de la Seguridad y Salud en el Trabajo 2024Día Mundial de la Seguridad y Salud en el Trabajo 2024
Día Mundial de la Seguridad y Salud en el Trabajo 2024omarperdomo16
 
Modelos comunicacionales. Antonella Castrataro.pdf
Modelos comunicacionales. Antonella Castrataro.pdfModelos comunicacionales. Antonella Castrataro.pdf
Modelos comunicacionales. Antonella Castrataro.pdfnenelli2004
 
EVOLUCION DE LA ENFERMERIA QUIRURGICA Y ETICA 1.pptx
EVOLUCION DE LA ENFERMERIA QUIRURGICA Y ETICA 1.pptxEVOLUCION DE LA ENFERMERIA QUIRURGICA Y ETICA 1.pptx
EVOLUCION DE LA ENFERMERIA QUIRURGICA Y ETICA 1.pptxaugusto2788
 
LA DECLAMACIÓN Y LOS RECURSOS NO VERBALES
LA DECLAMACIÓN Y LOS RECURSOS NO VERBALESLA DECLAMACIÓN Y LOS RECURSOS NO VERBALES
LA DECLAMACIÓN Y LOS RECURSOS NO VERBALESfarfanataomitza
 
DIABETES MELLITUS trabajo de investigación
DIABETES MELLITUS trabajo de investigaciónDIABETES MELLITUS trabajo de investigación
DIABETES MELLITUS trabajo de investigaciónNatzueTorrescampos
 

Recently uploaded (7)

Willer Gehizon Sanchez Mora
Willer Gehizon Sanchez MoraWiller Gehizon Sanchez Mora
Willer Gehizon Sanchez Mora
 
Expo Construir 2024 agenda-workshops (2).pdf
Expo Construir 2024 agenda-workshops (2).pdfExpo Construir 2024 agenda-workshops (2).pdf
Expo Construir 2024 agenda-workshops (2).pdf
 
Día Mundial de la Seguridad y Salud en el Trabajo 2024
Día Mundial de la Seguridad y Salud en el Trabajo 2024Día Mundial de la Seguridad y Salud en el Trabajo 2024
Día Mundial de la Seguridad y Salud en el Trabajo 2024
 
Modelos comunicacionales. Antonella Castrataro.pdf
Modelos comunicacionales. Antonella Castrataro.pdfModelos comunicacionales. Antonella Castrataro.pdf
Modelos comunicacionales. Antonella Castrataro.pdf
 
EVOLUCION DE LA ENFERMERIA QUIRURGICA Y ETICA 1.pptx
EVOLUCION DE LA ENFERMERIA QUIRURGICA Y ETICA 1.pptxEVOLUCION DE LA ENFERMERIA QUIRURGICA Y ETICA 1.pptx
EVOLUCION DE LA ENFERMERIA QUIRURGICA Y ETICA 1.pptx
 
LA DECLAMACIÓN Y LOS RECURSOS NO VERBALES
LA DECLAMACIÓN Y LOS RECURSOS NO VERBALESLA DECLAMACIÓN Y LOS RECURSOS NO VERBALES
LA DECLAMACIÓN Y LOS RECURSOS NO VERBALES
 
DIABETES MELLITUS trabajo de investigación
DIABETES MELLITUS trabajo de investigaciónDIABETES MELLITUS trabajo de investigación
DIABETES MELLITUS trabajo de investigación
 

Compilador

  • 2. Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar.
  • 3. Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de máquina).
  • 4. De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora.
  • 5. Como parte importante de este proceso de traducción, el compilador informa a su usuario de la presencia de errores en el programa fuente.
  • 6. Historia En 1946 se desarrolló la primera computadora digital. En un principio, estas máquinas ejecutaban instrucciones consistentes en códigos numéricos que señalaban a los circuitos de la máquina los estados correspondientes a cada operación, lo que se denominó lenguaje máquina.
  • 7. Pronto los primeros usuarios de estos ordenadores descubrieron la ventaja de escribir sus programas mediante claves más fáciles de recordar que esos códigos; al final, todas esas claves juntas se traducían manualmente a lenguaje máquina. Estas claves constituyen los llamados lenguajes ensambladores.
  • 8. El primer compilador fue escrito por Grace Hopper, en 1952 para el lenguaje de programación A-0.
  • 9. En 1950 John Backus dirigió una investigación en IBM sobre un lenguaje algebraico.
  • 10. En 1954 se empezó a desarrollar un lenguaje que permitía escribir fórmulas matemáticas de manera traducible por un ordenador; le llamaron FORTRAN (FORmulae TRANslator). Fue el primer lenguaje de alto nivel y se introdujo en 1957 para el uso de la computadora IBM modelo 704.
  • 11. El primer compilador de FORTRAN tardó 18 años-persona en realizarse y era muy sencillo. Este desarrollo de FORTRAN estaba muy influenciado por la máquina objeto en la que iba a ser implementado.
  • 12. El primer compilador auto-contenido, es decir, capaz de compilar su propio código fuente fue el creado para Lisp por Hart y Levin en el MIT en 1962. Desde 1970 se ha convertido en una práctica común escribir el compilador en el mismo lenguaje que este compila, aunque Pascal y C han sido alternativas muy usadas.
  • 13. El proceso de traducción se compone internamente de varias etapas o fases, que realizan distintas operaciones lógicas. Es útil pensar en estas fases como en piezas separadas dentro del traductor, y pueden en realidad escribirse como operaciones codificadas separadamente aunque en la práctica a menudo se integren juntas.
  • 14. Fase de léxico El análisis léxico constituye la primera fase, aquí se lee el programa fuente de izquierda a derecha y se agrupa en componentes léxicos (tokens), que son secuencias de caracteres que tienen un significado.
  • 15. Además, todos los espacios en blanco, líneas en blanco, comentarios y demás información innecesaria se elimina del programa fuente. También se comprueba que los símbolos del lenguaje (palabras clave, operadores, etc.) se han escrito correctamente.
  • 16. En esta fase los caracteres o componentes léxicos se agrupan jerárquicamente en frases gramaticales que el compilador utiliza para sintetizar la salida. Se comprueba si lo obtenido de la fase anterior es sintácticamente correcto. Por lo general, las frases gramaticales del programa fuente se representan mediante un árbol de análisis sintáctico.
  • 17. 1. Cualquier identificador es una expresión. 2. Cualquier número es una expresión. 3. Si expresión1 y expresión2 son expresiones, entonces también lo son: expresión1 + expresión2 expresión1 * expresión2 ( expresión1 )
  • 18. Las reglas 1 y 2 son reglas básicas (no recursivas), en tanto que la regla 3 define expresiones en función de operadores aplicados a otras expresiones.
  • 19. La fase de análisis semántico revisa el programa fuente para tratar de encontrar errores semánticos y reúne la información sobre los tipos para la fase posterior de generación de código.
  • 20. En ella se utiliza la estructura jerárquica determinada por la fase de análisis sintáctico para identificar los operadores y operandos de expresiones y proposiciones.
  • 21. Fase de Generación de código intermedio Después de los análisis sintáctico y semántico, algunos compiladores generan una representación intermedia explícita del programa fuente. Se puede considerar esta representación intermedia como un programa para una máquina abstracta.
  • 22. La representación intermedia puede tener diversas formas. Existe una forma intermedia llamada «código de tres direcciones» que es como el lenguaje ensamblador de una máquina en la que cada posición de memoria puede actuar como un registro
  • 23. Fase de Optimización de código La fase de optimización de código consiste en mejorar el código intermedio, de modo que resulte un código máquina más rápido de ejecutar. Esta fase de la etapa de síntesis es posible sobre todo si el traductor es un compilador
  • 24. Hay mucha variación en la cantidad de optimización de código que ejecutan los distintos compiladores. En los que hacen mucha optimización, llamados «compiladores optimizadores»,
  • 25. Hay optimizaciones sencillas que mejoran sensiblemente el tiempo de ejecución del programa objeto sin retardar demasiado la compilación