1
COMPILADORES
COMPILADORES Y ANALIZADOR LEXICOS
DIANA MILENA BOTELLO MONCADA
CORPORACION UNIVERSITARIA REMINGTON
FACULTAD...
2
COMPILADORES
Tabla de contenido
INTRODUCCION…………………………………………………………….……………….3
JUSTIFICACION……………………………………………………………….……………...
3
COMPILADORES
1. INTRODUCCION
En un mundo informatizado como en el que vivimos, en el que cada día que pasa
dependemos má...
4
COMPILADORES
2. JUSTIFICACIÓN
Vemos, por tanto, que los lenguajes humanos, son muy abstractos y poco precisos, no
son ap...
5
COMPILADORES
3. OBJETIVOS GENERALES
Adquirir una visión general de las técnicas de implementación de traductores de
leng...
6
COMPILADORES
4. COMPILADOR
Un compilador es un programa informático que traduce un programa escrito en
un lenguaje de pr...
7
COMPILADORES
 Análisis sintáctico (agrupación de los componentes léxicos en frases gramaticales)
y Análisis semántico (...
8
COMPILADORES
distintas. Suele incluir la generación y optimización del código dependiente de la
máquina.
El código que g...
9
COMPILADORES
1. ANALISIS: El cual se trata de la escritura correcta del código fuente. Esta a su
vez comprende varias fa...
10
COMPILADORES
2. IMAGEN DE FASES DE UN COMPILADOR
FUNCION.
La función principal que cumple es traducir a un lenguaje
muc...
11
COMPILADORES
3. IMAGEN DE LAS FASES DE UN COMPILADOR
6. ANALIZADOR LEXICO
¿Qué es?
Es una herramienta de un compilador ...
12
COMPILADORES
4.FIGURA DE ANALIZADOR LEXICO
7. AUTOMATA FINITO
Un autómata finito o máquina de estado finito es un model...
13
COMPILADORES
 Cada combinación (estado, símbolo de entrada) produce varios estados y
además son posibles las transicio...
14
COMPILADORES
8. AUTOMATA DE PILA
Un modelo matemático de un sistema que recibe una cadena constituida por símbolos
de u...
15
COMPILADORES
9. DIAGRAMA DE ESTADOS
Es una manera para caracterizar un cambio en un sistema, es decir que los objetos q...
16
COMPILADORES
Concepto: Muestra la secuencia de estados por los que pasa
bien un caso de uso, un objeto a lo largo de su...
17
COMPILADORES
instrucciones “load” y “store” no necesitan ningún operando en una máquina de pila
típica-ellas siempre to...
18
COMPILADORES
11. CONCLUSIONES.
Este trabajo servirá mucho en el momento de la creación de un compilador, ya que en
él s...
19
COMPILADORES
ordenamiento que las gramáticas de los compiladores usan. Por lo tanto, no parece tan
complicado crear un ...
20
COMPILADORES
11. BIBLIOGRAFIA.
Principios, técnicas y herramientas, Alfred V. Aho, Ravi Sethi, Jeffrey
D. Ullman. Addis...
21
COMPILADORES
12.VOCABULARIO.
 LOAD: alabar, encomiar, elogiar, aclamar, ensalzar, enaltecer
 STORE: (voz fr.) m. esto...
Upcoming SlideShare
Loading in …5
×

Compiladores y analizador lexicos

342 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
342
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Compiladores y analizador lexicos

  1. 1. 1 COMPILADORES COMPILADORES Y ANALIZADOR LEXICOS DIANA MILENA BOTELLO MONCADA CORPORACION UNIVERSITARIA REMINGTON FACULTAD DE INGENIERIA INGENIERIA DE SISTEMAS SEMESTRE VI 2014
  2. 2. 2 COMPILADORES Tabla de contenido INTRODUCCION…………………………………………………………….……………….3 JUSTIFICACION……………………………………………………………….……………..4 OBJETIVOS GENERALES Y ESPECIFICOS…………….……………………………….5 COMPILADRO………………………………………………………………………………..6 FASES DE COMPILADOR…………………..……………………………………………………………8 ANALIZADOR LÉXICO……………………………………………………………………. 10 AUTÓMATA FINITO……………………………..………………………………….………11 AUTÓMATA DE PILA……………………………………………………………….………13 DIAGRAMA DE ESTADO…………………………………………………………-………14 MAQUINA DE PILA………………………………………………………………..…….….15 CONCLUSIONES……………………..……………………………………………….……16 BIBLIOGRAFÍA………………………………………………………………………………18 VOCABULARIO………………………….…………………………………………….……19
  3. 3. 3 COMPILADORES 1. INTRODUCCION En un mundo informatizado como en el que vivimos, en el que cada día que pasa dependemos más y más de un sistema informático eficiente, el cual debe estar preparado para brindarnos la más alta calidad de servicios y prestaciones. Además de ser sencillo en su manejo y sobre todo confiable, siendo estas características indispensables para el usuario final. Quien no se fija, ni pregunta cómo se realiza determinada tarea, pero si es buen critico a la hora de ver resultados, pero hay otros que contrarios a estos, se hace la pregunta del millón, "¿Cómo se logra hacer tal y tal cosa? ,"¿Cómo es posible que un graficado trabaje tan rápido?, ¿Cómo es posible que un procesador de palabra a la hora de usar un diccionario sea tan eficiente?, ¿Cómo es posible llevar los resultados de una aplicación a otra?, o ¿Cómo es posible que un programa que fue creado por una empresa puede trabajar con los datos de obtenidos de otro programa, echo por otra empresa?.Muchas pueden ser las respuestas, algunos argumentaran q ue es el sistemaoperativo, otros dirán que son las normas y estándares establecidos
  4. 4. 4 COMPILADORES 2. JUSTIFICACIÓN Vemos, por tanto, que los lenguajes humanos, son muy abstractos y poco precisos, no son aptos para una buena comunicación con los computadores, altamente precisos y estructurados. Por lo que se consigue establecer esta comunicación entre seres humanos y computadores con un tipo de lenguaje a medio camino entre ambos interlocutores, conocido como lenguaje de programación, el cual se puede definir como un conjunto de notaciones usadas para describir procesos computacionales a las personas y las maquinas (programas), y su importancia radica en que han ayudado a construir el mundo actual que conocemos basado en el computador, esto debido a que todo el software existente en un computador debe ser escrito en algún lenguaje de programación, pero antes de que un programa pueda ser ejecutado realmente en un computador, el mismo primero debe ser traducido a una forma especial que pueda ser ejecutada y comprendida por un computador, siendo esta labor de traducción llevada a cabo por un software muy especializado conocido con el nombre de compilador o interprete.
  5. 5. 5 COMPILADORES 3. OBJETIVOS GENERALES Adquirir una visión general de las técnicas de implementación de traductores de lenguaje de programación. En esta asignatura se ponen en juego, desde un punto de vista aplicado, los conocimientos adquiridos a lo largo de la carrera proporcionan un buen ejercicio de síntesis sobre la teoría, los métodos y las técnicas aprendidas en programación tales como los compiladores sus fases y dada uno de sus componentes que se proporcionan a lo largo de este proceso. 3.1 OBJETIVOS ESPECIFICOS Conocer el problema que debe resolver un compilador, su Complejidad así como las fases que lo conforman Conocer el funcionamiento del análisis léxico, el tipo de Gramáticas que debe reconocer y la forma en la que se puede implementar Aprender a implementar programas en código objeto, para Después aprender a traducir código de un lenguaje de alto nivel a código objeto
  6. 6. 6 COMPILADORES 4. 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 cómo piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora. Como parte importante de este proceso de traducción, el compilador informa a su usuario de la presencia de errores en el programa fuente. La construcción de un compilador involucra la división del proceso en una serie de fases que variará con su complejidad. Generalmente estas fases se agrupan en dos tareas: el análisis del programa fuente y la síntesis del programa objeto.  ANÁLISIS: Se trata de la comprobación de la corrección del programa fuente, e incluye las fases correspondientes al  Análisis léxico (que consiste en la descomposición del programa fuente en componentes léxicos)
  7. 7. 7 COMPILADORES  Análisis sintáctico (agrupación de los componentes léxicos en frases gramaticales) y Análisis semántico (comprobación de la validez semántica de las sentencias aceptadas en la fase de Análisis Sintáctico).  Síntesis: Su objetivo es la generación de la salida expresada en el lenguaje objeto y suele estar formado por una o varias combinaciones de fases de Generación de Código (normalmente se trata de código intermedio o de código objeto) y de Optimización de Código (en las que se busca obtener un código lo más eficiente posible). Alternativamente, las fases descritas para las tareas de análisis y síntesis se pueden agrupar en Front-end y Back-end:  Front-end: es la parte que analiza el código fuente, comprueba su validez, genera el árbol de derivación y rellena los valores de la tabla de símbolos. Esta parte suele ser independiente de la plataforma o sistema para el cual se vaya a compilar, y está compuesta por las fases comprendidas entre el Análisis Léxico y la Generación de Código Intermedio.  Back-end: es la parte que genera el código máquina, específico de una plataforma, a partir de los resultados de la fase de análisis, realizada por el Front End. Esta división permite que el mismo Back End se utilice para generar el código máquina de varios lenguajes de programación distintos y que el mismo Front End que sirve para analizar el código fuente de un lenguaje de programación concreto sirva para generar código máquina en varias plataformas
  8. 8. 8 COMPILADORES distintas. Suele incluir la generación y optimización del código dependiente de la máquina. El código que genera el Back End normalmente no se puede ejecutar directamente, sino que necesita ser enlazado por un programa enlazador (linker) 1. FIGURA DE UN COMPILADOR 5. FASES DE UN COMPILADOR Un compilador está formado por dos procesos análisis y síntesis.
  9. 9. 9 COMPILADORES 1. ANALISIS: El cual se trata de la escritura correcta del código fuente. Esta a su vez comprende varias fases:  Análisis léxico: esta fase es la encargada de leer el código fuente y separarlo en lotes para poder ser leídos por el análisis sintáctico.  Análisis sintáctico: esta fase evalúa los lotes de código con el fin de que este cumpla con los requisitos definidos por el compilador.  Análisis semántico: en esta fase se busca establecer que el código fuente cumpla con la semántica solicitada por el compilador, es decir que el código este correctamente escrito para poder ser interpretado.  Síntesis: Después del proceso de análisis se procede a generar grupos de los componentes que conforman el programa, para generar una salida.  Generación de código intermedio: este código se genera con el fin de mejorar el uso de la memoria con el fin de optimizar código fuente.  Optimización de código: El objeto de esta fase es mejorar el código para que sea más rápido ejecutarlo.  Generación de código: Aquí se crea el código final de salida que va a ser interpretado por la máquina.
  10. 10. 10 COMPILADORES 2. IMAGEN DE FASES DE UN COMPILADOR FUNCION. La función principal que cumple es traducir a un lenguaje mucho más sencillo y entendible por la maquina informa al usuario si existe errores en el código fuente con el fin de ejecutar la aplicación sin problema, si existe algún error simplemente se detiene. También registra los identificadores utilizados en el programa fuente y toma la información de los atributos de cada identificador. SU FUNCION
  11. 11. 11 COMPILADORES 3. IMAGEN DE LAS FASES DE UN COMPILADOR 6. ANALIZADOR LEXICO ¿Qué es? Es una herramienta de un compilador que nos ayuda a leer los caracteres de entrada para formar componentes y así poder identificarlos y pasar la información ha analizado sintáctico. Los componentes léxicos representen: palabras reservadas: if, while, do etc. Operadores.=+_*/==><!=..Constantes numéricas Constante de caracteres. ¿Cuál es su función? Construye elementos léxicos llamados patrones que serán utilizados posteriormente por un analizador sintáctico. Un patrón es una pareja ordenada compuesta por un tokensy. Un lexema es la secuencia de caracteres que coinciden con un tokens. Salida del analizador léxico: la salida del analizador léxico es un conjunto de tokens ¿Qué es un token? son elementos reservados en el lenguaje de programación ejemplo: identificadores enteros, palabras reservadas, espacios en blanco, paréntesis.
  12. 12. 12 COMPILADORES 4.FIGURA DE ANALIZADOR LEXICO 7. AUTOMATA FINITO Un autómata finito o máquina de estado finito es un modelo matemático de un sistema que recibe una cadena constituida por símbolos de un alfabeto y determina si esa cadena pertenece al lenguaje que el autómata reconoce. Estos se definen mediante una quíntupla (E, Q, F, q0, F) donde: E: alfabeto de entrada Q: conjunto de estados; es conjunto finito no vacío. F: función de transición. f(p.a.)=q q0:(pertenecientes a Q) estado inicial. F:(perteneciente a Q) conjunto de estados finales o de aceptación. CLASIFICACION Los autómatas se pueden clasificar en: Deterministas  Cada combinación (estado, símbolo de entrada) produce un solo estado. No Determinista
  13. 13. 13 COMPILADORES  Cada combinación (estado, símbolo de entrada) produce varios estados y además son posibles las transiciones. 5.FIGURA DE AUTOMATA FINITO
  14. 14. 14 COMPILADORES 8. AUTOMATA DE PILA Un modelo matemático de un sistema que recibe una cadena constituida por símbolos de un alfabeto y determina si esa cadena pertenece al lenguaje que el autómata reconoce. El lenguaje que reconoce un autómata con pila pertenece al grupo de los lenguajes libres de contexto en la clasificación de la jerarquía de Chomsky. . Un autómata de pila es una séptupla M= (Q,Σ,∆,q0,δ,F) donde: Q= conjunto finito de estados Σ= alfabeto de entrada ∆= alfabeto de pila q0∈Q estado inicial
  15. 15. 15 COMPILADORES 9. DIAGRAMA DE ESTADOS Es una manera para caracterizar un cambio en un sistema, es decir que los objetos que lo componen modificaron su estado como respuesta a los sucesos y al tiempo.  Elementos de un diagrama de estado: Estado, evento, punto final, transiciones  Función de los diagramas de estado: se indican que eventos hacen que se pase de un estado a otro y cuáles son las respuestas y acciones que genera. También ilustra que eventos pueden cambiar el estado de los objetos.  Partes de un diagrama de estado: Identifica un periodo de tiempo del objeto (no instantáneo) en el cual el objeto está esperando alguna operación, tiene cierto estado característico o puede recibir cierto tipo de estímulos.  EVENTOS: Es una ocurrencia que puede causar la transición de estados por medio de eventos, puede representarse el momento en el cual se envían mensajes a otros objetos. Diagrama de Estados
  16. 16. 16 COMPILADORES Concepto: Muestra la secuencia de estados por los que pasa bien un caso de uso, un objeto a lo largo de su vida, o bien todo el sistema 6 IMAGEN DIAGRMA DE ESTADOS 10. MAQUINA DE PILA Es un modelo computacional es en el cual la memoria de la computadora toma la forma de una o más pilas. El término también se refiere a un computador real implementando o simulando una máquina de pila idealizada. Adicionalmente, una máquina de pila también puede referirse a una maquina verdadera o simulada con un conjunto de instrucciones de “0 operando” En tal máquina, la mayoría de las instrucciones implícitamente operan en valores en el tope de la pila y reemplazan esos valores por el resultado. Típicamente tales maquinas también tienen una instrucción “load” y una instrucción “store” que leen y escriben a posiciones arbitrarias de la RAM (como el resto de las instrucciones, las
  17. 17. 17 COMPILADORES instrucciones “load” y “store” no necesitan ningún operando en una máquina de pila típica-ellas siempre toman la dirección de la RAM que se quiere leer o escribir desde el tope de la pila. La ventaja de las máquinas de pila (“conjunto de instrucciones de 0 operando”) sobre las máquinas de acumulador (“conjunto de instrucciones de 1 operando”) y las máquinas de registro (“conjunto de instrucciones de 2 operandos”) o un (“conjunto de instrucciones de 3 operandos”) es que los programas escritos para un conjunto de instrucciones de “0 operandos” generalmente tienen una densidad de código más alta que los programas equivalentes escritos para otros conjuntos de instrucciones
  18. 18. 18 COMPILADORES 11. CONCLUSIONES. Este trabajo servirá mucho en el momento de la creación de un compilador, ya que en él se detallan todas y cada una de las partes que involucran a este. Primeramente investigue que existen distintos tipos de compiladores, me gustaría crear un compilador de optimación, ya que pienso que es muy útil a la hora de crear un algoritmo o programa. La función de un compiladores es leer un programa escrito es un lenguaje, en este caso el lenguaje fuente, y lo traduce a un programa equivalente en otro lenguaje, el lenguaje objeto. Me parece fascinante que nosotros podamos crear un compilador en seis meses (en un curso), cuando en los años 50, ya que en aquellos tiempos se tardaron hasta 18 años trabajando en un compilador. Por otro lado, comprendí que un compilador, requiere de una sintaxis y lenguajes específicos, ya que, al igual que el lenguaje humano, si no lo escribimos correctamente el compilador no hará lo que deseamos. Y que en la compilación hay dos partes: Análisis y Síntesis. La parte del análisis divide al programa fuente en sus elementos componentes y crea una representación intermedia. Aprendí que las herramientas que muestran tipos de análisis de programas fuente, son muy útiles al momento de crear un programa al codificar un algoritmo, ya que estas herramientas nos ayudan formateando el texto, corrigiendo errores, dando tips; para que nosotros como programadores seamos más eficientes al momento de crear alguna aplicación. También he notado como todas nuestras materias se van complementando y enlazando, por ejemplo, en matemáticas discretas vimos la representación de árboles, los cuales usamos aquí. Igualmente en estructura de datos I, vimos métodos de
  19. 19. 19 COMPILADORES ordenamiento que las gramáticas de los compiladores usan. Por lo tanto, no parece tan complicado crear un compilador, sólo se necesitan los conocimientos adecuados y dedicarle su tiempo.
  20. 20. 20 COMPILADORES 11. BIBLIOGRAFIA. Principios, técnicas y herramientas, Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman. Addison – Wesley iberoamericana. http://www.dlsi.ua.es/docencia/asignaturas/comp1/comp1.html http://www.cps.unizar.es/~ezpeleta/COMPI http://www.ii.uam.es/~alfonsec mentales. B. Teufel, S. Schmidt, T. Teufel. Addison Wesley Iberoamericana.
  21. 21. 21 COMPILADORES 12.VOCABULARIO.  LOAD: alabar, encomiar, elogiar, aclamar, ensalzar, enaltecer  STORE: (voz fr.) m. estor.  RAM: Random Access Memory) RAM  TOKENS: señal, muestra, prueba

×