COMPILADORES Semana 1 Ing. Jorge Vigil Farfán MgTI, PMP, ITIL-Expert, Cloud, ISO 27002, CCNP, CCNA, CCNA Sec, NSE.

Slides:



Advertisements
Presentaciones similares
Prof. Ing.Maria Rosa Damaso Rios
Advertisements

Facultad de Ciencias de la Computación
Unidad 1. Introducción al proceso de compilación.
Traducción dirigida por la Sintaxis
Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.
M.C. Meliza Contreras González
FUNDAMENTOS DE PROGRAMACION
Resumen de Compilación Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Traducido por Christian Torres Universidad Ricardo.
Procesadores de Lenguajes
Programación de Sistemas
INFORMATICA VII (Programación e implementación de sistemas)
Programación de Sistemas FEI – 2008
Unidad 1. Introducción a los Compiladores.
UNIVERSIDAD LATINA (UNILA)
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.
Preposición: suma= var1 + var2 + 10; Análisis Léxico El analizador léxico lee los caracteres del programa fuente, y verifica que correspondan a una secuencia.
Programación de Sistemas
CENTRO UNIVERSITARIO UAEM TEXCOCO INGENIERÍA EN COMPUTACIÓN
Autómatas y Compiladores. Primera Semana. Ricardo Vargas Del Valle A35469.
Las tres primeras fases de un compilador suelen agrupan en un sola fase llamada Análisis del programa a compilar y las tres ultimas en una sola fase llamada.
Programación II Sesión 3. TABLA DE CONTENIDO  Tipos de Datos en C  Delimitadores  Tipo Char  Tipo Int  Tipo Float  Tipo Double  Constantes  Operadores.
A NÁLISIS L ÉXICO Y ANÁLISIS SINTÁCTICO. COMPILADORES ANÁLISIS LÉXICO Y ANÁLISIS SINTÁCTICO ANGIE EVILLA LUQUEZ CORPORACIÓN UNIVERSITARIA REMINGTON INGENIERÍA.
INFORMÁTICA BÁSICA CURSO DE NIVELACIÓN. CAPITULO I Conceptos Básicos  Objetivo  Introducir al alumno en los conceptos básicos de la informática, tanto.
ALGORITMOS Y TIPOS DE DATOS Un algoritmo es un método para resolver un problema. Para la creación de un programa (resolver un problema) en un lenguaje.
Traducción dirigida por la Sintaxis Teoría de Autómatas y Lenguajes Formales Alma María Pisabarro, 2007.
Ingreso , proceso y salida de datos
L. S. C. A. Raúl Monforte Chulin
PROGRAMACIÓN (1).
ADMINISTRACíON DE LA MEMORIA EN SISTEMAS RECIENTES
LENGUAJES Y REPRESENTACION TECNICA
Lenguajes y representación técnica
LENGUAJES Y REPRESENTACION TECNICA
Básicos de Autómatas.
1 1 1 El Sistema B nar o
TUTORIAL PSeint.
Lenguaje y representación técnica
Software Es intangible, existe como información, ideas, conceptos, símbolos, pero no ocupa un espacio físico, se podría decir que no tiene sustancia. Se.
LÓGICA DE PROGRAMACIÓN
LENGUAJES Y REPRESENTACION TECNICA
INTERNET Actividad 3 Herramientas Tareas Ruben Dario Acosta V.
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
TECNOLOGIA.
Algoritmo Capitulo Cinco.
INTRODUCCIÓN A JAVA.
CONCEPTOS PRELIMINARES (Cont)
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
Java – programación orientada a objetos programación ii – iee
EL SISTEMA OPERATIVO Es un conjunto de programas hechos para la ejecución de varias tareas, en las que sirve de intermediario entre el usuario y la computadora.
U NIVERSIDAD S AN P EDRO F ILIAL B ARRANCA F ACULTAD DE I NGENIERÍA E SCUELA P ROFESIONAL DE I NG. I NFORMÁTICA Y DE S ISTEMAS C URSO : ALGORITMOS Tema.
Programación Orientada a Objetos. ¿Qué es un ordenador? “Un sistema digital con tecnología microelectrónica capaz de procesar información a partir de.
Criterios Evaluación Portafolio de evidencias 5 Mapa conceptual 10 Practicas 30 Examen teórico 20 Analizador Sem. 35.
FUNDAMENTOS DE PROGRAMACIÓN
¿Para qué se utiliza el PSEINT?
ARQUITECTURA DEL COMPUTADOR Ing. Diana E. López.
FUDAMENTOS BÀSICOS computación
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS.
Funciones del Analizador Sintáctico
Fundamentos de la Programación I
Instituto Tecnológico de Minatitlán
LICENCIATURA EN SISTEMAS COMPUTACIONALES EN ADMINISTRACION
ACCIONES Y ESTRUCTURAS
FUNDAMENTOS DE PROGRAMACIÓN. INTRODUCCIÓN  Conceptos: Informática, Ordenador, Programa, Dato, Bit, Byte, Hardware, Software, Lenguaje de Programación,
INFORMÁTICA ING. FÉLIX ARMANDO MEJÍA CAJICÁ. EL COMPUTADOR El computador es una máquina electrónica usada para procesar todo tipo de información. Podemos.
Estructura general de un programa. Estructura general de un programa. Pseudocódigo Diagrama de flujo Concepto de programas. Concepto de programas. Instrucciones.
FUNDAMENTOS DE PROGRAMACIÓN
MATRICES. ¿QUÉ ES UNA MATRIZ? Una matriz es un espacio bidimensional que se genera en la memoria del computador. Las matrices deben tener un nombre que.
UNIVERSIDAD JUÁREZ AUTÓNOMA DE TABASCO Nombres: Isaac Sánchez García Teofilo Martinez Garcia Ricardo Del Carmen Paz López Vanesa Anahí Pérez Lizárraga.
Características de los Sistemas Operativos
UNIDAD 1 Análisis semántico 1.1 ARBOLES DE EXPRESIONES.
DIAGRAMAS DE FLUJO. D I A G R A M A DE F L UJ O EL DI AGRAMA DE FLUJO ES LA REPRESENTACIÓN GRÁFICA DE DICHA SE CUENCIA DE INSTRUCCIONES QUE CONFORMAN.
Transcripción de la presentación:

COMPILADORES Semana 1 Ing. Jorge Vigil Farfán MgTI, PMP, ITIL-Expert, Cloud, ISO 27002, CCNP, CCNA, CCNA Sec, NSE

COMPILADOR un compilador es un programa que puede leer un programa en un lenguaje (el lenguaje fuente) y traducirlo en un programa equivalente en otro lenguaje (el lenguaje destino ). U n a función importante del compilador es reportar cualquier error en el programa fuente que detecte durante el proceso d e traducción.

INTERPRETE Una función importante del compilador es reportar cualquier error en el programa fuente que detecte durante el proceso d e traducción.

El programa destino en lenguaje máquina que produce un compilador es, por lo general, más rápido que un intérprete al momento de asignar las entradas a las salid as. No obstante, por lo regular, el intérprete puede ofrecer mejores diagnósticos de error que un compilador, y a que ejecuta el programa fuente instrucción por instrucción.

EJEMPLO Los procesadores del lenguaje Java combinan la compilación y la interpretación, un programa fuente en Java puede compilarse primero en un formato intermedio, llamado bytecodes. Después, un a máquina virtual los interpreta. Un beneficio de este arreglo es que los bytecodes que se compilan en una máquina pueden interpretarse en otra, tal vez a través d e una red. algunos compiladores de Java, conocidos como compiladores just-in-time (justo a tiempo), traducen los bytecodes en lenguaje máquina justo antes de ejecutar el programa intermedio para procesar la entrada.

EL COMPILADOR Estructura de un compilador Dentro del compilador existen dos procesos: análisis y síntesis. Análisis: Divide el programa fuente en componentes e impone una estructura gramatical sobre ellas. Después utiliza esta estructura para crear una representación intermedia del programa fuente. Si la parte del análisis detecta que el programa fuente está mal formado en cuanto a la sintaxis, o que no tiene una semántica consistente, entonces debe proporcionar mensajes informativos para que el usuario pueda corregirlo. La parte del análisis también recolecta información sobre el programa fuente y la almacena en una estructura de datos llamada tabla de símbolos, la cual se pasa junto con la representación intermedia a la parte de la síntesis.

EL COMPILADOR La síntesis: Construye el programa destino deseado a partir d e la representación intermedia y de la información en la tabla de símbolos. A la parte d el análisis se le llama comúnmente el front-end del compilador; la parte d e la síntesis (propiamente la traducción) es el back-end. Si examinamos el proceso de compilación con más detalle, podremos ver que opera como una secuencia de fases, cada una de las cuales transforma una representación del programa fuente en otro.

EJEMPLO: 1. posiciones un lexema que se asigna a un token (id, 1), en donde id es un símbolo abstracto que representa la palabra identificador y 1 apunta a la entrada en la tabla de símbolos para posición. La entrada en la tabla de símbolos para un identificador contiene información acerca de este, como su nombre y tipo. 2. El símbolo de asignación = es un lexema que se asigna al token (= ). Como este token no necesita un valor-atributo, hemos omitido el segundo componente. Podríamos haber utilizado cualquier símbolo abstracto como asignar para el nombre-token, pero por conveniencia de notación hemos optado por usar el mismo lexema como el nombre para el símbolo abstracto. 3. inicial es un lexema que se asigna al token (id, 2), en donde 2 apunta a la entrada en la tabla de símbolos para inicial es un lexem a que se asign a al token (+ ). 5. velocidad es un lexema que se asigna al token ( id, 3 ), en donde 3 apunta a la entrada en la tabla de símbolos para velocidad. 6. * es un lexema que se asigna al token (*) es un lexema que se asigna al token (60 ). El analizador léxico ignora los espacios en blanco que separan a los lexemas.

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. Por ejemplo, un algoritmo directo genera el código intermedio (1.3), usando una instrucción para cada operador en la representación tipo árbol que produce el analizador semántico.

AUTÓMATAS FINITOS La teoría de autómatas se ocupa de clasificar y estudiar de modo sistemático diferentes tipos de máquinas abstractas que llevan a cabo un procesamiento secuencial de la información. Dentro del conjunto de las máquinas abstractas que estudiaremos en esta asignatura, los Autómatas Finitos constituyen el grupo de máquinas más sencillas y que, por tanto, tienen un menor poder funcional. El estudio de los autómatas finitos se utiliza para modelar el comportamiento de dispositivos mecánicos y también de sistemas naturales. Concretamente, permite estudiar procesos que dependen de una historia, es decir, sistemas cuyo comportamiento actual depende del pasado.

ANALIZADOR DE LEXICO La principal tarea del analizador léxico es leer los caracteres de la entrada del programa fuente, agruparlos en lexemas y producir como salida una secuencia de tokens para cada lexema en el programa fuente. El flujo de tokens se envía al analizador sintáctico para su análisis. Con frecuencia el analizador léxico interactúa también con la tabla de símbolos. Cuando el analizador léxico descubre un lexema que constituye a un identificador, debe introducir ese lexema en la tabla de símbolos. En algunos casos, el analizador léxico puede leer la información relacionada con el tipo de información de la tabla de símbolos, como ayuda para determinar el token apropiado que debe pasar al analizador sintáctico.

Algunas veces, los analizadores léxicos se dividen en una cascada de dos procesos: a) E l escaneo con siste en los procesos sim p les que no requieren la determ inación d e tokens d e la entrada, com o la elim inación de com entarios y la com pactación d e los caracteres d e espacio en blanco con secu tivos en uno solo. b) E l propio análisis léxico es la porción m ás com pleja, en d on d e el escanear produce la secu en cia d e tokens com o salida.