Está en la página 1de 19

Lenguajes de Programación

y Proceso de Compilación
Paradigmas de los LP
Podemos citar :
◦ Modelo Imperativo
 Describe los programas en términos de estados y cambio de estados
 Asignación de datos a variables.
 Existencia de estructuras repetitivas
 Basa en el uso procedimientos y funciones
◦ Modelo Funcional
 Fundamenta uso de funciones matemáticas.
 Usa recursividad
 No hace uso de construcciones secuenciales ni iterativas
 Evalúa toda la expresión, no hay asignaciones
 Uso de listas Analí J. Alfaro Alfaro

Ingeniero Informático
Paradigmas de los LP
Podemos citar :
◦ Modelo OO
 Encapsulamiento y TAD (tipos abstractos de datos)
 Clases y objetos
 Herencia , paso de mensajes y polimorfismo
◦ Modelo Lógico
 Basado en la lógica de predicados
 Uso de reglas
 Modelo que usa hechos (datos), reglas (formalización) y deduce conocimiento.
◦ Modelo Concurrente
 Centrado en la comunicación y sincronización de procesos
 Acceso exclusivo a datos compartidos.
Analí J. Alfaro Alfaro

Ingeniero Informático
Criterios de Evaluación LP:
Legibilidad
Expresividad
Buena Definición
Tipos y estructuras de datos
Modularidad
Entrada /Salida
Transportabilidad
Criterios de Evaluación LP:
Eficiencia
Generalidad
Reutilización
Extensibilidad
Distribución
Arquitectura Neutral
Robustez.
Proceso de un LP :
Consideraciones:
◦ Computador comprende lenguaje máquina.
◦ Programamos en lenguajes de alto nivel (facilidad y
fiabilidad).
Cómo puede un programa escrito en LP de alto nivel
ejecutarse?
Puede hacerlo de 3 formas :
◦ Proceso de Compilación
◦ Proceso de Interpretación
◦ Proceso Híbrido
1.- Proceso de Compilación :
Compilador :
◦ Programa en lenguaje máquina
◦ Transformación : programa fuente en programa ejecutable.

Compilador o
Código Fuente Traductor

Datos entrada Código Objeto

Resultados
1.- Proceso de Compilación :
• Proceso de Transformación traducción :
1.- Proceso de Compilación :
La transformación muestra:
◦ Programa Fuente :
 escrito en un LP de alto nivel
◦ Compilador :
 encargado de la traducción y comprobar las llamadas a las
librerías para que se ejecuten correctamente.
◦ Programa Objeto :
 Programa traducido, puede o no estar en lenguaje máquina
 Aún no es directamente ejecutable
1.- Proceso de Compilación :
La transformación muestra:
◦ Programa Ejecutable :
 Traducción completa a lenguaje máquina.
 Hecha por el Enlazador (Linker)o Montador.
 Es directamente ejecutable
◦ Enlazador (Linker) :
 Encargado de insertar al programa objeto el código máquina
de las funciones de las librerías (archivos de biblioteca) usadas
en el programa y de realizar el proceso de montaje.
1.1. Etapas en el proceso Compilación
Las etapas en el proceso de Compilación son:
◦ Análisis
◦ Síntesis
Análisis :
◦ Divide al programa en sus elementos componentes
◦ Crea el código o programa intermedio.
Síntesis :
◦ Construye el código objeto, a partir del código intermedio.
1.1. Etapas en el proceso Compilación
Analizador Lexical
Optimización
Código Código Código Intermedio Código
Fuente
Analizador Sintáctico Intermedio Objeto

Generación Código
Analizador Semántico Objeto

Generac. Código Intermedio Tabla de Símbolos

Análisis Síntesis
1.1.1. Análisis
Analizador Léxico (Scaning):
◦ Funciones:
 construir una secuencia de unidades significativas
sintácticas llamadas Token.
 Reducir el trabajo del analizador sintáctico.
◦ Entrada :
 cadenas de caracteres y los depura.
◦ Construcción Tokens:
 Elimina espacios blancos, comentarios, etc.
 Reconocer token correctos mediante reconocedor de
patrones (autómatas).
1.1.1. Análisis
Analizador Léxico (Scaning):
◦ Reconocimiento token :
 Se construyen autómatas finitos, usando tabla de símbolos
 Un token reconocido  lexema
◦ Tabla de símbolos, almacena todos los identificadores
usados en el programa además sus tipos y la posición de
memoria que ocupan.
◦ Ejemplo
1.1.1. Análisis
Analizador Sintáctico (Parser)
◦ Función:
 Determinar si un programa es correcto sintácticamente,
mediante la construcción de árboles sintácticos.
◦ Árbol sintáctico:
 Organiza los Tokens, usando reglas recursivas conocidas
como gramáticas de libre contexto.
◦ Gramáticas de libre contexto:
 Definidas formalmente con BNF.
◦ Ejemplo
1.1.1. Análisis
Analizador Semántico
◦ Función:
 Verifica que no ocurran errores semánticos
◦ Proceso de verificación, incluye:
 Consultar la tabla de símbolos, para encontrar información
de un identificador y la información ligada a éste.
◦ Además, ayuda en :
 Cada identificador debe ser declarado antes de ser usado.
 No existan identificadores usados en contextos
inapropiados.
1.1.1. Análisis
Analizador Semántico
◦ Función:
 Verifica que no ocurran errores semánticos, usando un
verificador de tipos.
◦ Proceso de verificación, incluye:
 Consultar la tabla de símbolos, para encontrar información
de un identificador y la información ligada a éste.
◦ Verificador de tipos:
 Conversión de tipos
 Resuelve por ejemplo sobrecarga de operadores
 No exista declaración repetida de identificadores
1.1.1. Análisis
Analizador Semántico
◦ Además, ayuda a verificar :
 Cada identificador debe ser declarado antes de ser usado.
 No existan identificadores usados en contextos
inapropiados.
 Concuerden el orden, cantidad y los tipos de parámetros
usados.
Generación de código intermedio:
◦ Representación intermedia independiente de la máquina
1.1.1. Síntesis
Optimización del código intermedio:
◦ Función:
 Mejorar el código intermedio para producir código objeto
más eficiente.
Generación del código Objeto:
◦ Finalmente se transforma el código intermedio mejorado
en código objeto.
◦ Código objeto, puede estar en:
 Lenguaje máquina
 Lenguaje ensamblador
 Lenguaje de alto nivel

También podría gustarte