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

Más contenido relacionado

La actualidad más candente

Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2
perlallamas
 
Glosario De Trabajo De Examen
Glosario De Trabajo De ExamenGlosario De Trabajo De Examen
Glosario De Trabajo De Examen
Joel Soto
 
Analisis semantico
Analisis semanticoAnalisis semantico
Analisis semantico
Areli Gómez
 
Introducción a Compiladores
Introducción a  CompiladoresIntroducción a  Compiladores
Introducción a Compiladores
Leopoldo Capa
 
Actividad 3
Actividad 3Actividad 3
Actividad 3
maryr_
 
Actividad 2 programacion de sistemas
Actividad 2 programacion de sistemasActividad 2 programacion de sistemas
Actividad 2 programacion de sistemas
JESSIKADG86
 
Analizador LÉxico
Analizador LÉxicoAnalizador LÉxico
Analizador LÉxico
FARIDROJAS
 
Grupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iGrupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes i
Rossana Sosa
 

La actualidad más candente (20)

Ejercicio compiladores
Ejercicio compiladoresEjercicio compiladores
Ejercicio compiladores
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Proceso de Compilacion
Proceso de CompilacionProceso de Compilacion
Proceso de Compilacion
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2
 
Analizador léxico
Analizador léxicoAnalizador léxico
Analizador léxico
 
Glosario De Trabajo De Examen
Glosario De Trabajo De ExamenGlosario De Trabajo De Examen
Glosario De Trabajo De Examen
 
Analisis semantico
Analisis semanticoAnalisis semantico
Analisis semantico
 
Introducción a Compiladores
Introducción a  CompiladoresIntroducción a  Compiladores
Introducción a Compiladores
 
Actividad 3
Actividad 3Actividad 3
Actividad 3
 
Unidad1 2 Lenguajes y automatas
Unidad1 2  Lenguajes y automatasUnidad1 2  Lenguajes y automatas
Unidad1 2 Lenguajes y automatas
 
Python guia01 1
Python guia01 1Python guia01 1
Python guia01 1
 
Actividad 2 programacion de sistemas
Actividad 2 programacion de sistemasActividad 2 programacion de sistemas
Actividad 2 programacion de sistemas
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Materia unidad compiladores
Materia unidad compiladoresMateria unidad compiladores
Materia unidad compiladores
 
Analizador LÉxico
Analizador LÉxicoAnalizador LÉxico
Analizador LÉxico
 
Grupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iGrupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes i
 
Compiladores, Analisis Lexico, Ejemplo Minilenguaje
Compiladores, Analisis Lexico, Ejemplo MinilenguajeCompiladores, Analisis Lexico, Ejemplo Minilenguaje
Compiladores, Analisis Lexico, Ejemplo Minilenguaje
 
Compiladores, Analisis Lexico Conceptos
Compiladores, Analisis Lexico ConceptosCompiladores, Analisis Lexico Conceptos
Compiladores, Analisis Lexico Conceptos
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador Sintáctico
 
Cap4 compiladores
Cap4 compiladoresCap4 compiladores
Cap4 compiladores
 

Similar a Corporacion universitaria remington compiladores deisy

Compiladores y analizador lexicos
Compiladores y analizador lexicosCompiladores y analizador lexicos
Compiladores y analizador lexicos
diana8320
 
Glosario de trabajo de examen
Glosario de trabajo de examenGlosario de trabajo de examen
Glosario de trabajo de examen
Joel Soto
 
Compiladores unidad1
Compiladores unidad1Compiladores unidad1
Compiladores unidad1
X3025990
 
C:\fakepath\compilador
C:\fakepath\compiladorC:\fakepath\compilador
C:\fakepath\compilador
DLACGP
 

Similar a Corporacion universitaria remington compiladores deisy (20)

Manual de Compiladores Léxico y Sintáctico.pdf
Manual de Compiladores Léxico y Sintáctico.pdfManual de Compiladores Léxico y Sintáctico.pdf
Manual de Compiladores Léxico y Sintáctico.pdf
 
Compiladores trabajo numero 4
Compiladores trabajo numero 4Compiladores trabajo numero 4
Compiladores trabajo numero 4
 
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
 
Glosario de trabajo de examen
Glosario de trabajo de examenGlosario de trabajo de examen
Glosario de trabajo de examen
 
Resumencap1 carmen vargas_jeremycamacho
Resumencap1 carmen vargas_jeremycamachoResumencap1 carmen vargas_jeremycamacho
Resumencap1 carmen vargas_jeremycamacho
 
Evolucion de los compiladores1
Evolucion de los compiladores1Evolucion de los compiladores1
Evolucion de los compiladores1
 
Compiladores unidad1
Compiladores unidad1Compiladores unidad1
Compiladores unidad1
 
Compiladores conceptos
Compiladores conceptosCompiladores conceptos
Compiladores conceptos
 
Pasadas multiples
Pasadas       multiplesPasadas       multiples
Pasadas multiples
 
Proyecto fernando compiladores 1
Proyecto fernando compiladores 1Proyecto fernando compiladores 1
Proyecto fernando compiladores 1
 
Herramientas de software
Herramientas de softwareHerramientas de software
Herramientas de software
 
C:\fakepath\compilador
C:\fakepath\compiladorC:\fakepath\compilador
C:\fakepath\compilador
 
C:\fakepath\compilador
C:\fakepath\compiladorC:\fakepath\compilador
C:\fakepath\compilador
 
Fpr Tema 1 www.fresymetal.com
Fpr Tema 1 www.fresymetal.comFpr Tema 1 www.fresymetal.com
Fpr Tema 1 www.fresymetal.com
 
Introduccion
IntroduccionIntroduccion
Introduccion
 
investigacion 4.4 y 4.5.pdf
investigacion 4.4 y 4.5.pdfinvestigacion 4.4 y 4.5.pdf
investigacion 4.4 y 4.5.pdf
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Documeto compilardorcontadorletras
Documeto compilardorcontadorletrasDocumeto compilardorcontadorletras
Documeto compilardorcontadorletras
 
Compiladores
CompiladoresCompiladores
Compiladores
 

Corporacion universitaria remington compiladores deisy

  • 1. COMPILADORES CORPORACION UNIVERSITARIA REMINGTON INGENIERIA DE SISTEMAS COMPILADORES COMPILADORES Y ANALIZADOR LEXICO PREPARADO POR DEISY NEREIDA LOZADA ORTIZ NORTE DE SANTANDER, COLOMBIA 2014
  • 2. 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
  • 3. 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
  • 4. 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.
  • 5. 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.
  • 6. 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.
  • 7. 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
  • 8. 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
  • 9. 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.
  • 10. 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.
  • 11. 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
  • 12. 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
  • 13. 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.
  • 14. 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.
  • 15. 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.
  • 16. 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.
  • 17. 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.
  • 19. 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.
  • 20. 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.