SlideShare una empresa de Scribd logo
1 de 22
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
FACULTAD DE INGENIERIA EN SISTEMAS DE INFORMACION
Curso: Compiladores Código: 090457
Pre-requisitos: 090454 Lenguajes Formales
Parciales
Primer Parcial 15 puntos
Segundo Parcial 15 puntos
Laboratorios, tares y trabajos de
investigación, Proyecto
35 puntos
Examen Final
Examen Final 35 Puntos
Nota Final 100 puntos
EVALUACIÓN
AHO ALFRED V., SEIT RAVI, ULLMAN JEFFREY D.; COMPILADORES
Principios, técnicas y herramientas; Editorial Addison Wesley Iberoamericana
S.A.; Wilmington, USA; 1990.
Introducción
Conceptos Básicos
Traductor. Cualquier programa que toma como entrada un texto escrito en un
lenguaje llamado fuente y da como salida un programa equivalente en otro lenguaje,
el lenguaje objeto.
Si el lenguaje fuente de un lenguaje de programación de alto nivel y el objeto un
lenguaje de bajo nivel (ensamblador o código de máquina), al traductor se le
denomina compilador.
Ensamblador. Es un programa traductor cuyo lenguaje fuente es el lenguaje
ensamblador.
Intérprete. Es un programa que no genera un programa equivalente, sino que toma
una sentencia del programa fuente en un lenguaje de alto nivel y la traduce al código
equivalente y al mismo tiempo lo ejecuta.
En un principio debido a la escasez de memoria se utilizaban más los intérpretes,
ahora se usan más los compiladores (a excepción de JAVA)
Compilador
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. Usualmente el segundo lenguaje es lenguaje de máquina, pero
también puede ser un código intermedio (bytecode), o simplemente texto.
Este proceso de traducción se conoce como compilación.
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.
Introducción
Conceptos básicos
Ventajas de compilar vs a interpretar
•Se compila una vez, se ejecuta n veces
•En ciclos, la compilación genera código equivalente, interpretándolo se
traduce tantas veces una línea como veces se repite el ciclo
•El compilador tiene un visión global del programa
Ventajas del intérprete vs el compilador
•Un intérprete necesita menos memoria que un compilador
•Permiten una mayor interactividad con el código en tiempo de desarrollo
Introducción
Programas que el compilador necesita para obtener un programa
ejecutable
•Preprocesador
•Ligador
•Cargador
•Depurador
•Ensamblador
Tipos de compiladores
•De una pasada
•De múltiples pasadas
•De carga y ejecución
•De depuración
Introducción
•De optimización
•Ensamblador
•Compilador cruzado
•Compilador con montador
•Autocompilador
•Metacompilador
•Descompilador
Modelo de análisis y síntesis de la compilación
Partes en la que está dividida la compilación: análisis y síntesis
La síntesis es la que requiere las técnicas más especializadas.
Introducción
Herramientas de software que realizan algún tipo de análisis a los programas fuente
que manipulan:
•Editores de estructuras
•Impresoras estéticas
•Verificadores estáticos
•Intérpretes
La tecnología de compiladores se aplica en otros lugares, en especial la parte de
análisis de los siguientes ejemplos es parecida a la de un compilador
convenvcional:
•Formadores de Texto .
•Compiladores de circuitos de silicio
•Intérpretes de consultas
Introducción
Estructura de un compilador
Para la realización del proceso de traducción es necesario dividir el compilador en
varias fases.
Análisis sintáctico
Análisis léxico
Análisis semántico
Generación de
código intermedio
Optimización de código
Generación de código
Programa objeto
Manejo
de
errores
Manejo de la
Tabla de
símbolos
Programa fuente
Introducción
Antes
•Una computadora no tenía memoria suficiente
•Se tuvo que dividir al compilador en fases
•Cada fase leía un archivo y producía otro
Actualmente
•Se tiene memoria suficiente
•El tamaño del archivo ejecutable es relativamente pequeño
•Se han reducido el número de pasadas y el número de archivos que se tienen
que leer y escribir
Las fases de un compilador se agrupan en dos partes o etapas:
Análisis léxico (lineal)
Análisis sintáctico (jerárquico)
Análisis semántico
Optimización de código
Generación de código
Generación de código intermedio
Front end (análisis)
Back end (síntesis)
es la parte del software que interactúa con el o los usuarios y el back-end es la parte
que procesa la entrada desde el front-end
Introducción
Análisis léxico
También llamado exploración o scanner. Lee caracteres uno a
uno desde la entrada y va formando grupos de caracteres con
alguna relación entre sí llamados tokens, los que serán la entrada
para la siguiente etapa del compilador.
Tipos de tokens:
• Tiras específicas
• Tiras no específicas
Componentes de un token
•Tipo o Valor
Introducción
Análisis sintáctico (jerarquico)
Recibe como entrada los tokens que le pasa el analizados léxico y
comprueba si estos van llegando en el orden correcto. Su salida “teórica”
sería un árbol sintáctico.
Sus funciones son:
•Aceptar lo que es válido sintácticamente y rechazar lo que no lo es
•Hacer explícito el orden jerárquico que tienen los operadores en el lenguaje
de que se trate
•Guiar el proceso de traducción (traducción dirigida por sintaxis)
Introducción
Un factor de división entre el análisis léxico y sintáctico es la recursión.
Análisis semántico
Es más difícil de formalizar que el sintáctico. Este trata de encontrar errores semánticos y
reunir información sobre los tipos para la fase de generación de código, realizar
verificación de tipos. En definitiva comprobará que el significado de lo que va leyendo
es válido.
La salida teórica será un árbol semántico.
Ejemplo:
int i,j,k; Análisis Léxico: Devuelve secuencia de tokens.
char s[10]; tipo entero id coma id coma id coma puntoycoma
s=i+j*k; tipo caracter id indentificador [ entero id identicador] puntoycoma
id asignación id suma id multiplicación id puntoycoma
Análisis sintáctico: El orden de los tokens es válido
Análisis semántico: Tipo de variables asignadas incorrecta
Introducción
Generación de código intermedio
Transforma un árbol sintáctico (semántico) en un representación en un lenguaje
intermedio, que suele ser código sencillo que después se convertirá en código de
máquina.
Propiedades de la representación intermedia:
•Debe ser fácil de producir
•Debe ser fácil de traducir al programa objeto
Un formato de código intermedio es el código de tres direcciones.
Forma: A:= B op C, donde A,B,C son operandos y op es un operador binario
Se permiten condicionales simples simples y saltos.
P/E
while (a >0) and (b<(a*4-5)) do a:=b*a-10;
L1: if (a>0) goto L2 L4: t1:=b*a
goto L3 t2:=t1-10
L2: t1:=a*4 a:=t2
t2:=t1-5 goto L1
if (b < t2) goto L4 L3: …….
goto L3
Introducción
Optimización de código
Trata de conseguir que el programa objeto sea más rápido en la ejecución y que
necesite menos memoria a la hora de ejecutarse.(No todos los compiladores llevan
a cabo esta etapa)
Posibles optimizaciones locales:
•Cuando hay dos saltos seguidos se puede quedar uno solo
P/E El ejemplo anterior quedaría así:
L1: if (a<=0) goto L3 t1:=b*a
t1:=a*4 t2:=t1-10
t2:=t1-5 a:=t2
if (b >= t2) goto L3 goto L1
L3: …….
•Eliminar expresiones comunes en favor de una sola expresión
a:=b+c+d Quedaría t1:=b+c b:=t1+e
b:=b+c+e a:=t1+d
Introducción
•Optimización de bucles y lazos (sacar expresiones invariantes)
P/E
Repeat Se saca x:=3
x:=3;
y:=y-x*2;
until y<0;
Generación de código
Es la fase final de un compilador y consiste en generar código relocalizable o en
ensamblador
Tabla de símbolos
En esta estructura se almacena información como: variables, etiquetas, tipos, etc.
Los accesos a la tabla deben ser lo más rápido posibles
Manejo de errores
Es una de las misiones más importantes del compilador. Se utiliza más en el
análisis pero los errores pueden darse en cualquier fase. El manejo de errores es
una tarea difícil por dos motivos:
Introducción
1. A veces algunos errores ocultan otros
2. Un error puede provocar una avalancha de errores que se solucionan con el
primero
Criterios a seguir a la hora de manejar errores
1. Pararse al detectar el primer error (conveniente para un compilador interactivo)
2. Detectar todos los errores de una pasada (conveniente para un compilador de
línea)
Gracias por su Atención.

Más contenido relacionado

Similar a compiladores.pptx presentación de compiladores

Materia unidad compiladores
Materia unidad compiladoresMateria unidad compiladores
Materia unidad compiladoresbachispasaca
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretadorFrancisco Leal
 
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
 
Compiladores unidad1
Compiladores unidad1Compiladores unidad1
Compiladores unidad1X3025990
 
Compiladores
CompiladoresCompiladores
Compiladoreshenry_shd
 
Compilador Funcionamiento
Compilador FuncionamientoCompilador Funcionamiento
Compilador FuncionamientoKriz Kozlov
 
Evolucion de los compiladores1
Evolucion de los compiladores1Evolucion de los compiladores1
Evolucion de los compiladores1udalrico
 
Introducción a Compiladores
Introducción a  CompiladoresIntroducción a  Compiladores
Introducción a CompiladoresLeopoldo Capa
 
Cap4 compiladores
Cap4 compiladoresCap4 compiladores
Cap4 compiladoresCJAO
 
Traductores de lenguajes de programación
Traductores de lenguajes de programaciónTraductores de lenguajes de programación
Traductores de lenguajes de programaciónDaniela Brignolo
 
Semana 2 Lenguajes de programación.pptx
Semana 2  Lenguajes de programación.pptxSemana 2  Lenguajes de programación.pptx
Semana 2 Lenguajes de programación.pptxPriceSanchezJose
 
Cap2 compiladores
Cap2 compiladoresCap2 compiladores
Cap2 compiladoresCJAO
 
Introducción A Compiladores
Introducción A Compiladores Introducción A Compiladores
Introducción A Compiladores Nestor Traña
 

Similar a compiladores.pptx presentación de compiladores (20)

Materia unidad compiladores
Materia unidad compiladoresMateria unidad compiladores
Materia unidad compiladores
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretador
 
Actividad 3
Actividad 3Actividad 3
Actividad 3
 
Introduccion
IntroduccionIntroduccion
Introduccion
 
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
 
Compiladores unidad1
Compiladores unidad1Compiladores unidad1
Compiladores unidad1
 
Compiladores conceptos
Compiladores conceptosCompiladores conceptos
Compiladores conceptos
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Tema 1 introducción compilador
Tema 1 introducción compiladorTema 1 introducción compilador
Tema 1 introducción compilador
 
H:\compiladores
H:\compiladoresH:\compiladores
H:\compiladores
 
Compilador Funcionamiento
Compilador FuncionamientoCompilador Funcionamiento
Compilador Funcionamiento
 
Evolucion de los compiladores1
Evolucion de los compiladores1Evolucion de los compiladores1
Evolucion de los compiladores1
 
Introducción a Compiladores
Introducción a  CompiladoresIntroducción a  Compiladores
Introducción a Compiladores
 
Cap4 compiladores
Cap4 compiladoresCap4 compiladores
Cap4 compiladores
 
Presentacion2
Presentacion2Presentacion2
Presentacion2
 
Traductores de lenguajes de programación
Traductores de lenguajes de programaciónTraductores de lenguajes de programación
Traductores de lenguajes de programación
 
Semana 2 Lenguajes de programación.pptx
Semana 2  Lenguajes de programación.pptxSemana 2  Lenguajes de programación.pptx
Semana 2 Lenguajes de programación.pptx
 
Cap2 compiladores
Cap2 compiladoresCap2 compiladores
Cap2 compiladores
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Introducción A Compiladores
Introducción A Compiladores Introducción A Compiladores
Introducción A Compiladores
 

Último

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 

Último (20)

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 

compiladores.pptx presentación de compiladores

  • 1. UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA FACULTAD DE INGENIERIA EN SISTEMAS DE INFORMACION Curso: Compiladores Código: 090457 Pre-requisitos: 090454 Lenguajes Formales Parciales Primer Parcial 15 puntos Segundo Parcial 15 puntos Laboratorios, tares y trabajos de investigación, Proyecto 35 puntos Examen Final Examen Final 35 Puntos Nota Final 100 puntos EVALUACIÓN AHO ALFRED V., SEIT RAVI, ULLMAN JEFFREY D.; COMPILADORES Principios, técnicas y herramientas; Editorial Addison Wesley Iberoamericana S.A.; Wilmington, USA; 1990.
  • 2. Introducción Conceptos Básicos Traductor. Cualquier programa que toma como entrada un texto escrito en un lenguaje llamado fuente y da como salida un programa equivalente en otro lenguaje, el lenguaje objeto. Si el lenguaje fuente de un lenguaje de programación de alto nivel y el objeto un lenguaje de bajo nivel (ensamblador o código de máquina), al traductor se le denomina compilador. Ensamblador. Es un programa traductor cuyo lenguaje fuente es el lenguaje ensamblador. Intérprete. Es un programa que no genera un programa equivalente, sino que toma una sentencia del programa fuente en un lenguaje de alto nivel y la traduce al código equivalente y al mismo tiempo lo ejecuta. En un principio debido a la escasez de memoria se utilizaban más los intérpretes, ahora se usan más los compiladores (a excepción de JAVA)
  • 3. Compilador 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. Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser un código intermedio (bytecode), o simplemente texto. Este proceso de traducción se conoce como compilación. 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.
  • 4.
  • 5. Introducción Conceptos básicos Ventajas de compilar vs a interpretar •Se compila una vez, se ejecuta n veces •En ciclos, la compilación genera código equivalente, interpretándolo se traduce tantas veces una línea como veces se repite el ciclo •El compilador tiene un visión global del programa Ventajas del intérprete vs el compilador •Un intérprete necesita menos memoria que un compilador •Permiten una mayor interactividad con el código en tiempo de desarrollo
  • 6. Introducción Programas que el compilador necesita para obtener un programa ejecutable •Preprocesador •Ligador •Cargador •Depurador •Ensamblador Tipos de compiladores •De una pasada •De múltiples pasadas •De carga y ejecución •De depuración
  • 7. Introducción •De optimización •Ensamblador •Compilador cruzado •Compilador con montador •Autocompilador •Metacompilador •Descompilador Modelo de análisis y síntesis de la compilación Partes en la que está dividida la compilación: análisis y síntesis La síntesis es la que requiere las técnicas más especializadas.
  • 8. Introducción Herramientas de software que realizan algún tipo de análisis a los programas fuente que manipulan: •Editores de estructuras •Impresoras estéticas •Verificadores estáticos •Intérpretes La tecnología de compiladores se aplica en otros lugares, en especial la parte de análisis de los siguientes ejemplos es parecida a la de un compilador convenvcional: •Formadores de Texto . •Compiladores de circuitos de silicio •Intérpretes de consultas
  • 9. Introducción Estructura de un compilador Para la realización del proceso de traducción es necesario dividir el compilador en varias fases. Análisis sintáctico Análisis léxico Análisis semántico Generación de código intermedio Optimización de código Generación de código Programa objeto Manejo de errores Manejo de la Tabla de símbolos Programa fuente
  • 10. Introducción Antes •Una computadora no tenía memoria suficiente •Se tuvo que dividir al compilador en fases •Cada fase leía un archivo y producía otro Actualmente •Se tiene memoria suficiente •El tamaño del archivo ejecutable es relativamente pequeño •Se han reducido el número de pasadas y el número de archivos que se tienen que leer y escribir Las fases de un compilador se agrupan en dos partes o etapas: Análisis léxico (lineal) Análisis sintáctico (jerárquico) Análisis semántico Optimización de código Generación de código Generación de código intermedio Front end (análisis) Back end (síntesis) es la parte del software que interactúa con el o los usuarios y el back-end es la parte que procesa la entrada desde el front-end
  • 11. Introducción Análisis léxico También llamado exploración o scanner. Lee caracteres uno a uno desde la entrada y va formando grupos de caracteres con alguna relación entre sí llamados tokens, los que serán la entrada para la siguiente etapa del compilador. Tipos de tokens: • Tiras específicas • Tiras no específicas Componentes de un token •Tipo o Valor
  • 13. Análisis sintáctico (jerarquico) Recibe como entrada los tokens que le pasa el analizados léxico y comprueba si estos van llegando en el orden correcto. Su salida “teórica” sería un árbol sintáctico. Sus funciones son: •Aceptar lo que es válido sintácticamente y rechazar lo que no lo es •Hacer explícito el orden jerárquico que tienen los operadores en el lenguaje de que se trate •Guiar el proceso de traducción (traducción dirigida por sintaxis)
  • 14.
  • 15.
  • 16.
  • 17. Introducción Un factor de división entre el análisis léxico y sintáctico es la recursión. Análisis semántico Es más difícil de formalizar que el sintáctico. Este trata de encontrar errores semánticos y reunir información sobre los tipos para la fase de generación de código, realizar verificación de tipos. En definitiva comprobará que el significado de lo que va leyendo es válido. La salida teórica será un árbol semántico. Ejemplo: int i,j,k; Análisis Léxico: Devuelve secuencia de tokens. char s[10]; tipo entero id coma id coma id coma puntoycoma s=i+j*k; tipo caracter id indentificador [ entero id identicador] puntoycoma id asignación id suma id multiplicación id puntoycoma Análisis sintáctico: El orden de los tokens es válido Análisis semántico: Tipo de variables asignadas incorrecta
  • 18. Introducción Generación de código intermedio Transforma un árbol sintáctico (semántico) en un representación en un lenguaje intermedio, que suele ser código sencillo que después se convertirá en código de máquina. Propiedades de la representación intermedia: •Debe ser fácil de producir •Debe ser fácil de traducir al programa objeto Un formato de código intermedio es el código de tres direcciones. Forma: A:= B op C, donde A,B,C son operandos y op es un operador binario Se permiten condicionales simples simples y saltos. P/E while (a >0) and (b<(a*4-5)) do a:=b*a-10; L1: if (a>0) goto L2 L4: t1:=b*a goto L3 t2:=t1-10 L2: t1:=a*4 a:=t2 t2:=t1-5 goto L1 if (b < t2) goto L4 L3: ……. goto L3
  • 19. Introducción Optimización de código Trata de conseguir que el programa objeto sea más rápido en la ejecución y que necesite menos memoria a la hora de ejecutarse.(No todos los compiladores llevan a cabo esta etapa) Posibles optimizaciones locales: •Cuando hay dos saltos seguidos se puede quedar uno solo P/E El ejemplo anterior quedaría así: L1: if (a<=0) goto L3 t1:=b*a t1:=a*4 t2:=t1-10 t2:=t1-5 a:=t2 if (b >= t2) goto L3 goto L1 L3: ……. •Eliminar expresiones comunes en favor de una sola expresión a:=b+c+d Quedaría t1:=b+c b:=t1+e b:=b+c+e a:=t1+d
  • 20. Introducción •Optimización de bucles y lazos (sacar expresiones invariantes) P/E Repeat Se saca x:=3 x:=3; y:=y-x*2; until y<0; Generación de código Es la fase final de un compilador y consiste en generar código relocalizable o en ensamblador Tabla de símbolos En esta estructura se almacena información como: variables, etiquetas, tipos, etc. Los accesos a la tabla deben ser lo más rápido posibles Manejo de errores Es una de las misiones más importantes del compilador. Se utiliza más en el análisis pero los errores pueden darse en cualquier fase. El manejo de errores es una tarea difícil por dos motivos:
  • 21. Introducción 1. A veces algunos errores ocultan otros 2. Un error puede provocar una avalancha de errores que se solucionan con el primero Criterios a seguir a la hora de manejar errores 1. Pararse al detectar el primer error (conveniente para un compilador interactivo) 2. Detectar todos los errores de una pasada (conveniente para un compilador de línea)
  • 22. Gracias por su Atención.

Notas del editor

  1. Bytecode conjuntos de bits 0 y 1
  2. Final del frente front end Back end final de atras
  3. Tipo de variables asignadas incorrecta porque creen que es incorecto. Aver ingenieros proque?