SlideShare una empresa de Scribd logo
1 de 33
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

Tareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientosTareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientosnenyta08
 
diagramas de estado
diagramas de estadodiagramas de estado
diagramas de estadoarteaga22
 
Planeacion y elaboración de proyectos de software
Planeacion y elaboración de proyectos de softwarePlaneacion y elaboración de proyectos de software
Planeacion y elaboración de proyectos de softwareTtomas Carvajal
 
MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)Yadith Miranda Silva
 
Base de datos (diseño conceptual,logico y fisico)
Base de datos (diseño conceptual,logico y fisico)Base de datos (diseño conceptual,logico y fisico)
Base de datos (diseño conceptual,logico y fisico)claudiachiri
 
Procesos Planificacion de los Sistemas Operativos
 Procesos Planificacion de los Sistemas Operativos Procesos Planificacion de los Sistemas Operativos
Procesos Planificacion de los Sistemas OperativosG Hoyos A
 
Equipo 6 comparaciones
Equipo 6 comparacionesEquipo 6 comparaciones
Equipo 6 comparacionesgabo
 
Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi Darthuz Kilates
 
Unidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacionUnidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacionIrving Che
 
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS Infomania pro
 
Lenguaje ensamblador basico
Lenguaje ensamblador basicoLenguaje ensamblador basico
Lenguaje ensamblador basicoGustavo Davila
 

La actualidad más candente (20)

Tabla de símbolos
Tabla de símbolosTabla de símbolos
Tabla de símbolos
 
Tareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientosTareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientos
 
Estimación Software por Puntos de Función
Estimación Software por Puntos de FunciónEstimación Software por Puntos de Función
Estimación Software por Puntos de Función
 
diagramas de estado
diagramas de estadodiagramas de estado
diagramas de estado
 
Cuadro comparativo sgbd
Cuadro comparativo sgbdCuadro comparativo sgbd
Cuadro comparativo sgbd
 
Planeacion y elaboración de proyectos de software
Planeacion y elaboración de proyectos de softwarePlaneacion y elaboración de proyectos de software
Planeacion y elaboración de proyectos de software
 
MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)
 
Base de datos (diseño conceptual,logico y fisico)
Base de datos (diseño conceptual,logico y fisico)Base de datos (diseño conceptual,logico y fisico)
Base de datos (diseño conceptual,logico y fisico)
 
Procesos Planificacion de los Sistemas Operativos
 Procesos Planificacion de los Sistemas Operativos Procesos Planificacion de los Sistemas Operativos
Procesos Planificacion de los Sistemas Operativos
 
Principios del RUP
Principios del RUPPrincipios del RUP
Principios del RUP
 
Analizador Léxico en C++
Analizador Léxico en C++Analizador Léxico en C++
Analizador Léxico en C++
 
Equipo 6 comparaciones
Equipo 6 comparacionesEquipo 6 comparaciones
Equipo 6 comparaciones
 
Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi
 
Unidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacionUnidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacion
 
PROTOCOLO DE BLOQUEO EN 2 FASES
PROTOCOLO DE BLOQUEO EN 2 FASESPROTOCOLO DE BLOQUEO EN 2 FASES
PROTOCOLO DE BLOQUEO EN 2 FASES
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Ejercicios
EjerciciosEjercicios
Ejercicios
 
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
 
Lenguaje ensamblador basico
Lenguaje ensamblador basicoLenguaje ensamblador basico
Lenguaje ensamblador basico
 
Tabla De Transicion
Tabla De TransicionTabla De Transicion
Tabla De Transicion
 

Similar a Proyecto fernando compiladores 1

Compiladores y analizador lexicos
Compiladores y analizador lexicosCompiladores y analizador lexicos
Compiladores y analizador lexicosdiana8320
 
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
 
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, documentoBronson Duhart
 
LENGUAJE DE PROGRAMACION. INVESTIGACION
LENGUAJE DE PROGRAMACION. INVESTIGACIONLENGUAJE DE PROGRAMACION. INVESTIGACION
LENGUAJE DE PROGRAMACION. INVESTIGACIONKathGon1
 
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ónKatherine Gonzales
 
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

PRESENTACION FIDELIZACION DE CLIENTES.ppt
PRESENTACION FIDELIZACION DE CLIENTES.pptPRESENTACION FIDELIZACION DE CLIENTES.ppt
PRESENTACION FIDELIZACION DE CLIENTES.pptLEONELREYES28
 
REGIMEN LABORAL - MYPE EN EL PERU 2024.pptx
REGIMEN LABORAL - MYPE EN EL PERU 2024.pptxREGIMEN LABORAL - MYPE EN EL PERU 2024.pptx
REGIMEN LABORAL - MYPE EN EL PERU 2024.pptxMoisesZamalloa
 
Planeación estratégica y PETI para la empresa.pptx
Planeación estratégica y PETI para la empresa.pptxPlaneación estratégica y PETI para la empresa.pptx
Planeación estratégica y PETI para la empresa.pptxdavidson571
 
Infografía RESPONSABILIDAD CIVIL Y PENAL - CULPA PATRONAL
Infografía RESPONSABILIDAD CIVIL Y PENAL - CULPA PATRONALInfografía RESPONSABILIDAD CIVIL Y PENAL - CULPA PATRONAL
Infografía RESPONSABILIDAD CIVIL Y PENAL - CULPA PATRONALbygilprl
 
Metodología de la investigación, 4ta Edición - César A. Bernal-FREELIBROS.ME.pdf
Metodología de la investigación, 4ta Edición - César A. Bernal-FREELIBROS.ME.pdfMetodología de la investigación, 4ta Edición - César A. Bernal-FREELIBROS.ME.pdf
Metodología de la investigación, 4ta Edición - César A. Bernal-FREELIBROS.ME.pdfCesarRafaelBarreraBe1
 
Mezcal con orgullo: Empresa que fabrica mezcal
Mezcal con orgullo: Empresa que fabrica mezcalMezcal con orgullo: Empresa que fabrica mezcal
Mezcal con orgullo: Empresa que fabrica mezcalmarquezorozcomiguel
 
Programas Generación Digital · Generación D Pymes - Personas de Equipos Direc...
Programas Generación Digital · Generación D Pymes - Personas de Equipos Direc...Programas Generación Digital · Generación D Pymes - Personas de Equipos Direc...
Programas Generación Digital · Generación D Pymes - Personas de Equipos Direc...EOI Escuela de Organización Industrial
 
Extracto general.pdf de extracto del banco
Extracto general.pdf de extracto del bancoExtracto general.pdf de extracto del banco
Extracto general.pdf de extracto del bancossuser3307a91
 
PLAN DE NEGOCIOS EJEMPLOS VARIOS utb.pptx
PLAN DE NEGOCIOS EJEMPLOS VARIOS utb.pptxPLAN DE NEGOCIOS EJEMPLOS VARIOS utb.pptx
PLAN DE NEGOCIOS EJEMPLOS VARIOS utb.pptxSergioAntonioAaguaya
 
Aceros de Guatemala Orígenes y Propósito de la Corporación que Revolucionó la...
Aceros de Guatemala Orígenes y Propósito de la Corporación que Revolucionó la...Aceros de Guatemala Orígenes y Propósito de la Corporación que Revolucionó la...
Aceros de Guatemala Orígenes y Propósito de la Corporación que Revolucionó la...casoacerosdeguatemal
 
Proyecto de aprendizaje_ DÍA DE LA MADRE.docx
Proyecto de aprendizaje_ DÍA DE LA MADRE.docxProyecto de aprendizaje_ DÍA DE LA MADRE.docx
Proyecto de aprendizaje_ DÍA DE LA MADRE.docxYURISAYRI
 
Revista La Verdad - Edición Abril 2024
Revista La Verdad  -  Edición Abril 2024Revista La Verdad  -  Edición Abril 2024
Revista La Verdad - Edición Abril 2024larevista
 
Imágenes de cortinas, persianas, toldos, etc.
Imágenes de cortinas, persianas, toldos, etc.Imágenes de cortinas, persianas, toldos, etc.
Imágenes de cortinas, persianas, toldos, etc.Comunidad sdm
 
TRABAJO DE ECOMERCIO ADMINISTRACIÓN 1 CICLO
TRABAJO DE ECOMERCIO ADMINISTRACIÓN 1 CICLOTRABAJO DE ECOMERCIO ADMINISTRACIÓN 1 CICLO
TRABAJO DE ECOMERCIO ADMINISTRACIÓN 1 CICLO73995891
 
López-Administración de proyectos estudios de
López-Administración de proyectos estudios deLópez-Administración de proyectos estudios de
López-Administración de proyectos estudios deCesarRafaelBarreraBe1
 
NOVEDADES RED.ES. Nuevos segmentos y Kit consulting
NOVEDADES RED.ES. Nuevos segmentos y Kit consultingNOVEDADES RED.ES. Nuevos segmentos y Kit consulting
NOVEDADES RED.ES. Nuevos segmentos y Kit consultingJAndresDuVa
 
MENTORÍA en Habilidades Blandas Comunicación Efectiva, Trabajo en Equipo, L...
MENTORÍA en Habilidades Blandas Comunicación Efectiva, Trabajo en Equipo, L...MENTORÍA en Habilidades Blandas Comunicación Efectiva, Trabajo en Equipo, L...
MENTORÍA en Habilidades Blandas Comunicación Efectiva, Trabajo en Equipo, L...Oxford Group
 
DEFINICIÓN, CARACTERISTICAS Y DIFERENCIAS ENTRE LOS VALORES Y LOS ANTIVALORES...
DEFINICIÓN, CARACTERISTICAS Y DIFERENCIAS ENTRE LOS VALORES Y LOS ANTIVALORES...DEFINICIÓN, CARACTERISTICAS Y DIFERENCIAS ENTRE LOS VALORES Y LOS ANTIVALORES...
DEFINICIÓN, CARACTERISTICAS Y DIFERENCIAS ENTRE LOS VALORES Y LOS ANTIVALORES...JavierLopez591396
 
576Presentación CULPA PATRONAL (Responsabilidad Civil y Penal).pdf
576Presentación CULPA PATRONAL (Responsabilidad Civil y Penal).pdf576Presentación CULPA PATRONAL (Responsabilidad Civil y Penal).pdf
576Presentación CULPA PATRONAL (Responsabilidad Civil y Penal).pdfbygilprl
 
Presentación - RESPONSABILIDAD CIVIL Y PENAL - CULPA PATRONAL
Presentación - RESPONSABILIDAD CIVIL Y PENAL - CULPA PATRONALPresentación - RESPONSABILIDAD CIVIL Y PENAL - CULPA PATRONAL
Presentación - RESPONSABILIDAD CIVIL Y PENAL - CULPA PATRONALbygilprl
 

Último (20)

PRESENTACION FIDELIZACION DE CLIENTES.ppt
PRESENTACION FIDELIZACION DE CLIENTES.pptPRESENTACION FIDELIZACION DE CLIENTES.ppt
PRESENTACION FIDELIZACION DE CLIENTES.ppt
 
REGIMEN LABORAL - MYPE EN EL PERU 2024.pptx
REGIMEN LABORAL - MYPE EN EL PERU 2024.pptxREGIMEN LABORAL - MYPE EN EL PERU 2024.pptx
REGIMEN LABORAL - MYPE EN EL PERU 2024.pptx
 
Planeación estratégica y PETI para la empresa.pptx
Planeación estratégica y PETI para la empresa.pptxPlaneación estratégica y PETI para la empresa.pptx
Planeación estratégica y PETI para la empresa.pptx
 
Infografía RESPONSABILIDAD CIVIL Y PENAL - CULPA PATRONAL
Infografía RESPONSABILIDAD CIVIL Y PENAL - CULPA PATRONALInfografía RESPONSABILIDAD CIVIL Y PENAL - CULPA PATRONAL
Infografía RESPONSABILIDAD CIVIL Y PENAL - CULPA PATRONAL
 
Metodología de la investigación, 4ta Edición - César A. Bernal-FREELIBROS.ME.pdf
Metodología de la investigación, 4ta Edición - César A. Bernal-FREELIBROS.ME.pdfMetodología de la investigación, 4ta Edición - César A. Bernal-FREELIBROS.ME.pdf
Metodología de la investigación, 4ta Edición - César A. Bernal-FREELIBROS.ME.pdf
 
Mezcal con orgullo: Empresa que fabrica mezcal
Mezcal con orgullo: Empresa que fabrica mezcalMezcal con orgullo: Empresa que fabrica mezcal
Mezcal con orgullo: Empresa que fabrica mezcal
 
Programas Generación Digital · Generación D Pymes - Personas de Equipos Direc...
Programas Generación Digital · Generación D Pymes - Personas de Equipos Direc...Programas Generación Digital · Generación D Pymes - Personas de Equipos Direc...
Programas Generación Digital · Generación D Pymes - Personas de Equipos Direc...
 
Extracto general.pdf de extracto del banco
Extracto general.pdf de extracto del bancoExtracto general.pdf de extracto del banco
Extracto general.pdf de extracto del banco
 
PLAN DE NEGOCIOS EJEMPLOS VARIOS utb.pptx
PLAN DE NEGOCIOS EJEMPLOS VARIOS utb.pptxPLAN DE NEGOCIOS EJEMPLOS VARIOS utb.pptx
PLAN DE NEGOCIOS EJEMPLOS VARIOS utb.pptx
 
Aceros de Guatemala Orígenes y Propósito de la Corporación que Revolucionó la...
Aceros de Guatemala Orígenes y Propósito de la Corporación que Revolucionó la...Aceros de Guatemala Orígenes y Propósito de la Corporación que Revolucionó la...
Aceros de Guatemala Orígenes y Propósito de la Corporación que Revolucionó la...
 
Proyecto de aprendizaje_ DÍA DE LA MADRE.docx
Proyecto de aprendizaje_ DÍA DE LA MADRE.docxProyecto de aprendizaje_ DÍA DE LA MADRE.docx
Proyecto de aprendizaje_ DÍA DE LA MADRE.docx
 
Revista La Verdad - Edición Abril 2024
Revista La Verdad  -  Edición Abril 2024Revista La Verdad  -  Edición Abril 2024
Revista La Verdad - Edición Abril 2024
 
Imágenes de cortinas, persianas, toldos, etc.
Imágenes de cortinas, persianas, toldos, etc.Imágenes de cortinas, persianas, toldos, etc.
Imágenes de cortinas, persianas, toldos, etc.
 
TRABAJO DE ECOMERCIO ADMINISTRACIÓN 1 CICLO
TRABAJO DE ECOMERCIO ADMINISTRACIÓN 1 CICLOTRABAJO DE ECOMERCIO ADMINISTRACIÓN 1 CICLO
TRABAJO DE ECOMERCIO ADMINISTRACIÓN 1 CICLO
 
López-Administración de proyectos estudios de
López-Administración de proyectos estudios deLópez-Administración de proyectos estudios de
López-Administración de proyectos estudios de
 
NOVEDADES RED.ES. Nuevos segmentos y Kit consulting
NOVEDADES RED.ES. Nuevos segmentos y Kit consultingNOVEDADES RED.ES. Nuevos segmentos y Kit consulting
NOVEDADES RED.ES. Nuevos segmentos y Kit consulting
 
MENTORÍA en Habilidades Blandas Comunicación Efectiva, Trabajo en Equipo, L...
MENTORÍA en Habilidades Blandas Comunicación Efectiva, Trabajo en Equipo, L...MENTORÍA en Habilidades Blandas Comunicación Efectiva, Trabajo en Equipo, L...
MENTORÍA en Habilidades Blandas Comunicación Efectiva, Trabajo en Equipo, L...
 
DEFINICIÓN, CARACTERISTICAS Y DIFERENCIAS ENTRE LOS VALORES Y LOS ANTIVALORES...
DEFINICIÓN, CARACTERISTICAS Y DIFERENCIAS ENTRE LOS VALORES Y LOS ANTIVALORES...DEFINICIÓN, CARACTERISTICAS Y DIFERENCIAS ENTRE LOS VALORES Y LOS ANTIVALORES...
DEFINICIÓN, CARACTERISTICAS Y DIFERENCIAS ENTRE LOS VALORES Y LOS ANTIVALORES...
 
576Presentación CULPA PATRONAL (Responsabilidad Civil y Penal).pdf
576Presentación CULPA PATRONAL (Responsabilidad Civil y Penal).pdf576Presentación CULPA PATRONAL (Responsabilidad Civil y Penal).pdf
576Presentación CULPA PATRONAL (Responsabilidad Civil y Penal).pdf
 
Presentación - RESPONSABILIDAD CIVIL Y PENAL - CULPA PATRONAL
Presentación - RESPONSABILIDAD CIVIL Y PENAL - CULPA PATRONALPresentación - RESPONSABILIDAD CIVIL Y PENAL - CULPA PATRONAL
Presentación - RESPONSABILIDAD CIVIL Y PENAL - CULPA PATRONAL
 

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