1. 1
COMPILADORES Y ANALIZADOR LEXICO
JOHANNA KATHERINE LEAL MARTINEZ
CORPORACIÓN UNIVERSITARIA REMINGTON
FACULTAD DE INGENIERÍA
INGENIERIA DE SISTEMAS
SEMESTRE VI
2014
3. 3
2 INTRODUCCION
En 1946 se desarrolló el primer ordenador digital. En un principio,
estas máquinas ejecutaban instrucciones consistentes en códigos numéricos que
Señalan a los circuitos de la máquina los estados correspondientes a cada
Operación. Esta expresión mediante códigos numéricos se
Llamó Lenguaje Máquina, interpretado por un secuenciador cableado o por un
Microprograma. Pero los códigos numéricos de las máquinas son engorrosos.
Pronto los primeros usuarios de estos ordenadores descubrieron la ventaja de
Escribir sus programas mediante claves más fáciles de recordar que esos códigos
Numéricos; al final, todas esas claves juntas se traducían manualmente a
Lenguaje Máquina. Estas claves constituyen los llamados lenguajes
Ensambladores, que se generalizaron en cuanto se dio el paso decisivo de hacer
Que las propias máquinas realizaran el proceso mecánico de la traducción.
4. 4
3 JUSTIFICACION
El siguiente trabajo se realizó con el propósito de mostrar la estructura y
Funcionalidadde un compilador en el ámbito de la ingeniería de sistemas y como
Una gran herramienta de implementación en el momento de traducir un lenguaje
De alto nivel a uno de más bajo nivel.
5. 5
4 OBJETIVOS
4.1 OBJETIVOS GENERALES
Desarrollar un compilador de código fuente en pseudocódigo para la construcción de
Algoritmos.
4.2 OBJETIVOS ESPECIFICOS
Desarrollar un Portal Web de compilación de código fuente en pseudocódigo para la
Construcción de algoritmos.
6. 6
5 COMPILADORES
Un lenguaje de programación es un lenguaje formal diseñado para
expresar procesos que
Pueden ser llevados a cabo por máquinas como las computadoras.
Pueden usarse para crear programas que controlen el comportamiento físico y
lógico de una
Máquina, para expresar algoritmos con precisión, o como modo de comunicación
humana.
Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que
definen su
Estructura y el significado de sus elementos y expresiones. Al proceso por el cual
se
Escribe, se prueba, se depura, se compila (de ser necesario) y se mantiene
el código
Fuente de un programa informático se le llama programación.
7. 7
6 FASES DE UN COMPILADOR
6.1.1 Análisis
El análisis es la fase en la cual se trata de la escritura correcta del código fuente. Esta a su
vez comprende varias fases:
. Análisis léxico: esta fase es la encargada de leer el código fuente y separarlo en lotes para
poder ser leído por el análisis sintáctico. Esta fase se encarga de verificar si todas las
cadenas pertenecen o no al lenguaje. Es decir realiza un análisis símbolo por símbolo
indicando el token por cada uno de los elementos reconocidos o el error en caso de no
reconocer.
Este análisis no logra detectar muchos errores por su característica.
Ejemplo:
total=valor *5 ;
Luego del análisis léxico: id = id * num.
· Análisis sintáctico: esta fase evalúa los lotes de código con el fin de que este cumpla con
los requerimientos definidos por el compilador. En esta fase se analiza la estructura de las
expresiones en base a gramáticas. Aqui ya se puede determinar si una estructura por
ejemplo una expresión matemática mal formada. El análisis que se realiza es jerarquico es
decir en base a àrboles de derivación que se obtienen de las mismas gramáticas.
8. 8
· Análisis semántico: en esta fase se busca establecer que el código fuente cumpla con la
semántica solicitada por el compilador, es decir que el código este correctamente escrito
para poder ser interpretado. Este análisis es más dificil de formalizar, determina el tipo de
los resultados intermedios, comprobar que los argumentos que tienen un operador
pertenecen al conjunto de operadores posible, y si son compatibles entre sì.
6.1.2 SINTESIS
Es la fase que sigue después del proceso de análisis se procede a generar
grupos de los componentes que conforman el programa, para generar una salida.
· Generación de código intermedio: este código se genera con el fin de mejorar
el uso de la memoria con el fin de optimizar código fuente.
· Optimización de código: el objeto de esta fase es mejorar el código para que
sea más rápido ejecutarlo.
· Generación de código: Aquí se crea el código final de salida que va a ser
interpretado por la máquina.
9. 9
7 ANALIZADOR LEXICO
Un analizador léxico y/o analizador lexicográficoes 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 toques (componentes
léxicos) o símbolos. Estos toques sirven para una posterior etapa del proceso de traducción,
siendo la entrada para el analizador sintáctico.
La especificación de un lenguaje de programación a menudo incluye un conjunto de reglas
que definen el léxico. Estas reglas consisten comúnmente en expresiones regularesque
indican el conjunto de posibles secuencias de caracteres que definen un toquen o lexema.
En algunos lenguajes de programación es necesario establecer patrones para caracteres
especiales (como el espacio en blanco) que la gramática pueda reconocer sin que constituya
un toquen en sí.
10. 10
8 AUTOMATA FINITA
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 caracterespertenecientes 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.
11. 11
9 AUTOMATA DE PILA
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 cadenaconstituida 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 laJerarquía de
Chomsky.
12. 12
10 DIAGRAMA DE ESTADOS
Los diagramas de estado muestran el conjunto de estados por los cuales pasa
un objeto durante su vida en una aplicación en respuesta a eventos (por ejemplo,
mensajes recibidos, tiempo rebasado o errores), junto con sus respuestas y
acciones. También ilustran qué eventos pueden cambiar el estado de los objetos
de la clase. Normalmente contienen: estados y transiciones. Como los estados y
las transiciones incluyen, a su vez, eventos, acciones y actividades, vamos a ver
primero sus definiciones.
Al igual que otros diagramas, en los diagramas de estado pueden aparecer notas
explicativas y restricciones.
13. 13
11 MÁQUINA DE PILA
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 operando". En tal máquina, la mayoría de las
instrucciones implícitamente operan en valores en el tope de la pila y reemplazan esos valores
por el resultado. Típicamente tales 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).
14. 14
12 CONCLUSIONES
Este proyecto ha dejado varias cosas claras 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.
15. 15
13 BIBLIOGRAFIA
WIKIPEDIA. (25 de ABRIL de 2014). WIKIPEDIA. Obtenido de WIKIPEDIA:
https://www.wikipedia.org/
WIKIPEDIA. (25 de ABRIL de 2014). WIKIPEDIA. Obtenido de WIKIPEDIA:
https://www.wikipedia.org/
WIKIPEDIA. (25 de ABRIL de 2014). WIKIPEDIA. Obtenido de WIKIPEDIA:
https://www.wikipedia.org/
WIKIPEDIA. (25 de ABRIL de 2014). WIKIPEDIA. Obtenido de WIKIPEDIA:
https://www.wikipedia.org/
WIKIPEDIA. (25 de ABRIL de 2014). WIKIPEDIA. Obtenido de WIKIPEDIA:
https://www.wikipedia.org/
WIKIPEDIA. (25 de ABRIL de 2014). WIKIPEDIA. Obtenido de WIKIPEDIA:
https://www.wikipedia.org/