Corporacion universitaria remington compiladores deisy
-
Upload
deisy-nereida-lozada-ortiz -
Category
Documents
-
view
99 -
download
1
Transcript of Corporacion universitaria remington compiladores deisy
COMPILADORES
CORPORACION UNIVERSITARIA REMINGTON
INGENIERIA DE SISTEMAS
COMPILADORES
COMPILADORES Y ANALIZADOR LEXICO
PREPARADO POR
DEISY NEREIDA LOZADA ORTIZ
NORTE DE SANTANDER, COLOMBIA
2014
COMPILADORES
TABLA DE CONTENIDO
INTRODUCCION
JUSTIFICACION
OBJETIVOS
OBJETIVOS GENERALES
OBJETIVOS ESPECIFICOS
1. EL COMPILADOR Y SU FUNCION:
2. LAS FASES DEL COMPILADOR Y SUS FUNCIONES:
2.1 Análisis
2.1.1: Análisis léxico
2.1.2: Análisis sintáctico
2.1.3: Análisis semántico2.2: Síntesis
2.2. Síntesis.
2.2.1: Generación de código intermedio
COMPILADORES
2.2.2: Optimización de código:
2.2.3: Generación de código
3 Analizador léxico
4. Autómata finito
5. Autómata de pila
6. Diagrama de estado
7. Máquina de pila
Conclusiones
Bibliografía
Vocabulario
Índice de imagen
INTRODUCCION
COMPILADORES
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. A este trabajo se le
llama ensamblar el programa.
COMPILADORES
JUSTIFICACION
El diseño de compiladores implica conocimientos avanzados en estructuras de datos, diseño
de software y arquitecturas de bajo nivel, y la aplicación de estos conocimientos en forma
práctica. Esto hace que la materia se convierta en una herramienta efectiva al momento de
consolidar la formación del alumno y le brinda capacidades para en el futuro poder aplicar
los conocimientos y resolver problemas reales.
COMPILADORES
OBJETIVOS
OBJETIVOS GENERALES
Comprender los principios de la teoría de Compiladores.
2. Aplicar los conocimientos mediante el desarrollo de las fases de un compilador
OBJETIVOS ESPECIFICOS
Que el estudiante realice una aplicación interactiva que trabaje conjuntamente con
el analizador.
Que el estudiante sea capaz de crear gramáticas y de recuperarse de errores léxicos,
sintácticos.
Iniciar el proceso de aprendizaje de herramientas generadoras de Analizadores
Léxicos y Sintácticos.
COMPILADORES
1. EL COMPILADOR Y SU FUNCION:
Imagen Nro. 1 de la operación de un buen compilador.
Un compilador es un programa informático que traduce un programa escrito en un lenguaje
de programación a otro lenguaje de programación, generando un programa equivalente que
la máquina será capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de
máquina, pero también puede ser un código intermedio (bytecode), o simplemente texto.
Este proceso de traducción se conoce como compilación.1
COMPILADORES
Un compilador es un programa que permite traducir el código
fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior
(típicamente lenguaje de máquina). De esta manera un programador puede diseñar un
programa en un lenguaje mucho más cercano a cómo piensa un ser humano, para
luego compilarlo a un programa más manejable por una computadora.
2. LAS FASES DEL COMPILADOR Y SUS FUNCIONES:
Un compilador está formado por dos procesos análisis y síntesis.
Léxico
Análisis Sintáctico
Semántico
Fases de un compilador
Generación de código
Intermedio
Síntesis optimización de código
Generación de código
COMPILADORES
Imagen Nro. 2 fases del compilador.
2.1 Análisis: El cual se trata de la escritura correcta del código fuente. Esta a su vez comprende varias fases:
2.1.1: 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.
2.1.2: 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.
2.1.3: 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.
2.2: Síntesis: Después del proceso de análisis se procede a generar grupos de los componentes que conforman el programa, para generar una salida.
2.2.1: 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.
COMPILADORES
2.2.2: Optimización de código: el objeto de esta fase es mejorar el código para que sea más rápido ejecutarlo.
2.2.3: Generación de código: Aquí se crea el código final de salida que va a ser interpretado por la máquina.
3 ANALIZADOR LEXICO
Un analizador léxico y/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).
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 regulares que indican el conjunto de posibles secuencias de caracteres que
definen un token o lexema.
COMPILADORES
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 token en sí.
4. AUTOMATA 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.
Formalmente, un autómata finito es una 5-tupla (Q, Σ, q0, δ, F) donde:6
COMPILADORES
es un conjunto finito de estados;
es un alfabeto finito;
es el estado inicial;
es una función de transición;
es un conjunto de estados finales o de aceptación. La interpretación de ,
con , y es la siguiente:
Cuando el estado del autómata es, el símbolo que la cabeza lectora está
inspeccionando en ese momento es, y en la cima de la pila nos encontramos el
símbolo , se realizan las siguientes acciones:
Sí, es decir no es la cadena vacía, la cabeza lectora avanza una posición para
inspeccionar el siguiente símbolo.
Se elimina el símbolo de la pila del autómata.
Se selecciona un par de entre los existentes en la definición de, la función de
transición del autómata.
Se apila la cadena, con en la pila del autómata, quedando el símbolo en la cima de
la pila.
Se cambia el control del autómata al estado.
Una máquina de este tipo se representa de la siguiente forma
COMPILADORES
Imagen Nro. 3 autómata finito.
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.
COMPILADORES
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.
Los símbolos que pueden almacenarse en esta pila se conocen
como símbolos de pila de la máquina, constituyen un conjunto finito que puede incluir
algunos símbolos definiendo el alfabeto de la máquina y quizá algunos símbolos
adicionales que se utilizan como marcas internas. Si una máquina inserta un símbolo
especial en la pila antes de efectuar algún otro cálculo, entonces ese símbolo en la cima de
la pila puede usarse como indicador de pila vacía para cálculos posteriores, dicho símbolo
es #.2
5. 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 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.
COMPILADORES
6. DIAGRAMA DE ESTADO:
Este muestra la secuencia de estados por los que pasa bien un caso de uso, un objeto a lo
largo de su vida, o bien todo el sistema. Es una forma de representación gráfica más
intuitiva de los autómatas finitos basadas en dígrafos con arcos acotados llamados
transiciones en los cuales se ponen los símbolos de tránsito entre un vértice (estado) y otro
y se identifican los estados de partida y los de aceptación del resto. Los diagramas de
estados finitos son también representaciones más cómodas para su elaboración, legibilidad
y comprensión de distintos tipos de abstracciones computacionales de reconocimiento
como los autómatas de pila y las máquinas de Turing
7. MAQUINA 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.
COMPILADORES
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).
La ventaja de las máquinas de pila ("conjunto de instrucciones
de 0 operando") sobre las máquinas de acumulador ("conjunto de instrucciones de 1
operando") y las máquinas de registro ("conjunto de instrucciones de 2 operando" o un
"conjunto de instrucciones de 3 operando") es que los programas escritos para un conjunto
de instrucciones de "0 operando" generalmente tienen una densidad de código más alta que
los programas equivalentes escritos para otros conjuntos de instrucciones.
COMPILADORES
CONCLUSIONES
Comprendí que un compilador, requiere de una sintaxis y lenguajes específicos, ya que, al
igual que el lenguaje humano, si no lo escribimos correctamente el compilador no hará lo
que deseamos. Y que en la compilación hay dos partes: Análisis y Síntesis. La parte del
análisis divide al programa fuente en sus elementos componentes y crea una representación
intermedia.
Aprendí que las herramientas que muestran tipos de análisis de programas fuente, son muy
útiles al momento de crear un programa al codificar un algoritmo, ya que estas
herramientas nos ayudan formateando el texto, corrigiendo errores, dando tips; para que
nosotros como programadores seamos más eficientes al momento de crear alguna
aplicación.
COMPILADORES
BIBLIOGRAFIA.
http://es.wikipedia.org/wiki/Compilador
http://es.wikipedia.org/wiki/Analizador_l%25C3%25A9xico
http://pahuena.awardspace.com/Compiladores/fases.pd
COMPILADORES
VOCABULARIO
Transición: Situación o estado intermedio entre uno antiguo o pasado y otro nuevo, al que
se llega tras un cambio.
Maquia de Turing: Una máquina de Turing es un dispositivo que manipula símbolos sobre
una tira de cinta de acuerdo a una tabla de reglas. A pesar de su simplicidad, una máquina
de Turing puede ser adaptada para simular la lógica de cualquier algoritmo de computador
y es particularmente útil en la explicación de las funciones de un CPU dentro de un
computador.
COMPILADORES
INDICE DE IMAGEN
Imagen Nro. 1 Imagen Nro. 1 de la operación de un buen compilador: Aquí encontramos la
operación que realiza un compilador.
Imagen Nro. 2 fases del compilador: aquí en esta imagen como podemos observar
encontramos las fases de un compilador.
Imagen Nro. 3 autómata finito: aquí observamos el mecanismo de control del autómata
finito.