compilador lexico
DESCRIPTION
QUE ES UN COMPILADOR LEXICOTRANSCRIPT
![Page 1: COMPILADOR LEXICO](https://reader031.vdocuments.co/reader031/viewer/2022020421/568bf4e51a28ab89339faeac/html5/thumbnails/1.jpg)
![Page 2: COMPILADOR LEXICO](https://reader031.vdocuments.co/reader031/viewer/2022020421/568bf4e51a28ab89339faeac/html5/thumbnails/2.jpg)
Un compilador es un programa que permite traducir un lenguaje
fuente o lenguaje de programación a un lenguaje objeto o código
ensamblador, el cual es un lenguaje que puede entender la
maquina; mediante el proceso de traducción es importante
mencionar que se realiza detección de errores en el programa
fuente. Los compiladores se utilizan tanto para lenguajes de
programación tradicionales, como Fortran, C o Ada, o para
aplicaciones especializadas como por ejemplo lenguajes de
descripción de hardware, lenguajes de programación de robots,
entre otros.
¿Qué ES UN COMPILADOR LÉXICO?
![Page 3: COMPILADOR LEXICO](https://reader031.vdocuments.co/reader031/viewer/2022020421/568bf4e51a28ab89339faeac/html5/thumbnails/3.jpg)
![Page 4: COMPILADOR LEXICO](https://reader031.vdocuments.co/reader031/viewer/2022020421/568bf4e51a28ab89339faeac/html5/thumbnails/4.jpg)
Análisis: Se realiza una división del programa en sus
componentes y se crea una representación intermedia del
programa fuente. Durante esta fase la estructura del programa se
guarda en una estructura de datos especial que se denomina
árbol sintáctico.
Análisis léxico: separación de cada elemento componente del
programa
Análisis sintáctico: agrupa los componentes léxicos en frases
gramaticales
Análisis semántico: Se revisa el programa fuente para
comprobar que las reglas semánticas del lenguaje (aquellas
relativas al significado de las distintas instrucciones) se cumplen.
Un ejemplo de regla semántica es la comprobación de tipos en
las expresiones.
Síntesis: Construye el programa destino deseado a partir de una
descripción en un lenguaje de representación intermedia.
![Page 5: COMPILADOR LEXICO](https://reader031.vdocuments.co/reader031/viewer/2022020421/568bf4e51a28ab89339faeac/html5/thumbnails/5.jpg)
![Page 6: COMPILADOR LEXICO](https://reader031.vdocuments.co/reader031/viewer/2022020421/568bf4e51a28ab89339faeac/html5/thumbnails/6.jpg)
Las tres primeras fases que realiza un compilador son:
análisis léxico, sintáctico y semántico las cuales
corresponden al analisis, pero dentro de la segunda fase
de la compilación es decir durante la sintesis existen las
siguientes fases: generación de código intermedio,
optimador de código, y generador de código y existen
otras dos fases la administración de la tabla de simbolos y
el manejo de errores las cuales hacen interacción con las
seis fases.
La tabla de símbolos: es una estructura de datos que
almacena los identificadores utilizados en el programa
fuente así como los atributos de cada identificador.
El manejador de errores: es un módulo que gestiona las
acciones a realizar por cada uno de los errores
encontrados en las diferentes fases de la compilación.
![Page 7: COMPILADOR LEXICO](https://reader031.vdocuments.co/reader031/viewer/2022020421/568bf4e51a28ab89339faeac/html5/thumbnails/7.jpg)
Cuando el analizador léxico detecta un
indentificador en el programa fuente, el
identificador se introduce en la tabla de
símbolos.
Las fases de análisis sintáctico y semántico
por lo general manejan una gran proporción
de los
errores detectables por el compilador. La
fase léxica puede detectar errores donde los
caracteres
restantes de la entrada no forman ningún
componente léxico del lenguaje.
![Page 8: COMPILADOR LEXICO](https://reader031.vdocuments.co/reader031/viewer/2022020421/568bf4e51a28ab89339faeac/html5/thumbnails/8.jpg)
EJEMPLO:
Las fases de análisis
Conforme avanza la traducción, la representación
interna del programa fuente que tiene el
compilador se modifica. Para ilustrar esas
representaciones, considérese la traducción de la
proposición
Posición := inicial + velocidad * 60 (1)
La figura 4 muestra la representación de esa
proposición después de cada frase.
Posición := inicial + velocidad * 60
Id1 := id2 + id3 * 60
![Page 9: COMPILADOR LEXICO](https://reader031.vdocuments.co/reader031/viewer/2022020421/568bf4e51a28ab89339faeac/html5/thumbnails/9.jpg)
Tabla de símbolos
1
2
3
4 : =
id1 +
id2 *
id3 entareal
60
temp1 := entareal(60)
temp2 := id3 * temp1
temp3 := id2 + temp2
id1 := temp3
temp1 := id3 * 60.0
id1 := id2 + temp1
MOVF id3, R2
MULF #60.0, R2
MOVF id2, R1
ADDF R2, R1
MOVF R1, id1
![Page 10: COMPILADOR LEXICO](https://reader031.vdocuments.co/reader031/viewer/2022020421/568bf4e51a28ab89339faeac/html5/thumbnails/10.jpg)
Optimación de Código
La fase de optimación de código trata de mejorar el código
intermedio de modo que resulte un
código de máquina más rápido de ejecutar.
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. De las dos partes,
la síntesis es la que requiere la técnica más especializada.
En esta parte el código intermedio optimizado es traducido a
una secuencia de instrucciones en
ensamblador o en el código de máquina del procesador que
nos interese. Por ejemplo, la
sentencia
A:=B+C se convertirá en:
LOAD B
ADD C
STORE A