SlideShare una empresa de Scribd logo
IS-513 LENGUAJES DE PROGRAMACIÓN
CONTACTO
MSc IBIS JAVIER ZAVALA RODRÍGUEZ
ibis.zavala@unah.hn
+504 3182-1148
IS-513 Lenguajes de Programación
Sábados 8:00 am – 12 m
enero de 2023
UNIVERSIDAD NACIONAL AUTÓNOMA DE
HONDURAS
CENTRO UNIVERSITARIO REGIONAL DEL
LITORAL PACÍFICO
IS-513 LENGUAJES DE PROGRAMACIÓN
IS-513 LENGUAJES DE PROGRAMACIÓN
• Traductor
• Compilador
• Análisis Léxico
• Análisis Sintáctico
• Análisis Semántico
• Generación de Código intermedio
• Optimización de Código
• Intérprete
Actividad #1
Actividad #2
EL PROCESO DE
COMPILACIÓN
04/02/2023
IS-513 LENGUAJES DE PROGRAMACIÓN
TRADUCTOR
IS-513 LENGUAJES DE PROGRAMACIÓN
TRADUCTOR
IS-513 LENGUAJES DE PROGRAMACIÓN
ENSAMBLADOR
IS-513 LENGUAJES DE PROGRAMACIÓN
COMPILADOR
Cualquier compilador debe realizar dos tareas
principales: análisis del programa a compilar y
síntesis de un programa en lenguaje máquina.
Para el estudio de un compilador, es necesario
dividir su trabajo en fases, cada fase
representa una transformación al código fuente
para obtener el código objeto. En cada una de
las fases se utiliza un administrador de la tabla
de símbolos y un manejador de errores.
IS-513 LENGUAJES DE PROGRAMACIÓN
ANÁLISIS LÉXICO
1 fase de compilación
• Divide el programa fuente en unidades sintácticas llamadas
tokens.
• Elimina espacios vacíos y caracteres especiales.
• Interactúa con la tabla de símbolos.
IS-513 LENGUAJES DE PROGRAMACIÓN
Tabla de símbolos
Ejemplo
IS-513 LENGUAJES DE PROGRAMACIÓN
ANÁLISIS SINTÁCTICO
Es la segunda fase del proceso de compilación y tiene como finalidad la
generación de un Árbol sintáctico, el cual no es más que una estructura de
datos compleja que permite representar de una forma más simple al
programa fuente.
Los compiladores modernos utilizan estructuras de objetos para representa a
un programa, de esta forma existe una clase específica para representa cada
posible token de nuestra tabla de símbolos.
IS-513 LENGUAJES DE PROGRAMACIÓN
ANÁLISIS SEMÁNTICO
Es el último paso antes de empezar a compilar realmente el código,
prepara el programa para ser compilado.
Parte del árbol sintáctico abstracto y tiene la finalidad de validar los puntos
más finos del programa, analiza que todo el programa tenga un significado
exacto y que este no pueda fallar en tiempo de ejecución.
Ejemplo, validar compatibilidad en tipos de datos, que la variable utilizada en
una instrucción este previamente declara o que estén dentro del contexto, si
implementamos una interface que todos los métodos estén definidos, etc.
IS-513 LENGUAJES DE PROGRAMACIÓN
CÓDIGO INTERMEDIO
Se puede considerar esta operación intermedia como un subprograma para
una máquina abstracta, a esta representación debe tener dos propiedades
importantes: debe ser fácil de producir y fácil de traducir al programa objeto.
Existe una forma intermedia llamada código de tres direcciones, que consiste
en una secuencia de instrucciones similares a ensamblador, con tres
operandos por instrucción. Cada operando puede actuar como un registro.
Hay varios puntos que vale la pena mencionar sobre las instrucciones
de tres direcciones. En primer lugar, cada instrucción de asignación
de tres direcciones tiene, por lo menos, un operador del lado
derecho. Por ende, estas instrucciones corrigen el orden en el que se
van a realizar las operaciones; la multiplicación va antes que la suma
en el programa fuente. En segundo lugar, el compilador debe generar
un nombre temporal para guardar el valor calculado por una
instrucción de tres direcciones. En tercer lugar, algunas
"instrucciones de tres direcciones" como la primera y la última en la
secuencia anterior, tienen menos de tres operandos.
IS-513 LENGUAJES DE PROGRAMACIÓN
OPTIMIZACIÓN DE CÓDIGO
La fase de optimización de código independiente de la máquina trata de
mejorar el código intermedio, de manera que se produzca un mejor
código destino. Por lo general, mejor significa más rápido, pero pueden
lograrse otros objetivos, como un código más corto, o un código de
destino que consuma menos poder.
El optimizador puede deducir que la conversión del
60, de entero a punto flotante, puede realizarse de
una vez por todas en tiempo de compilación, por lo
que se puede eliminar la operación inttofloat
sustituyendo el entero 60 por el número de punto
flotante 60.0. Lo que, es más, t3 se utiliza sólo una vez
para transmitir su valor a id1, para que el optimizador
pueda transformar (1.3) en la siguiente secuencia más
corta.
IS-513 LENGUAJES DE PROGRAMACIÓN
GENERACIÓN DE CÓDIGO
Recibe como entrada una representación intermedia del programa fuente y
la asigna al lenguaje destino. Si el lenguaje destino es código máquina, se
seleccionan registros o ubicaciones (localidades) de memoria para cada una
de las variables que utiliza el programa. Después, las instrucciones
intermedias se traducen en secuencias de instrucciones de máquina que
realizan la misma tarea. Un aspecto crucial de la generación de código es la
asignación juiciosa de los registros para guardar las variables.
El primer operando de cada instrucción especifica un
destino. La F en cada instrucción nos indica que trata con
número de punto flotante. El código carga el contenido de
la dirección id3 en el registro R2, y después lo multiplica
con la constante de punto flotante 60.0. El # indica que el
número 60.0 se va a tratar como una constante inmediata.
La tercera instrucción mueve id2 al registro R1 y la cuarta lo
suma al valor que se había calculado antes en el
registro R2. Por último, el valor en el registro R1 se
almacena en la dirección de id1, por lo que el código
implementa en forma correcta la instrucción de asignación.
IS-513 LENGUAJES DE PROGRAMACIÓN
MANEJADOR DE ERRORES
Es posible encontrar errores. De esta forma podrán controlarse
más eficientemente los errores encontrados en cada una de las
fases de la compilación de un programa.
IS-513 LENGUAJES DE PROGRAMACIÓN
INTÉRPRETE
IS-513 LENGUAJES DE PROGRAMACIÓN
INTÉRPRETE
Los intérpretes realizan normalmente dos operaciones:
 Traducen el código fuente a un formato interno.
 Ejecutan o interpretan el programa traducido al formato interno.
Particularidades de la interpretación:
 Ahorra memoria.
 Produce un resultado que no se puede
almacenar, lo cual hace la ejecución lenta.
 No demasiado eficiente, cada vez que se
entre en un bucle se analizaran sus
sentencias.
 Facilita el proceso de depuración.
 No produce resultados transportables.
La interpretación es útil en:
 Sistemas interactivos.
 Programas de pequeña envergadura.
 Programas de prototipo y de enseñanza.
IS-513 LENGUAJES DE PROGRAMACIÓN
ACTIVIDAD #1
Viernes 10/02/2023
• 1. Tokens
• 2. Expresiones Regulares
• 3. Gramática libre de contexto
• 4. Árboles de Parseo
• 5. Derivaciones

Más contenido relacionado

Similar a LENGUAJES DE PROGRAMACIÓN UNAH 04022023 .pptx

Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretador
Francisco Leal
 
Lenguaje Ensamblador00
Lenguaje Ensamblador00Lenguaje Ensamblador00
Lenguaje Ensamblador00
Car_00_01
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
Car_00_01
 
Trabajo lenguajes de programacion
Trabajo lenguajes de programacionTrabajo lenguajes de programacion
Trabajo lenguajes de programacion
Julian Suna Paez
 
Resumencap1 carmen vargas_jeremycamacho
Resumencap1 carmen vargas_jeremycamachoResumencap1 carmen vargas_jeremycamacho
Resumencap1 carmen vargas_jeremycamacho
MARCO POLO SILVA SEGOVIA
 
LENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADORLENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADOR
LISBETH ALEXANDRA VASQUEZ CIEZA
 
Trabajo lenguajes de programacion
Trabajo lenguajes de programacionTrabajo lenguajes de programacion
Trabajo lenguajes de programacion
Julian Suna Paez
 
Trabajo lenguajes de programacion
Trabajo lenguajes de programacionTrabajo lenguajes de programacion
Trabajo lenguajes de programacion
Julian Suna Paez
 
Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07
Carlos Pastorino
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
DeisyVilchez
 
Compiladores (1) pedro vasques
Compiladores (1) pedro vasquesCompiladores (1) pedro vasques
Compiladores (1) pedro vasques
Pitter Antony Vasquez Castellanos
 
Generacion codigo intermedio
Generacion codigo intermedioGeneracion codigo intermedio
Generacion codigo intermedio
AndresDvila
 
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
PriceSanchezJose
 
Lenguajes de desarrollo (programación)
Lenguajes de desarrollo (programación)Lenguajes de desarrollo (programación)
Lenguajes de desarrollo (programación)
Raúl Aguirre Martínez
 
Compiladores
CompiladoresCompiladores
Compiladores
henry_shd
 
Assembler apesteguia (1)
Assembler apesteguia (1)Assembler apesteguia (1)
Assembler apesteguia (1)
tonytenorio2
 
Como programar un pic
Como programar un pic  Como programar un pic
Como programar un pic
oskarjgf
 
Compilador
CompiladorCompilador
Compilador
FARIDROJAS
 
Presentación computación 1_compiladores_e_interpretes
Presentación computación 1_compiladores_e_interpretesPresentación computación 1_compiladores_e_interpretes
Presentación computación 1_compiladores_e_interpretes
Michael Vreys
 
Lenguaje assembler
Lenguaje assemblerLenguaje assembler
Lenguaje assembler
Yuceli Barturen Diaz
 

Similar a LENGUAJES DE PROGRAMACIÓN UNAH 04022023 .pptx (20)

Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretador
 
Lenguaje Ensamblador00
Lenguaje Ensamblador00Lenguaje Ensamblador00
Lenguaje Ensamblador00
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Trabajo lenguajes de programacion
Trabajo lenguajes de programacionTrabajo lenguajes de programacion
Trabajo lenguajes de programacion
 
Resumencap1 carmen vargas_jeremycamacho
Resumencap1 carmen vargas_jeremycamachoResumencap1 carmen vargas_jeremycamacho
Resumencap1 carmen vargas_jeremycamacho
 
LENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADORLENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADOR
 
Trabajo lenguajes de programacion
Trabajo lenguajes de programacionTrabajo lenguajes de programacion
Trabajo lenguajes de programacion
 
Trabajo lenguajes de programacion
Trabajo lenguajes de programacionTrabajo lenguajes de programacion
Trabajo lenguajes de programacion
 
Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Compiladores (1) pedro vasques
Compiladores (1) pedro vasquesCompiladores (1) pedro vasques
Compiladores (1) pedro vasques
 
Generacion codigo intermedio
Generacion codigo intermedioGeneracion codigo intermedio
Generacion codigo intermedio
 
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
 
Lenguajes de desarrollo (programación)
Lenguajes de desarrollo (programación)Lenguajes de desarrollo (programación)
Lenguajes de desarrollo (programación)
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Assembler apesteguia (1)
Assembler apesteguia (1)Assembler apesteguia (1)
Assembler apesteguia (1)
 
Como programar un pic
Como programar un pic  Como programar un pic
Como programar un pic
 
Compilador
CompiladorCompilador
Compilador
 
Presentación computación 1_compiladores_e_interpretes
Presentación computación 1_compiladores_e_interpretesPresentación computación 1_compiladores_e_interpretes
Presentación computación 1_compiladores_e_interpretes
 
Lenguaje assembler
Lenguaje assemblerLenguaje assembler
Lenguaje assembler
 

Último

mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
MiguelAtencio10
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
NicandroMartinez2
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
gisellearanguren1
 
Programming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdfProgramming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdf
Manuel Diaz
 
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDADEXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
AngelCristhianMB
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
giampierdiaz5
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
al050121024
 
INFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIAINFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIA
renzocruz180310
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
doctorsoluciones34
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
YaniEscobar2
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
larapalaciosmonzon28
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
AMADO SALVADOR
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
cbtechchihuahua
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
leia ereni
 
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
MiguelAtencio10
 
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
70244530
 
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
codesiret
 
El uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptxEl uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptx
jgvanessa23
 
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
AbrahamCastillo42
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
cecypozos703
 

Último (20)

mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
 
Programming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdfProgramming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdf
 
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDADEXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
 
INFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIAINFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIA
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
 
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
 
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
 
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
 
El uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptxEl uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptx
 
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
 

LENGUAJES DE PROGRAMACIÓN UNAH 04022023 .pptx

  • 1. IS-513 LENGUAJES DE PROGRAMACIÓN CONTACTO MSc IBIS JAVIER ZAVALA RODRÍGUEZ ibis.zavala@unah.hn +504 3182-1148 IS-513 Lenguajes de Programación Sábados 8:00 am – 12 m enero de 2023 UNIVERSIDAD NACIONAL AUTÓNOMA DE HONDURAS CENTRO UNIVERSITARIO REGIONAL DEL LITORAL PACÍFICO IS-513 LENGUAJES DE PROGRAMACIÓN
  • 2. IS-513 LENGUAJES DE PROGRAMACIÓN • Traductor • Compilador • Análisis Léxico • Análisis Sintáctico • Análisis Semántico • Generación de Código intermedio • Optimización de Código • Intérprete Actividad #1 Actividad #2 EL PROCESO DE COMPILACIÓN 04/02/2023
  • 3. IS-513 LENGUAJES DE PROGRAMACIÓN TRADUCTOR
  • 4. IS-513 LENGUAJES DE PROGRAMACIÓN TRADUCTOR
  • 5. IS-513 LENGUAJES DE PROGRAMACIÓN ENSAMBLADOR
  • 6. IS-513 LENGUAJES DE PROGRAMACIÓN COMPILADOR Cualquier compilador debe realizar dos tareas principales: análisis del programa a compilar y síntesis de un programa en lenguaje máquina. Para el estudio de un compilador, es necesario dividir su trabajo en fases, cada fase representa una transformación al código fuente para obtener el código objeto. En cada una de las fases se utiliza un administrador de la tabla de símbolos y un manejador de errores.
  • 7. IS-513 LENGUAJES DE PROGRAMACIÓN ANÁLISIS LÉXICO 1 fase de compilación • Divide el programa fuente en unidades sintácticas llamadas tokens. • Elimina espacios vacíos y caracteres especiales. • Interactúa con la tabla de símbolos.
  • 8. IS-513 LENGUAJES DE PROGRAMACIÓN Tabla de símbolos Ejemplo
  • 9. IS-513 LENGUAJES DE PROGRAMACIÓN ANÁLISIS SINTÁCTICO Es la segunda fase del proceso de compilación y tiene como finalidad la generación de un Árbol sintáctico, el cual no es más que una estructura de datos compleja que permite representar de una forma más simple al programa fuente. Los compiladores modernos utilizan estructuras de objetos para representa a un programa, de esta forma existe una clase específica para representa cada posible token de nuestra tabla de símbolos.
  • 10. IS-513 LENGUAJES DE PROGRAMACIÓN ANÁLISIS SEMÁNTICO Es el último paso antes de empezar a compilar realmente el código, prepara el programa para ser compilado. Parte del árbol sintáctico abstracto y tiene la finalidad de validar los puntos más finos del programa, analiza que todo el programa tenga un significado exacto y que este no pueda fallar en tiempo de ejecución. Ejemplo, validar compatibilidad en tipos de datos, que la variable utilizada en una instrucción este previamente declara o que estén dentro del contexto, si implementamos una interface que todos los métodos estén definidos, etc.
  • 11. IS-513 LENGUAJES DE PROGRAMACIÓN CÓDIGO INTERMEDIO Se puede considerar esta operación intermedia como un subprograma para una máquina abstracta, a esta representación debe tener dos propiedades importantes: debe ser fácil de producir y fácil de traducir al programa objeto. Existe una forma intermedia llamada código de tres direcciones, que consiste en una secuencia de instrucciones similares a ensamblador, con tres operandos por instrucción. Cada operando puede actuar como un registro. Hay varios puntos que vale la pena mencionar sobre las instrucciones de tres direcciones. En primer lugar, cada instrucción de asignación de tres direcciones tiene, por lo menos, un operador del lado derecho. Por ende, estas instrucciones corrigen el orden en el que se van a realizar las operaciones; la multiplicación va antes que la suma en el programa fuente. En segundo lugar, el compilador debe generar un nombre temporal para guardar el valor calculado por una instrucción de tres direcciones. En tercer lugar, algunas "instrucciones de tres direcciones" como la primera y la última en la secuencia anterior, tienen menos de tres operandos.
  • 12. IS-513 LENGUAJES DE PROGRAMACIÓN OPTIMIZACIÓN DE CÓDIGO La fase de optimización de código independiente de la máquina trata de mejorar el código intermedio, de manera que se produzca un mejor código destino. Por lo general, mejor significa más rápido, pero pueden lograrse otros objetivos, como un código más corto, o un código de destino que consuma menos poder. El optimizador puede deducir que la conversión del 60, de entero a punto flotante, puede realizarse de una vez por todas en tiempo de compilación, por lo que se puede eliminar la operación inttofloat sustituyendo el entero 60 por el número de punto flotante 60.0. Lo que, es más, t3 se utiliza sólo una vez para transmitir su valor a id1, para que el optimizador pueda transformar (1.3) en la siguiente secuencia más corta.
  • 13. IS-513 LENGUAJES DE PROGRAMACIÓN GENERACIÓN DE CÓDIGO Recibe como entrada una representación intermedia del programa fuente y la asigna al lenguaje destino. Si el lenguaje destino es código máquina, se seleccionan registros o ubicaciones (localidades) de memoria para cada una de las variables que utiliza el programa. Después, las instrucciones intermedias se traducen en secuencias de instrucciones de máquina que realizan la misma tarea. Un aspecto crucial de la generación de código es la asignación juiciosa de los registros para guardar las variables. El primer operando de cada instrucción especifica un destino. La F en cada instrucción nos indica que trata con número de punto flotante. El código carga el contenido de la dirección id3 en el registro R2, y después lo multiplica con la constante de punto flotante 60.0. El # indica que el número 60.0 se va a tratar como una constante inmediata. La tercera instrucción mueve id2 al registro R1 y la cuarta lo suma al valor que se había calculado antes en el registro R2. Por último, el valor en el registro R1 se almacena en la dirección de id1, por lo que el código implementa en forma correcta la instrucción de asignación.
  • 14. IS-513 LENGUAJES DE PROGRAMACIÓN MANEJADOR DE ERRORES Es posible encontrar errores. De esta forma podrán controlarse más eficientemente los errores encontrados en cada una de las fases de la compilación de un programa.
  • 15. IS-513 LENGUAJES DE PROGRAMACIÓN INTÉRPRETE
  • 16. IS-513 LENGUAJES DE PROGRAMACIÓN INTÉRPRETE Los intérpretes realizan normalmente dos operaciones:  Traducen el código fuente a un formato interno.  Ejecutan o interpretan el programa traducido al formato interno. Particularidades de la interpretación:  Ahorra memoria.  Produce un resultado que no se puede almacenar, lo cual hace la ejecución lenta.  No demasiado eficiente, cada vez que se entre en un bucle se analizaran sus sentencias.  Facilita el proceso de depuración.  No produce resultados transportables. La interpretación es útil en:  Sistemas interactivos.  Programas de pequeña envergadura.  Programas de prototipo y de enseñanza.
  • 17. IS-513 LENGUAJES DE PROGRAMACIÓN ACTIVIDAD #1 Viernes 10/02/2023 • 1. Tokens • 2. Expresiones Regulares • 3. Gramática libre de contexto • 4. Árboles de Parseo • 5. Derivaciones