SlideShare una empresa de Scribd logo
COMPILADORES
1
COMPILADORES Y ANALIZADOR LEXICOS
FERNANDO JACOME MONTES
CORPORACION UNIVERSITARIA REMINGTON
FACULTAD DE INGENIERIA DE SISTEMAS
SEMESTRE VI
2014
COMPILADORES
2
TABLA DE CONTENIDO
1. INTRODUCCION………………………………………………………………3
2. JUSTIFICASION……………………………………………………………….4
3. OBJETIVOS…………………………………………………………………….5
3.1 0BJETIVOS GENERALES……………………………………………….5
3.2 OBJETIVOS ESPECIFICOS……………………………………………..6
4. COMPILADOR………………………………………………………………….7
5. FASES DEUN COMPILADOR………………………………………………..8
5.1 ANÁLISIS LÉXICO…………………………………………………………9
5.2 ANALISIS SINTACTICO…………………………………………………..11
5.3 ANALISIS SEMANTICO…………………………………………………...12
5.4 GENERACION Y OBTIMIZACION DE CODIGO INTERMEDIO………13
5.5 GENERACION DE CODIGO OBGETO…………………………………..14
6. ANALISIS LEXICO………………………………………………………………16
7. AUTOMATA FINITO…………………………………………………………….17
7.1 AUTOMATA FINITO DETERMINISTA…………………………………...19
7.2 AUTOMATA FINITO NO DE TERMINISTA……………………………...21
8. AUTOMATA DE PILA…………………………………………………………...23
9. DIAGRAMA DE ESTADO……………………………………………………….26
10.DIAGRAMA DE PILA…………………………………………………………….27
11.PRESENTACION Y DEFINICION E IMÁGENES…………………………….30
12. CONCLUSION…………………………………………………………………...32
13. BIBLIOGRAFIA…………………………………………………………………..33
COMPILADORES
3
1. INTRODUCCION
Los principios y técnicas que se usan en la escritura de compiladores se pueden
emplear en muchas otras áreas. Se basa en los conceptos de teoría de autómatas y
lenguajes formales que se están exponiendo en la parte teórica y constituyen un
campo de aplicación práctica bastante directa.
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 que es el sistema operativo, otros
dirán que son las normas y estándares establecidos
COMPILADORES
4
2. JUSTIFICACION
Con esta denominación se agrupan temas que, en currículos clásicos, pueden ser
incluidos de lenguajes formales y de compiladores. 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.
COMPILADORES
5
3. OBJETIVOS
3.1 OBJETIVOS GENERALLES
Adquirir una visión general de las técnicas de implementación de traductores de
lenguaje de programación.
En esta asignatura se pone en juego, desde un punto de
vista aplicando los conocimientos adquiridos a lo largo de la carrera proporciona 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 cada uno de sus componentes
que se proporcionan a lo largo de este proceso
3.2 OBJETIVOS ESPECIFICOS
Conocer el problema que debe resolver un compilador. Su complejidad así como las
faces que lo conforman.
Aprender a implementar programas en código objeto, para
después aprender a traducir códigos de un lenguaje de alto nivel a código objeto.
COMPILADORES
6
Conocer el funcionamiento del analizador léxico, el tipo de
gramáticas que debe reconocer y la forma en la que se puede implementar.
COMPILADORES
7
4. COMPILADOR
Los compiladores son programas de computadora que traducen de un lenguaje a otro.
Un compilador toma como su entrada un programa escrito en lenguaje fuente y
produce un programa equivalente escrito en lenguaje objeto.
Generalmente al lenguaje fuente se le asocia como lenguaje
de alto nivel, mientras al lenguaje objeto se le conoce como código objeto (código de
maquina) escrito específicamente para una maquina objeto. A lo largo del proceso de
traducción el compilador debe informar la presencia de errores en el lenguaje fuente.
Diseñar y desarrollar un compilador, no es tarea fácil, y
quizás pocos profesionales de la computación se vean involucrados en esta tarea.
COMPILADORES
8
No obstante, los compiladores se utilizan en casi todas las
formas de la computación y cualquiera involucrado en esta área debería conocer la
organización y el funcionamiento básico de un compilado.
COMPILADORES
9
5. FACES DE UN COMPILADOR
Un compilador se compone internamente de varias etapas, o fases, que realizan
operaciones lógicas.
Es útil pensar en estas fases como piezas separadas dentro
del compilador, y pueden en realidad escribirse como operaciones codificadas
separadamente aunque en la práctica a menudo se integran.
 A continuación describiremos brevemente cada una de ellas:
 Análisis Léxico
 Análisis Sintáctico
 Análisis Semántico
 Generación y Optimización de código intermedio
 Generación de código objeto
COMPILADORES
10
Imagen 1 Faces Del Compilador
COMPILADORES
11
5.1 Análisis Léxico: lee la secuencia de caracteres de izquierda a derecha del
programa fuente y agrupa las secuencias de caracteres en unidades con significado
propio (componentes léxicos o “tokens” en inglés).
Las palabras clave, identificadores, operadores, constantes
numéricas, signos de puntuación como separadores de sentencias, llaves, paréntesis,
etc., son diversas clasificaciones de componentes léxicos.
COMPILADORES
12
5.2 Análisis Sintáctico: determina si la secuencia de componentes léxicos sigue la
sintaxis del lenguaje y obtiene la estructura jerárquica del programa en forma de árbol,
donde los nodos son las construcciones de alto nivel del lenguaje.
Se determinan las relaciones estructurales entre los
componentes léxicos, esto es semejante a realizar el análisis gramatical sobre una
frase en lenguaje natural. La estructura sintáctica la definiremos mediante las
gramáticas independientes del contexto.
COMPILADORES
13
5.3 Análisis Semántico: realiza las comprobaciones necesarias sobre el árbol
sintáctico para determinar el correcto significado del programa.
Las tareas básicas a realizar son: La verificación e inferencia
de tipos en asignaciones y expresiones, la declaración del tipo de variables y funciones
antes de su uso, el correcto uso de operadores, el ámbito de las variables y la correcta
llamada a funciones. La correcta llamada a funciones.
Nos limitaremos al análisis semántico estático (en tiempo de
compilación), donde es necesario hacer uso de la Tabla de símbolos, como estructura
de datos para almacenar información sobre los identificadores que van surgiendo a lo
largo del programa. El análisis semántico suele agregar atributos (como tipos de datos)
a la estructura del árbol semántico.
El analizador semántico registrara el árbol sintáctico con los
tipos de datos de las sub-expresiones y verificara que la asignación tiene sentido para
los tipos, en caso contrario mandara un mensaje de error en correspondencia de tipos.
De esta forma se obtiene un árbol sintáctico con anotaciones.
COMPILADORES
14
5.4 Generación Y Optimización De Código Intermedio: La optimización consiste en
la calibración del árbol sintáctico donde ya no aparecen construcciones de alto nivel.
Generando un código mejorado, ya no estructurado, más fácil de traducir directamente
a código ensamblador o máquina, compuesto de un código de tres direcciones (cada
instrucción tiene un operador, y la dirección de dos operándoos y un lugar donde
guardar el resultado), también conocida como código intermedio. Resultado), también
conocida como código intermedio.
La etapa de optimización sólo dependen del lenguaje fuente
(y no de la máquina), se busca principalmente: eliminar sub-expresiones comunes,
identificar código muerto, sustituir operaciones aritméticas, cálculo previo de
constantes, variables de inducción, propagación de copias o código inalcanzable. Suele
ser una fase lenta y compleja.
COMPILADORES
15
5.5 Generación De Código Objeto: toma como entrada la representación intermedia y
genera el código objeto. La optimización depende de la máquina, es necesario conocer
el conjunto de instrucciones, la representación de los datos (número de bytes), modos
de direccionamiento, número y propósito de registros, jerarquía de memoria,
encauzamientos, etc.
Suelen implementarse a mano, y son complejos porque la
generación de un buen código objeto requiere la consideración de muchos casos
particulares.
COMPILADORES
16
6. ANALIZADOR LEXICO
un analizador léxico o analizador lexicográfico (en inglés scanner) es la primera fase
de un compilador consistente en un programa que recibe como entrada el código
fuente de otro programa (secuencia de caracteres) y produce una salida compuesta de
tokens (componentes léxicos) o símbolos. Estos tokens sirven para una posterior etapa
del proceso de traducción, siendo la entrada para el analizador sintáctico (en inglés
parser).
COMPILADORES
17
7. AUTÓMATA FINITO
Un autómata finito (AF) o máquina de estado finito es un modelo computacional que
realiza cómputos en forma automática sobre una entrada para producir una salida.
Este modelo está conformado por un alfabeto, un conjunto
de estados y un conjunto de transiciones entre dichos estados. Su funcionamiento se
basa en una función de transición, que recibe a partir de un estado inicial una cadena
de caracteres pertenecientes al alfabeto (la entrada), y que va leyendo dicha cadena a
medida que el autómata se desplaza de un estado a otro, para finalmente detenerse en
un estado final o de aceptación, que representa la salida.
La finalidad de los autómatas finitos es la de reconocer
lenguajes regulares, que corresponden a los lenguajes formales más simples según la
Jerarquía de Chomsky.
COMPILADORES
18
Imagen 2 Autómata Finito
COMPILADORES
19
7.1 Autómata Finito Determinista: AFD que reconoce el lenguaje regular conformado
exclusivamente por las cadenas con un número par de ceros y par de unos.
Un autómata finito determinista (abreviado AFD) es un
autómata finito que además es un sistema determinista; es decir, para cada estado q ∈
Q en que se encuentre el autómata, y con cualquier símbolo a ∈ Σ del alfabeto leído,
existe siempre a lo más una transición posible δ(q,a).
En un AFD no pueden darse ninguno de estos dos casos:
Que existan dos transiciones del tipo δ (q, a)=q1 y δ (q,
a)=q2, siendo q1 ≠ q2;
Que existan transiciones del tipo δ (q, ε), salvo que q sea un
estado final, sin transiciones hacia otros estados.
COMPILADORES
20
Imagen 3 Autómata Finito Determinista
7.2 Autómata Finito No Determinista: AFND con transiciones δ (q0, b)=q0 y δ (q0,
b)=q1, que acepta el lenguaje regular sobre el alfabeto {a} conformado por todas las
palabras que terminan en b; es decir, que equivale a la expresión regular (a|b)*b+.
AFND-ε a cuyo estado 2 se puede acceder pasando por el estado 3, sin procesar
símbolos de entrada.
COMPILADORES
21
Un autómata finito no determinista (abreviado AFND) es
aquel que, a diferencia de los autómatas finitos deterministas, posee al menos un
estado q ∈ Q, tal que para un símbolo a ∈ Σ del alfabeto, existe más de una transición
δ(q,a) posible.
Haciendo la analogía con los AFD, en un AFND puede darse
cualquiera de estos dos casos:
Que existan transiciones del tipo δ (q, a)=q1 y δ (q, a)=q2,
siendo q1 ≠ q2;
Que existan transiciones del tipo δ(q, ε), siendo q un estado
no-final, o bien un estado final pero con transiciones hacia otros estados.
COMPILADORES
22
Cuando se cumple el segundo caso, se dice que el autómata
es un autómata finito no determinista con transiciones vacías o transiciones ε
(abreviado AFND-ε). Estas transiciones permiten al autómata cambiar de estado sin
procesar ningún símbolo de entrada.
Imagen 4 autómata finito no determinista
8. AUTOMATA DE PILA
COMPILADORES
23
Un autómata con pila, autómata a pila o autómata de pila 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. 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.
8.1 Funcionamiento: Los autómatas de pila, en forma similar a como se usan los
autómatas finitos, también se pueden utilizar para aceptar cadenas de un lenguaje
definido sobre un alfabeto A. Los autómatas de pila pueden aceptar lenguajes que no
pueden aceptar los autómatas finitos. Un autómata de pila cuenta con una cinta de
entrada y un mecanismo de control que puede encontrarse en uno de entre un número
finito de estados. Uno de estos estados se designa como estado inicial, y además
algunos estados se llaman de aceptación o finales.
A diferencia de los autómatas finitos, los autómatas de pila
cuentan con una memoria auxiliar llamada pila. Los símbolos (llamados símbolos de
pila) pueden ser insertados o extraídos de la pila, de acuerdo con el manejo last-in-first-
out (LIFO). Las transiciones entre los estados que ejecutan los autómatas de pila
dependen de los símbolos de entrada y de los símbolos de la pila. El autómata acepta
una cadena x si la secuencia de transiciones, comenzando en estado inicial y con pila
vacía, conduce a un estado final, después de leer toda la cadena x.1
COMPILADORES
24
Al igual que un autómata finito un autómata de pila cuenta
con un flujo de entrada y un flujo de control que puede encontrarse en uno de entre un
número finito de estados. Uno de estos estados se designa como el inicial y por lo
menos un estado es de aceptación.
La principal diferencia es que los autómatas de pila cuentan
con una pila en donde pueden almacenar información para recuperarla más tarde.
COMPILADORES
25
Imagen 5 Representación De Autómata De Pila
9. DIAGRAMA DE ESTADO
COMPILADORES
26
Los diagramas de estados son una técnica conocida para describir el
comportamiento de un sistema. Describen todos los estados posibles en los que
puede entrar un objeto particular y la manera en que cambia el estado del
objeto, como resultado de los eventos que llegan a él. En la mayor parte de las
técnicas OO, los diagramas de estados se dibujan para una sola clase,
mostrando el comportamiento de un solo objeto durante todo su ciclo de vida.
Existen muchas formas de diagramas de estados, cada una
con semántica ligeramente diferente. La más popular que se emplea en las técnicas de
OO se basa en la tabla de estados de David Harel (Vol. 8). OMT fue quien la usó por
primera vez para los métodos de OO y fue adoptada por Grady Booch en su segunda
edición (1994).
10.MAQUINA DE PILA
COMPILADORES
27
Una máquina de pila es un modelo computacional 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 máquina verdadera o simulada con un conjunto de instrucciones de "0
operandos”. 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 máquinas 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
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 operandos") 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
COMPILADORES
28
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.
10.1 Desempeño: Las máquinas de pila compiten contra las máquinas de registro
convencionales por la cuota de mercado. Ambas arquitecturas tienen fuerzas. La
discusión siguiente es para dar una idea de las ventajas relativas de las dos
arquitecturas.
Las referencias convencionales dicen8 que las máquinas de
pila son lentas porque las pilas están en memoria, y por lo tanto son más lentos de
acceder que los registros. Sin embargo, esto es algo compensado por el más pequeño
tamaño del código de una máquina de pila, que es más rápida al leer (fetch) y ejecutar.
Esto es confirmado por experimentos con optimización agresiva tanto de la arquitectura
de la máquina como la de los compiladores9 que demuestran que el código de la
máquina de registro tiene 47% menos instrucciones virtuales, y sin embargo, es 25%
más grande que el código de la máquina de pila. Cuando las pilas están en memoria,
una máquina de registro corre cerca de 26.5% más rápida que una máquina de pila, en
gran parte debido a la reutilización de las constantes en los registros.
COMPILADORES
29
El más pequeño tamaño del código de una máquina de pila
puede reducir el tamaño de la memoria y el costo de una computadora. Pocos accesos
de memoria pueden incrementar la velocidad de una máquina de registro, comparada a
una máquina de pila (que tenga las pilas en memoria). Reduciendo el tiempo de
guardado y restauración de registros, una máquina de pila puede tener menos
sobrecarga para responder a las interrupciones.
11.PRESENTACION Y DEFINICION DE IMÁGENES
11.1 Imagen 1: Muestra el proceso y el funcionamiento de las fases de un compilador
mostrando correctamente cada una de ellas según su orden.
COMPILADORES
30
11.2 Imagen 2: Esta imagen muestra que el autómata finito está definido sobre el
alfabeto Σ= {0,1}, posee dos estados s1 y s2, y sus transiciones son δ (s1, 0)=s2, δ (s1,
1)=s1, δ (s2, 0)=s1 y δ (s2, 1)=s2. Su estado inicial es s1, que es también su único
estado final.
11.3 Imagen 3: Esta imagen nos muestra la primera fases del autómata finito AFD que
reconoce el lenguaje regular conformado exclusivamente por las cadenas con un
número par de ceros y par de unos.
11.4 Imagen 4: Esta representa la segunda fase AFND con transiciones δ (q0, b)=q0
y δ (q0, b)=q1, que acepta el lenguaje regular sobre el alfabeto {a, b} conformado por
todas las palabras que terminan en b; es decir, que equivale a la expresión regular (a|
b)*b+. Es decir nos muestra el proceso de ejecución de esta autómata.
11.5 Imagen 5: Esta nos representa y muestra gráficamente el proceso del autómata
de pila y nos enseña que al igual que el autómata finito cuenta con un proceso de
entrada y un flujo de control y uno de estos estados se designa como el inicial y x lo
menos uno es de aceptación
COMPILADORES
31
12.CONCLUSION
COMPILADORES
32
Con la presentación de este proyecto se ha dejado en claro varias cosas de las cuales
nos dejan especificado cada uno de los componentes y fases de un compilador y
también ha permitido elevar la vista y mirar más allá de lo que se ve en el momento.
Podemos darnos cuenta que es posible desarrollar un compilador de un lenguaje de
programación totalmente adaptado a nuestras necesidades basándonos en la teoría de
compiladores.
13.BIBLIOGRAFIA
COMPILADORES
33
 WIKIPEDIA. (25 de ABRIL de 2014). WIKIPEDIA. Obtenido de WIKIPEDIA:
https://www.wikipedia.org/
 Compiladores, Principios, técnicas y herramientas, Alfred V. Aho, Ravi Sethi,
Jeffrey
 Compiladores: Conceptos Fundamentales. B. Teufel, S. Schmidt, T. Teufel. Addison
Wesley Iberoamericana

Más contenido relacionado

La actualidad más candente

Fases del Modelo PSP
Fases del Modelo PSPFases del Modelo PSP
Fases del Modelo PSP
Daniela Camacho
 
Ejemplo plan de desarrollo de software rup
Ejemplo plan de desarrollo de software rupEjemplo plan de desarrollo de software rup
Ejemplo plan de desarrollo de software rupXochitl Saucedo Muñoz
 
Transaccion
TransaccionTransaccion
Transaccion
Alberto Torres
 
Herramientas CASE
Herramientas CASEHerramientas CASE
Herramientas CASE
I R
 
Metodología ICONIX
Metodología ICONIXMetodología ICONIX
Metodología ICONIX
Jimmy Vicente
 
Diseño de interfaces
Diseño de interfacesDiseño de interfaces
Diseño de interfaces
Juan Pablo Bustos Thames
 
Modelos evolutivos. incremental y espiral
Modelos evolutivos. incremental y espiralModelos evolutivos. incremental y espiral
Modelos evolutivos. incremental y espiral
Juan Pablo Bustos Thames
 
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negociosFundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
José Antonio Sandoval Acosta
 
Requerimientos del software
Requerimientos del software Requerimientos del software
Requerimientos del software
Rosa Virginia Ortega Loaiza
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicoslandeta_p
 
Metodologías de desarrollo de software
Metodologías de desarrollo de softwareMetodologías de desarrollo de software
Metodologías de desarrollo de software
Wilfredo Mogollón
 
Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmiCuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmiJimmy Davila
 
Modelo en cascada
Modelo en cascadaModelo en cascada
Modelo en cascada
Juan Pablo Bustos Thames
 
Técnicas para la Obtención de Requerimientos
Técnicas para la Obtención de RequerimientosTécnicas para la Obtención de Requerimientos
Técnicas para la Obtención de Requerimientos
Juan Carlos Olivares Rojas
 
MONITOREO Y AUDITORIA DE LAS BASE DE DATOS..pptx
MONITOREO Y AUDITORIA DE LAS BASE DE DATOS..pptxMONITOREO Y AUDITORIA DE LAS BASE DE DATOS..pptx
MONITOREO Y AUDITORIA DE LAS BASE DE DATOS..pptx
LuciiAntonio
 
Problemas de desempeño en las redes de cómputo
Problemas de desempeño en las redes de cómputoProblemas de desempeño en las redes de cómputo
Problemas de desempeño en las redes de cómputopabloanibaltabango
 

La actualidad más candente (20)

Proceso unificado
Proceso unificadoProceso unificado
Proceso unificado
 
Fases del Modelo PSP
Fases del Modelo PSPFases del Modelo PSP
Fases del Modelo PSP
 
Ejemplo plan de desarrollo de software rup
Ejemplo plan de desarrollo de software rupEjemplo plan de desarrollo de software rup
Ejemplo plan de desarrollo de software rup
 
Tesis con rup
Tesis con rupTesis con rup
Tesis con rup
 
Transaccion
TransaccionTransaccion
Transaccion
 
Herramientas CASE
Herramientas CASEHerramientas CASE
Herramientas CASE
 
Metodología ICONIX
Metodología ICONIXMetodología ICONIX
Metodología ICONIX
 
Diseño de interfaces
Diseño de interfacesDiseño de interfaces
Diseño de interfaces
 
Modelos evolutivos. incremental y espiral
Modelos evolutivos. incremental y espiralModelos evolutivos. incremental y espiral
Modelos evolutivos. incremental y espiral
 
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negociosFundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
 
Requerimientos del software
Requerimientos del software Requerimientos del software
Requerimientos del software
 
Metodología RUP
Metodología RUPMetodología RUP
Metodología RUP
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicos
 
Metodologías de desarrollo de software
Metodologías de desarrollo de softwareMetodologías de desarrollo de software
Metodologías de desarrollo de software
 
Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmiCuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi
 
Modelo en cascada
Modelo en cascadaModelo en cascada
Modelo en cascada
 
Técnicas para la Obtención de Requerimientos
Técnicas para la Obtención de RequerimientosTécnicas para la Obtención de Requerimientos
Técnicas para la Obtención de Requerimientos
 
MONITOREO Y AUDITORIA DE LAS BASE DE DATOS..pptx
MONITOREO Y AUDITORIA DE LAS BASE DE DATOS..pptxMONITOREO Y AUDITORIA DE LAS BASE DE DATOS..pptx
MONITOREO Y AUDITORIA DE LAS BASE DE DATOS..pptx
 
Mitos de-software.
Mitos de-software.Mitos de-software.
Mitos de-software.
 
Problemas de desempeño en las redes de cómputo
Problemas de desempeño en las redes de cómputoProblemas de desempeño en las redes de cómputo
Problemas de desempeño en las redes de cómputo
 

Similar a Proyecto fernando compiladores 1

Compiladores y analizador lexicos
Compiladores y analizador lexicosCompiladores y analizador lexicos
Compiladores y analizador lexicosdiana8320
 
Compiladores (1) pedro vasques
Compiladores (1) pedro vasquesCompiladores (1) pedro vasques
Compiladores (1) pedro vasques
Pitter Antony Vasquez Castellanos
 
Trabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraTrabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraAlexandraMolinaSanchez
 
Trabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraTrabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraAlexandraMolinaSanchez
 
Resumen1
Resumen1Resumen1
Grupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iGrupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iRossana Sosa
 
Programación Y Simulación De Robot SCARA, documento
Programación Y Simulación De Robot SCARA, documentoProgramación Y Simulación De Robot SCARA, documento
Programación Y Simulación De Robot SCARA, documento
Bronson Duhart
 
LENGUAJE DE PROGRAMACION. INVESTIGACION
LENGUAJE DE PROGRAMACION. INVESTIGACIONLENGUAJE DE PROGRAMACION. INVESTIGACION
LENGUAJE DE PROGRAMACION. INVESTIGACION
KathGon1
 
Universidad de panam1.lenguaje de programación
Universidad de panam1.lenguaje de programaciónUniversidad de panam1.lenguaje de programación
Universidad de panam1.lenguaje de programación
Katherine Gonzales
 
Programacion
ProgramacionProgramacion
Programacion
Pablo Amorin Valle
 
Ensambladores
EnsambladoresEnsambladores
Ensambladores
hampacomun
 
Ensambladores
EnsambladoresEnsambladores
Ensambladores
hampacomun
 
Programacion
ProgramacionProgramacion
Programacion
perico2000
 
Programacion
ProgramacionProgramacion
Programacion
perico2000
 
Compiladores
CompiladoresCompiladores
Compiladores
Calzada Meza
 
Apuntes programacion basica
Apuntes programacion basicaApuntes programacion basica
Apuntes programacion basicamarigelcontreras
 

Similar a Proyecto fernando compiladores 1 (20)

Compiladores y analizador lexicos
Compiladores y analizador lexicosCompiladores y analizador lexicos
Compiladores y analizador lexicos
 
Compiladores (1) pedro vasques
Compiladores (1) pedro vasquesCompiladores (1) pedro vasques
Compiladores (1) pedro vasques
 
Trabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraTrabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandra
 
Trabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraTrabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandra
 
Resumen1
Resumen1Resumen1
Resumen1
 
Resumencap1 carmen vargas_jeremycamacho
Resumencap1 carmen vargas_jeremycamachoResumencap1 carmen vargas_jeremycamacho
Resumencap1 carmen vargas_jeremycamacho
 
Grupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iGrupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes i
 
Programación Y Simulación De Robot SCARA, documento
Programación Y Simulación De Robot SCARA, documentoProgramación Y Simulación De Robot SCARA, documento
Programación Y Simulación De Robot SCARA, documento
 
LENGUAJE DE PROGRAMACION. INVESTIGACION
LENGUAJE DE PROGRAMACION. INVESTIGACIONLENGUAJE DE PROGRAMACION. INVESTIGACION
LENGUAJE DE PROGRAMACION. INVESTIGACION
 
Universidad de panam1.lenguaje de programación
Universidad de panam1.lenguaje de programaciónUniversidad de panam1.lenguaje de programación
Universidad de panam1.lenguaje de programación
 
Programacion
ProgramacionProgramacion
Programacion
 
Ensambladores
EnsambladoresEnsambladores
Ensambladores
 
Ensambladores
EnsambladoresEnsambladores
Ensambladores
 
Ensambladores
EnsambladoresEnsambladores
Ensambladores
 
Ensambladores
EnsambladoresEnsambladores
Ensambladores
 
Programacion
ProgramacionProgramacion
Programacion
 
Programacion
ProgramacionProgramacion
Programacion
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Introduccion
IntroduccionIntroduccion
Introduccion
 
Apuntes programacion basica
Apuntes programacion basicaApuntes programacion basica
Apuntes programacion basica
 

Último

MODELO DE REGLAMENTO INTERNO DE TRABAJO DE UNA EMPRESA
MODELO DE REGLAMENTO INTERNO DE TRABAJO DE UNA EMPRESAMODELO DE REGLAMENTO INTERNO DE TRABAJO DE UNA EMPRESA
MODELO DE REGLAMENTO INTERNO DE TRABAJO DE UNA EMPRESA
PETRAESPINOZASALAZAR1
 
Supply Chain Management Universidad César Vallejo
Supply Chain Management Universidad César VallejoSupply Chain Management Universidad César Vallejo
Supply Chain Management Universidad César Vallejo
jeuzouu
 
SESIaN N° 03.pptx GESTION PROYECTOS UCV 2024
SESIaN N° 03.pptx GESTION PROYECTOS UCV 2024SESIaN N° 03.pptx GESTION PROYECTOS UCV 2024
SESIaN N° 03.pptx GESTION PROYECTOS UCV 2024
auyawilly
 
RESPUESTA DERECHO DE PETICION EN PROPIEDAD HORIZONTAL
RESPUESTA DERECHO DE PETICION EN PROPIEDAD HORIZONTALRESPUESTA DERECHO DE PETICION EN PROPIEDAD HORIZONTAL
RESPUESTA DERECHO DE PETICION EN PROPIEDAD HORIZONTAL
dorislilianagarb
 
MODELO CONS1 NOTA1.pptx.....................................................
MODELO CONS1 NOTA1.pptx.....................................................MODELO CONS1 NOTA1.pptx.....................................................
MODELO CONS1 NOTA1.pptx.....................................................
75254036
 
Solicitud de cambio de un producto, a nivel empresarial.
Solicitud de cambio de un producto, a nivel empresarial.Solicitud de cambio de un producto, a nivel empresarial.
Solicitud de cambio de un producto, a nivel empresarial.
femayormisleidys
 
STEEPLE/PESTEL - Análisis de cada Factor
STEEPLE/PESTEL - Análisis de cada FactorSTEEPLE/PESTEL - Análisis de cada Factor
STEEPLE/PESTEL - Análisis de cada Factor
bauldecuentosec
 
niif 15 ejemplos esenciales para su entendimiento
niif 15 ejemplos esenciales para su entendimientoniif 15 ejemplos esenciales para su entendimiento
niif 15 ejemplos esenciales para su entendimiento
crimaldonado
 
Guía para hacer un Plan de Negocio para tu emprendimiento.pdf
Guía para hacer un Plan de Negocio para tu emprendimiento.pdfGuía para hacer un Plan de Negocio para tu emprendimiento.pdf
Guía para hacer un Plan de Negocio para tu emprendimiento.pdf
pppilarparedespampin
 
Karla_Meza_Catedra_Morazanica_TEC18NOV_CAP_3.pptx
Karla_Meza_Catedra_Morazanica_TEC18NOV_CAP_3.pptxKarla_Meza_Catedra_Morazanica_TEC18NOV_CAP_3.pptx
Karla_Meza_Catedra_Morazanica_TEC18NOV_CAP_3.pptx
LibreriaOrellana1
 
VISIÓN MISIÓN VALORES EMPRESARIALES EN EL
VISIÓN MISIÓN VALORES EMPRESARIALES EN ELVISIÓN MISIÓN VALORES EMPRESARIALES EN EL
VISIÓN MISIÓN VALORES EMPRESARIALES EN EL
LilianBaosMedina
 
Exposicion Examen Final Arquitectura Empresarial CANVIA.pdf
Exposicion Examen Final Arquitectura Empresarial CANVIA.pdfExposicion Examen Final Arquitectura Empresarial CANVIA.pdf
Exposicion Examen Final Arquitectura Empresarial CANVIA.pdf
VictorBenjaminGomezS
 
contexto macroeconomico en nicaragua en la actulidad
contexto macroeconomico en nicaragua en la actulidadcontexto macroeconomico en nicaragua en la actulidad
contexto macroeconomico en nicaragua en la actulidad
RamiroSaavedraRuiz
 
Enfoque Estructuralista de la Administración.docx
Enfoque Estructuralista de la Administración.docxEnfoque Estructuralista de la Administración.docx
Enfoque Estructuralista de la Administración.docx
mariferbonilla2
 
CATALOGO 2024 ABRATOOLS - ABRASIVOS Y MAQUINTARIA
CATALOGO 2024 ABRATOOLS - ABRASIVOS Y MAQUINTARIACATALOGO 2024 ABRATOOLS - ABRASIVOS Y MAQUINTARIA
CATALOGO 2024 ABRATOOLS - ABRASIVOS Y MAQUINTARIA
Fernando Tellado
 
PREVENCION DELITOS RELACIONADOS COM INT.pptx
PREVENCION DELITOS RELACIONADOS COM INT.pptxPREVENCION DELITOS RELACIONADOS COM INT.pptx
PREVENCION DELITOS RELACIONADOS COM INT.pptx
johnsegura13
 
U1. C2. TIPOS DE INSTITUCIONES FINANCIERAS.pptx
U1. C2. TIPOS DE INSTITUCIONES FINANCIERAS.pptxU1. C2. TIPOS DE INSTITUCIONES FINANCIERAS.pptx
U1. C2. TIPOS DE INSTITUCIONES FINANCIERAS.pptx
fernfre15
 
Presentación Óxido Cuproso Nordox 75 WG.pptx
Presentación Óxido Cuproso Nordox 75 WG.pptxPresentación Óxido Cuproso Nordox 75 WG.pptx
Presentación Óxido Cuproso Nordox 75 WG.pptx
endophytsanidad
 
EJEMPLO SOLICITUD CERTIFICADO DE INFORMES PREVIOS
EJEMPLO SOLICITUD CERTIFICADO DE INFORMES PREVIOSEJEMPLO SOLICITUD CERTIFICADO DE INFORMES PREVIOS
EJEMPLO SOLICITUD CERTIFICADO DE INFORMES PREVIOS
ArquitecturaClculoCe
 
FINANZAS_CAJA CUSCO PROYECO DE TESIS .pptx
FINANZAS_CAJA CUSCO PROYECO DE TESIS .pptxFINANZAS_CAJA CUSCO PROYECO DE TESIS .pptx
FINANZAS_CAJA CUSCO PROYECO DE TESIS .pptx
YOLISALLOPUMAINCA
 

Último (20)

MODELO DE REGLAMENTO INTERNO DE TRABAJO DE UNA EMPRESA
MODELO DE REGLAMENTO INTERNO DE TRABAJO DE UNA EMPRESAMODELO DE REGLAMENTO INTERNO DE TRABAJO DE UNA EMPRESA
MODELO DE REGLAMENTO INTERNO DE TRABAJO DE UNA EMPRESA
 
Supply Chain Management Universidad César Vallejo
Supply Chain Management Universidad César VallejoSupply Chain Management Universidad César Vallejo
Supply Chain Management Universidad César Vallejo
 
SESIaN N° 03.pptx GESTION PROYECTOS UCV 2024
SESIaN N° 03.pptx GESTION PROYECTOS UCV 2024SESIaN N° 03.pptx GESTION PROYECTOS UCV 2024
SESIaN N° 03.pptx GESTION PROYECTOS UCV 2024
 
RESPUESTA DERECHO DE PETICION EN PROPIEDAD HORIZONTAL
RESPUESTA DERECHO DE PETICION EN PROPIEDAD HORIZONTALRESPUESTA DERECHO DE PETICION EN PROPIEDAD HORIZONTAL
RESPUESTA DERECHO DE PETICION EN PROPIEDAD HORIZONTAL
 
MODELO CONS1 NOTA1.pptx.....................................................
MODELO CONS1 NOTA1.pptx.....................................................MODELO CONS1 NOTA1.pptx.....................................................
MODELO CONS1 NOTA1.pptx.....................................................
 
Solicitud de cambio de un producto, a nivel empresarial.
Solicitud de cambio de un producto, a nivel empresarial.Solicitud de cambio de un producto, a nivel empresarial.
Solicitud de cambio de un producto, a nivel empresarial.
 
STEEPLE/PESTEL - Análisis de cada Factor
STEEPLE/PESTEL - Análisis de cada FactorSTEEPLE/PESTEL - Análisis de cada Factor
STEEPLE/PESTEL - Análisis de cada Factor
 
niif 15 ejemplos esenciales para su entendimiento
niif 15 ejemplos esenciales para su entendimientoniif 15 ejemplos esenciales para su entendimiento
niif 15 ejemplos esenciales para su entendimiento
 
Guía para hacer un Plan de Negocio para tu emprendimiento.pdf
Guía para hacer un Plan de Negocio para tu emprendimiento.pdfGuía para hacer un Plan de Negocio para tu emprendimiento.pdf
Guía para hacer un Plan de Negocio para tu emprendimiento.pdf
 
Karla_Meza_Catedra_Morazanica_TEC18NOV_CAP_3.pptx
Karla_Meza_Catedra_Morazanica_TEC18NOV_CAP_3.pptxKarla_Meza_Catedra_Morazanica_TEC18NOV_CAP_3.pptx
Karla_Meza_Catedra_Morazanica_TEC18NOV_CAP_3.pptx
 
VISIÓN MISIÓN VALORES EMPRESARIALES EN EL
VISIÓN MISIÓN VALORES EMPRESARIALES EN ELVISIÓN MISIÓN VALORES EMPRESARIALES EN EL
VISIÓN MISIÓN VALORES EMPRESARIALES EN EL
 
Exposicion Examen Final Arquitectura Empresarial CANVIA.pdf
Exposicion Examen Final Arquitectura Empresarial CANVIA.pdfExposicion Examen Final Arquitectura Empresarial CANVIA.pdf
Exposicion Examen Final Arquitectura Empresarial CANVIA.pdf
 
contexto macroeconomico en nicaragua en la actulidad
contexto macroeconomico en nicaragua en la actulidadcontexto macroeconomico en nicaragua en la actulidad
contexto macroeconomico en nicaragua en la actulidad
 
Enfoque Estructuralista de la Administración.docx
Enfoque Estructuralista de la Administración.docxEnfoque Estructuralista de la Administración.docx
Enfoque Estructuralista de la Administración.docx
 
CATALOGO 2024 ABRATOOLS - ABRASIVOS Y MAQUINTARIA
CATALOGO 2024 ABRATOOLS - ABRASIVOS Y MAQUINTARIACATALOGO 2024 ABRATOOLS - ABRASIVOS Y MAQUINTARIA
CATALOGO 2024 ABRATOOLS - ABRASIVOS Y MAQUINTARIA
 
PREVENCION DELITOS RELACIONADOS COM INT.pptx
PREVENCION DELITOS RELACIONADOS COM INT.pptxPREVENCION DELITOS RELACIONADOS COM INT.pptx
PREVENCION DELITOS RELACIONADOS COM INT.pptx
 
U1. C2. TIPOS DE INSTITUCIONES FINANCIERAS.pptx
U1. C2. TIPOS DE INSTITUCIONES FINANCIERAS.pptxU1. C2. TIPOS DE INSTITUCIONES FINANCIERAS.pptx
U1. C2. TIPOS DE INSTITUCIONES FINANCIERAS.pptx
 
Presentación Óxido Cuproso Nordox 75 WG.pptx
Presentación Óxido Cuproso Nordox 75 WG.pptxPresentación Óxido Cuproso Nordox 75 WG.pptx
Presentación Óxido Cuproso Nordox 75 WG.pptx
 
EJEMPLO SOLICITUD CERTIFICADO DE INFORMES PREVIOS
EJEMPLO SOLICITUD CERTIFICADO DE INFORMES PREVIOSEJEMPLO SOLICITUD CERTIFICADO DE INFORMES PREVIOS
EJEMPLO SOLICITUD CERTIFICADO DE INFORMES PREVIOS
 
FINANZAS_CAJA CUSCO PROYECO DE TESIS .pptx
FINANZAS_CAJA CUSCO PROYECO DE TESIS .pptxFINANZAS_CAJA CUSCO PROYECO DE TESIS .pptx
FINANZAS_CAJA CUSCO PROYECO DE TESIS .pptx
 

Proyecto fernando compiladores 1

  • 1. COMPILADORES 1 COMPILADORES Y ANALIZADOR LEXICOS FERNANDO JACOME MONTES CORPORACION UNIVERSITARIA REMINGTON FACULTAD DE INGENIERIA DE SISTEMAS SEMESTRE VI 2014
  • 2. COMPILADORES 2 TABLA DE CONTENIDO 1. INTRODUCCION………………………………………………………………3 2. JUSTIFICASION……………………………………………………………….4 3. OBJETIVOS…………………………………………………………………….5 3.1 0BJETIVOS GENERALES……………………………………………….5 3.2 OBJETIVOS ESPECIFICOS……………………………………………..6 4. COMPILADOR………………………………………………………………….7 5. FASES DEUN COMPILADOR………………………………………………..8 5.1 ANÁLISIS LÉXICO…………………………………………………………9 5.2 ANALISIS SINTACTICO…………………………………………………..11 5.3 ANALISIS SEMANTICO…………………………………………………...12 5.4 GENERACION Y OBTIMIZACION DE CODIGO INTERMEDIO………13 5.5 GENERACION DE CODIGO OBGETO…………………………………..14 6. ANALISIS LEXICO………………………………………………………………16 7. AUTOMATA FINITO…………………………………………………………….17 7.1 AUTOMATA FINITO DETERMINISTA…………………………………...19 7.2 AUTOMATA FINITO NO DE TERMINISTA……………………………...21 8. AUTOMATA DE PILA…………………………………………………………...23 9. DIAGRAMA DE ESTADO……………………………………………………….26 10.DIAGRAMA DE PILA…………………………………………………………….27 11.PRESENTACION Y DEFINICION E IMÁGENES…………………………….30 12. CONCLUSION…………………………………………………………………...32 13. BIBLIOGRAFIA…………………………………………………………………..33
  • 3. COMPILADORES 3 1. INTRODUCCION Los principios y técnicas que se usan en la escritura de compiladores se pueden emplear en muchas otras áreas. Se basa en los conceptos de teoría de autómatas y lenguajes formales que se están exponiendo en la parte teórica y constituyen un campo de aplicación práctica bastante directa. 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 que es el sistema operativo, otros dirán que son las normas y estándares establecidos
  • 4. COMPILADORES 4 2. JUSTIFICACION Con esta denominación se agrupan temas que, en currículos clásicos, pueden ser incluidos de lenguajes formales y de compiladores. 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. COMPILADORES 5 3. OBJETIVOS 3.1 OBJETIVOS GENERALLES Adquirir una visión general de las técnicas de implementación de traductores de lenguaje de programación. En esta asignatura se pone en juego, desde un punto de vista aplicando los conocimientos adquiridos a lo largo de la carrera proporciona 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 cada uno de sus componentes que se proporcionan a lo largo de este proceso 3.2 OBJETIVOS ESPECIFICOS Conocer el problema que debe resolver un compilador. Su complejidad así como las faces que lo conforman. Aprender a implementar programas en código objeto, para después aprender a traducir códigos de un lenguaje de alto nivel a código objeto.
  • 6. COMPILADORES 6 Conocer el funcionamiento del analizador léxico, el tipo de gramáticas que debe reconocer y la forma en la que se puede implementar.
  • 7. COMPILADORES 7 4. COMPILADOR Los compiladores son programas de computadora que traducen de un lenguaje a otro. Un compilador toma como su entrada un programa escrito en lenguaje fuente y produce un programa equivalente escrito en lenguaje objeto. Generalmente al lenguaje fuente se le asocia como lenguaje de alto nivel, mientras al lenguaje objeto se le conoce como código objeto (código de maquina) escrito específicamente para una maquina objeto. A lo largo del proceso de traducción el compilador debe informar la presencia de errores en el lenguaje fuente. Diseñar y desarrollar un compilador, no es tarea fácil, y quizás pocos profesionales de la computación se vean involucrados en esta tarea.
  • 8. COMPILADORES 8 No obstante, los compiladores se utilizan en casi todas las formas de la computación y cualquiera involucrado en esta área debería conocer la organización y el funcionamiento básico de un compilado.
  • 9. COMPILADORES 9 5. FACES DE UN COMPILADOR Un compilador se compone internamente de varias etapas, o fases, que realizan operaciones lógicas. Es útil pensar en estas fases como piezas separadas dentro del compilador, y pueden en realidad escribirse como operaciones codificadas separadamente aunque en la práctica a menudo se integran.  A continuación describiremos brevemente cada una de ellas:  Análisis Léxico  Análisis Sintáctico  Análisis Semántico  Generación y Optimización de código intermedio  Generación de código objeto
  • 11. COMPILADORES 11 5.1 Análisis Léxico: lee la secuencia de caracteres de izquierda a derecha del programa fuente y agrupa las secuencias de caracteres en unidades con significado propio (componentes léxicos o “tokens” en inglés). Las palabras clave, identificadores, operadores, constantes numéricas, signos de puntuación como separadores de sentencias, llaves, paréntesis, etc., son diversas clasificaciones de componentes léxicos.
  • 12. COMPILADORES 12 5.2 Análisis Sintáctico: determina si la secuencia de componentes léxicos sigue la sintaxis del lenguaje y obtiene la estructura jerárquica del programa en forma de árbol, donde los nodos son las construcciones de alto nivel del lenguaje. Se determinan las relaciones estructurales entre los componentes léxicos, esto es semejante a realizar el análisis gramatical sobre una frase en lenguaje natural. La estructura sintáctica la definiremos mediante las gramáticas independientes del contexto.
  • 13. COMPILADORES 13 5.3 Análisis Semántico: realiza las comprobaciones necesarias sobre el árbol sintáctico para determinar el correcto significado del programa. Las tareas básicas a realizar son: La verificación e inferencia de tipos en asignaciones y expresiones, la declaración del tipo de variables y funciones antes de su uso, el correcto uso de operadores, el ámbito de las variables y la correcta llamada a funciones. La correcta llamada a funciones. Nos limitaremos al análisis semántico estático (en tiempo de compilación), donde es necesario hacer uso de la Tabla de símbolos, como estructura de datos para almacenar información sobre los identificadores que van surgiendo a lo largo del programa. El análisis semántico suele agregar atributos (como tipos de datos) a la estructura del árbol semántico. El analizador semántico registrara el árbol sintáctico con los tipos de datos de las sub-expresiones y verificara que la asignación tiene sentido para los tipos, en caso contrario mandara un mensaje de error en correspondencia de tipos. De esta forma se obtiene un árbol sintáctico con anotaciones.
  • 14. COMPILADORES 14 5.4 Generación Y Optimización De Código Intermedio: La optimización consiste en la calibración del árbol sintáctico donde ya no aparecen construcciones de alto nivel. Generando un código mejorado, ya no estructurado, más fácil de traducir directamente a código ensamblador o máquina, compuesto de un código de tres direcciones (cada instrucción tiene un operador, y la dirección de dos operándoos y un lugar donde guardar el resultado), también conocida como código intermedio. Resultado), también conocida como código intermedio. La etapa de optimización sólo dependen del lenguaje fuente (y no de la máquina), se busca principalmente: eliminar sub-expresiones comunes, identificar código muerto, sustituir operaciones aritméticas, cálculo previo de constantes, variables de inducción, propagación de copias o código inalcanzable. Suele ser una fase lenta y compleja.
  • 15. COMPILADORES 15 5.5 Generación De Código Objeto: toma como entrada la representación intermedia y genera el código objeto. La optimización depende de la máquina, es necesario conocer el conjunto de instrucciones, la representación de los datos (número de bytes), modos de direccionamiento, número y propósito de registros, jerarquía de memoria, encauzamientos, etc. Suelen implementarse a mano, y son complejos porque la generación de un buen código objeto requiere la consideración de muchos casos particulares.
  • 16. COMPILADORES 16 6. ANALIZADOR LEXICO un analizador léxico o analizador lexicográfico (en inglés scanner) es la primera fase de un compilador consistente en un programa que recibe como entrada el código fuente de otro programa (secuencia de caracteres) y produce una salida compuesta de tokens (componentes léxicos) o símbolos. Estos tokens sirven para una posterior etapa del proceso de traducción, siendo la entrada para el analizador sintáctico (en inglés parser).
  • 17. COMPILADORES 17 7. AUTÓMATA FINITO Un autómata finito (AF) o máquina de estado finito es un modelo computacional que realiza cómputos en forma automática sobre una entrada para producir una salida. Este modelo está conformado por un alfabeto, un conjunto de estados y un conjunto de transiciones entre dichos estados. Su funcionamiento se basa en una función de transición, que recibe a partir de un estado inicial una cadena de caracteres pertenecientes al alfabeto (la entrada), y que va leyendo dicha cadena a medida que el autómata se desplaza de un estado a otro, para finalmente detenerse en un estado final o de aceptación, que representa la salida. La finalidad de los autómatas finitos es la de reconocer lenguajes regulares, que corresponden a los lenguajes formales más simples según la Jerarquía de Chomsky.
  • 19. COMPILADORES 19 7.1 Autómata Finito Determinista: AFD que reconoce el lenguaje regular conformado exclusivamente por las cadenas con un número par de ceros y par de unos. Un autómata finito determinista (abreviado AFD) es un autómata finito que además es un sistema determinista; es decir, para cada estado q ∈ Q en que se encuentre el autómata, y con cualquier símbolo a ∈ Σ del alfabeto leído, existe siempre a lo más una transición posible δ(q,a). En un AFD no pueden darse ninguno de estos dos casos: Que existan dos transiciones del tipo δ (q, a)=q1 y δ (q, a)=q2, siendo q1 ≠ q2; Que existan transiciones del tipo δ (q, ε), salvo que q sea un estado final, sin transiciones hacia otros estados.
  • 20. COMPILADORES 20 Imagen 3 Autómata Finito Determinista 7.2 Autómata Finito No Determinista: AFND con transiciones δ (q0, b)=q0 y δ (q0, b)=q1, que acepta el lenguaje regular sobre el alfabeto {a} conformado por todas las palabras que terminan en b; es decir, que equivale a la expresión regular (a|b)*b+. AFND-ε a cuyo estado 2 se puede acceder pasando por el estado 3, sin procesar símbolos de entrada.
  • 21. COMPILADORES 21 Un autómata finito no determinista (abreviado AFND) es aquel que, a diferencia de los autómatas finitos deterministas, posee al menos un estado q ∈ Q, tal que para un símbolo a ∈ Σ del alfabeto, existe más de una transición δ(q,a) posible. Haciendo la analogía con los AFD, en un AFND puede darse cualquiera de estos dos casos: Que existan transiciones del tipo δ (q, a)=q1 y δ (q, a)=q2, siendo q1 ≠ q2; Que existan transiciones del tipo δ(q, ε), siendo q un estado no-final, o bien un estado final pero con transiciones hacia otros estados.
  • 22. COMPILADORES 22 Cuando se cumple el segundo caso, se dice que el autómata es un autómata finito no determinista con transiciones vacías o transiciones ε (abreviado AFND-ε). Estas transiciones permiten al autómata cambiar de estado sin procesar ningún símbolo de entrada. Imagen 4 autómata finito no determinista 8. AUTOMATA DE PILA
  • 23. COMPILADORES 23 Un autómata con pila, autómata a pila o autómata de pila 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. 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. 8.1 Funcionamiento: Los autómatas de pila, en forma similar a como se usan los autómatas finitos, también se pueden utilizar para aceptar cadenas de un lenguaje definido sobre un alfabeto A. Los autómatas de pila pueden aceptar lenguajes que no pueden aceptar los autómatas finitos. Un autómata de pila cuenta con una cinta de entrada y un mecanismo de control que puede encontrarse en uno de entre un número finito de estados. Uno de estos estados se designa como estado inicial, y además algunos estados se llaman de aceptación o finales. A diferencia de los autómatas finitos, los autómatas de pila cuentan con una memoria auxiliar llamada pila. Los símbolos (llamados símbolos de pila) pueden ser insertados o extraídos de la pila, de acuerdo con el manejo last-in-first- out (LIFO). Las transiciones entre los estados que ejecutan los autómatas de pila dependen de los símbolos de entrada y de los símbolos de la pila. El autómata acepta una cadena x si la secuencia de transiciones, comenzando en estado inicial y con pila vacía, conduce a un estado final, después de leer toda la cadena x.1
  • 24. COMPILADORES 24 Al igual que un autómata finito un autómata de pila cuenta con un flujo de entrada y un flujo de control que puede encontrarse en uno de entre un número finito de estados. Uno de estos estados se designa como el inicial y por lo menos un estado es de aceptación. La principal diferencia es que los autómatas de pila cuentan con una pila en donde pueden almacenar información para recuperarla más tarde.
  • 25. COMPILADORES 25 Imagen 5 Representación De Autómata De Pila 9. DIAGRAMA DE ESTADO
  • 26. COMPILADORES 26 Los diagramas de estados son una técnica conocida para describir el comportamiento de un sistema. Describen todos los estados posibles en los que puede entrar un objeto particular y la manera en que cambia el estado del objeto, como resultado de los eventos que llegan a él. En la mayor parte de las técnicas OO, los diagramas de estados se dibujan para una sola clase, mostrando el comportamiento de un solo objeto durante todo su ciclo de vida. Existen muchas formas de diagramas de estados, cada una con semántica ligeramente diferente. La más popular que se emplea en las técnicas de OO se basa en la tabla de estados de David Harel (Vol. 8). OMT fue quien la usó por primera vez para los métodos de OO y fue adoptada por Grady Booch en su segunda edición (1994). 10.MAQUINA DE PILA
  • 27. COMPILADORES 27 Una máquina de pila es un modelo computacional 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 máquina verdadera o simulada con un conjunto de instrucciones de "0 operandos”. 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 máquinas 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 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 operandos") 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
  • 28. COMPILADORES 28 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. 10.1 Desempeño: Las máquinas de pila compiten contra las máquinas de registro convencionales por la cuota de mercado. Ambas arquitecturas tienen fuerzas. La discusión siguiente es para dar una idea de las ventajas relativas de las dos arquitecturas. Las referencias convencionales dicen8 que las máquinas de pila son lentas porque las pilas están en memoria, y por lo tanto son más lentos de acceder que los registros. Sin embargo, esto es algo compensado por el más pequeño tamaño del código de una máquina de pila, que es más rápida al leer (fetch) y ejecutar. Esto es confirmado por experimentos con optimización agresiva tanto de la arquitectura de la máquina como la de los compiladores9 que demuestran que el código de la máquina de registro tiene 47% menos instrucciones virtuales, y sin embargo, es 25% más grande que el código de la máquina de pila. Cuando las pilas están en memoria, una máquina de registro corre cerca de 26.5% más rápida que una máquina de pila, en gran parte debido a la reutilización de las constantes en los registros.
  • 29. COMPILADORES 29 El más pequeño tamaño del código de una máquina de pila puede reducir el tamaño de la memoria y el costo de una computadora. Pocos accesos de memoria pueden incrementar la velocidad de una máquina de registro, comparada a una máquina de pila (que tenga las pilas en memoria). Reduciendo el tiempo de guardado y restauración de registros, una máquina de pila puede tener menos sobrecarga para responder a las interrupciones. 11.PRESENTACION Y DEFINICION DE IMÁGENES 11.1 Imagen 1: Muestra el proceso y el funcionamiento de las fases de un compilador mostrando correctamente cada una de ellas según su orden.
  • 30. COMPILADORES 30 11.2 Imagen 2: Esta imagen muestra que el autómata finito está definido sobre el alfabeto Σ= {0,1}, posee dos estados s1 y s2, y sus transiciones son δ (s1, 0)=s2, δ (s1, 1)=s1, δ (s2, 0)=s1 y δ (s2, 1)=s2. Su estado inicial es s1, que es también su único estado final. 11.3 Imagen 3: Esta imagen nos muestra la primera fases del autómata finito AFD que reconoce el lenguaje regular conformado exclusivamente por las cadenas con un número par de ceros y par de unos. 11.4 Imagen 4: Esta representa la segunda fase AFND con transiciones δ (q0, b)=q0 y δ (q0, b)=q1, que acepta el lenguaje regular sobre el alfabeto {a, b} conformado por todas las palabras que terminan en b; es decir, que equivale a la expresión regular (a| b)*b+. Es decir nos muestra el proceso de ejecución de esta autómata. 11.5 Imagen 5: Esta nos representa y muestra gráficamente el proceso del autómata de pila y nos enseña que al igual que el autómata finito cuenta con un proceso de entrada y un flujo de control y uno de estos estados se designa como el inicial y x lo menos uno es de aceptación
  • 32. COMPILADORES 32 Con la presentación de este proyecto se ha dejado en claro varias cosas de las cuales nos dejan especificado cada uno de los componentes y fases de un compilador y también ha permitido elevar la vista y mirar más allá de lo que se ve en el momento. Podemos darnos cuenta que es posible desarrollar un compilador de un lenguaje de programación totalmente adaptado a nuestras necesidades basándonos en la teoría de compiladores. 13.BIBLIOGRAFIA
  • 33. COMPILADORES 33  WIKIPEDIA. (25 de ABRIL de 2014). WIKIPEDIA. Obtenido de WIKIPEDIA: https://www.wikipedia.org/  Compiladores, Principios, técnicas y herramientas, Alfred V. Aho, Ravi Sethi, Jeffrey  Compiladores: Conceptos Fundamentales. B. Teufel, S. Schmidt, T. Teufel. Addison Wesley Iberoamericana