Corporacion universitaria remington compiladores deisy

26
COMPILADORES CORPORACION UNIVERSITARIA REMINGTON INGENIERIA DE SISTEMAS COMPILADORES COMPILADORES Y ANALIZADOR LEXICO PREPARADO POR DEISY NEREIDA LOZADA ORTIZ NORTE DE SANTANDER, COLOMBIA

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.