Documente Academic
Documente Profesional
Documente Cultură
relacionados con un
compilador
Inga. Viviana Mrida
Compiladores
Como se vio en la figura la entrada para un compilador puede producirse por Uno o varios
preprocesadores y puede necesitarse otro procesamiento de la salida Que produce el
compilador ante de obtener un cdigo de maquina ejecutable.
Preprocesadores:
Los preprocesadores producen la entrada para un compilador, y pueden realizar las
Funciones siguientes:
1. Procesamiento de macros: un preprocesador puede permitir a un usuario definir macros,
que son abreviaturas de construcciones mas grandes.
2. Inclusin de archivos: un preprocesador puede insertar archivos de encabezamiento en el
texto del programa. Por ejemplo, el preprocesador de C hace que
el contenido del archivo
<global.h> reemplace a la proposicin #include
<global.h> cuando procesa un archivo que contenga a esa proposicin.
3. Preprocesadores racionales, estos preprocesadores enriquecen los lenguajes antiguos con
recursos mas modernos de flujo de control y de estructuras de datos. Por ejemplo, un
preprocesador de este tipo podra proporcionar al usuario
macros incorporados para construcciones, como proposiciones hile o if en lenguaje de
programacin que no las tenga.
FASES DE UN COMPILADOR
La fase de anlisis tiene como entrada, el PF. En base a este programa fuente, la
fase de anlisis construye una representacin intermedia.
de quin?...
Sintaxis
Definicin y generalidades
La sintaxis de un lenguaje de programacin es una definicin
de lo que constituye un programa gramaticalmente vlido en
dicho lenguaje.
La sintaxis queda especificada por un conjunto de reglas.
Una definicin de la sintaxis clara, concisa y formal es
especialmente importante en los lenguajes de programacin.
Sintaxis
Procesamiento de lenguajes y mtodos formales
lenguajes de programacin.
Es til para describir de forma precisa las cadenas que son programas
legtimos y aislar todas las dems (las que tienen errores sintcticos de varios
tipos)
Las expresiones regulares tambin es un Metalenguaje
Sintaxis
BNF y el anlisis lxico
una sintaxis BNF sencilla es mostrada en la figura.
ANALISIS LEXICO
El papel del analizador lxico
Es la primera fase del programa traductor
Es el nico que gestiona el fichero de entrada
Es el que lee los caracteres del programa fuente y construye
smbolos intermedios, los cuales sern la entrada del analizador
sintctico
Por qu separar el anlisis lxico del sintctico?
El diseo de las partes posteriores dedicadas al anlisis queda
simplificada
Con fases separadas se pueden aplicar tcnicas especficas y
diferenciadas para cada fase
Se facilita la portabilidad
Los componentes lxicos se especifican mediante expresiones
regulares que generan lenguajes regulares ms fciles de
reconocer que los LLC
ANALISIS LEXICO
ANALISIS LEXICO
TAREA PRINCIPAL
El PF es la entrada al analizador lexico y generalmente es un archivo de texto (los
interpretes reciben una o varias cadenas como entrada, desde el teclado).
Este monitoreo de la entrada (PF) lo efectua el analizador lexico con el fin de
identificar tokens, los cuales son cadenas o secuencias de caracteres que tienen
un cierto significado.
Tokens y lexemas
Token:
Elemento bsico del lenguaje
Unida lxica indivisible
Identifica una entidad lgica dentro del lenguaje
Incluyen: palabras Reservadas, constantes, Operadores, Signos de
puntuacin e identificadores.
Lexema:
la cadena original que se identifica como token
No hay correspondencia 1 1 entre token lexema.
Otro EJEMPLO:
TOKEN, PATRON LEXEMA
Sintaxis
El Anlisis Lxico y el proceso de compilacin
Todos los programas deben ser
analizados para comprobar su
correccin sintctica antes de
ser interpretados o traducidos a
cdigo mquina.
Al nivel ms elemental, el
proceso de anlisis lxico
separa los caracteres
individuales del programa en
una cadena de tokens que se
analiza sintcticamente, de uno
en uno, hasta un nivel de
anlisis superior.
Las etapas de anlisis semntico y de optimizacin analizan la consistencia
semntica (comprobando, por ejemplo, la utilizacin consistente de operadores y
tipos de datos) y transforman el texto de forma que pueda utilizar de forma
eficiente la arquitectura en la que se ejecutar el programa.
Para terminar, la etapa de generacin de cdigo utiliza la representacin abstracta
resultante como base para la generacin de cdigo mquina ejecutable.
Sintaxis
Las expresiones regulares y el anlisis lxico
Las Expresiones regulares son una herramienta
muy utilizada en el diseo de lenguajes para
especificar formalmente cada clase de token.
Estas permiten conceptos como una o ms
apariciones de un dgito. Es ms, se puede crear
de forma similar una expresin regular para definir
el significado de un ldentificador:
[a-zA-Z] [a-zA-Z0-9]*
lo que significa una letra seguida por una o ms
apariciones de una letra o un dgito.
Las expresiones regulares se han convertido en
una herramienta muy popular del diseo de
lenguajes, porque admiten la generacin
automtica de analizadores lxicos sin problemas.
Dos generadores bastante utilizados son el Lex
(que genera cdigo de C) y el JLex (que genera
cdigo de Java).
Anlisis Lxico
Errores Lxicos
El analizador lxico tpicamente detecta los siguientes errores:
El utilizar caracteres que no pertenecen al alfabeto del
lenguaje
Encontrar una cadena que no coincide con ninguno de los
patrones de los tokens posibles
Posibles acciones que el analizador lxico puede llevar a cabo
para recuperarse de los errores
Ignorar los caracteres no vlidos hasta formar un token segn
los patrones dados
Borrar los caracteres extraos
Insertar un caracter que pudiera faltar
Reemplazar un caracter presuntamente incorrecto por uno
correcto
Conmutar las posiciones de dos caracteres adyacentes
Anlisis Lxico
Funcionamiento del analizador lxico
Su principal funcin es procesar la cadena de caracteres y devolver pares (token,
lexema). Generalmente debe funcionar como una subrutina del analizador sintctico.
Programa
fuente
token
Analizad
or lxico
Analizad
or
sintctico
Tabla de
smbolos
PROCESADORES
3)Procesadores racionales. Este enriquece los lenguajes antiguos con recursos modernos
de flujo de control. Por ejemplo While o if, en un lenguaje donde no las tengan.
4) Extensin de Lenguaje. Trata de crear posibilidades de lenguaje que equivalen a
macros integradas.
ENSAMBLADORES
MUCHAS GRACIAS
POR SU ATENCIN!