La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "COMPILADORES Semana 1 Ing. Jorge Vigil Farfán MgTI, PMP, ITIL-Expert, Cloud, ISO 27002, CCNP, CCNA, CCNA Sec, NSE."— Transcripción de la presentación:

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

2 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.

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

4 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.

5 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.

6

7 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.

8 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.

9

10

11 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. 4. + 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 (*). 7. 60 es un lexema que se asigna al token (60 ). El analizador léxico ignora los espacios en blanco que separan a los lexemas.

12

13

14

15

16

17

18 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.

19

20

21 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.

22 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.

23 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.


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

Presentaciones similares


Anuncios Google