Anda di halaman 1dari 4

5.

1FuncionesDelAnalizadorLxico

El analizador lxico reconoce las palabras en funcin de una


gramtica regular de manera que el alfabeto G de dicha gramtica son
los distintos caracteres del juego de caracteres del ordenador sobre el
que se trabaja (que forman el conjunto de smbolos terminales),
mientras que sus no terminales son las categoras lxicas en que se
integran las distintas secuencias de caracteres. Cada no terminal o
categora lxica de la gramtica regular del anlisis lxico es
considerado como un terminal de la gramtica de contexto libre con la
que trabaja el analizador sintctico, de manera que la salida de alto
nivel (no terminales) de la fase lxica supone la entrada de bajo nivel
(terminales) de la fase sintctica. En el caso de Lex, por ejemplo, la
gramtica regular se expresa mediante expresiones regulares.

Funciones del analizador lxico


El analizador lxico es la primera fase de un compilador. Su principal
funcin consiste en leer los caracteres de entrada y elaborar como
salida una secuencia de componentes lxicos que utiliza el analizador
sintctico para hacer el anlisis. Esta

La fase de anlisis lxico se halla bajo el control del anlisis sintctico.


Normalmente se implementa como una funcin de ste
interaccin suele aplicarse convirtiendo al analizador lxico en una
subrutina o corrutina del analizador sintctico. Recibida la orden
Dame el siguiente componente lxicodel analizador sintctico, el
lxico lee los caracteres de entrada hasta que pueda identificar el
siguiente componente lxico, el cual devuelve al sintctico segn el
formato convenido (ver figura 2.2).
Adems de esta funcin principal, el analizador lxico tambin realiza
otras de gran importancia, a saber:

Eliminar los comentarios del programa.

Eliminar espacios en blanco, tabuladores, retorno de carro, etc, y en


general, todo aquello que carezca de significado segn la sintaxis del

lenguaje.

Reconocer los identificadores de usuario, nmeros, palabras


reservadas del lenguaje, etc., y tratarlos correctamente con respecto a
la tabla de smbolos (solo en los casos en que este analizador deba
tratar con dicha estructura).

Llevar la cuenta del nmero de lnea por la que va leyendo, por si se


produce algn error, dar informacin acerca de dnde se ha producido.

Avisar de errores lxicos. Por ejemplo, si el carcter @ no pertenece


al lenguaje, se debe emitir un error.

Tambin puede hacer funciones de preprocesador.

Necesidad del analizador lxico


Un buen profesional debe ser capaz de cuestionar y plantearse todas
las decisiones de diseo que se tomen, y un asunto importante es el
porqu se separa el anlisis lxico del sintctico si, al fin y al cabo, el
control lo va a llevar el segundo. En otras palabras, por qu no se
delega todo el procesamiento del programa fuente slo en el anlisis
sintctico, cosa perfectamente posible (aunque no plausible como
veremos a continuacin), ya que el sintctico trabaja con gramticas
de contexto libre y stas engloban a la regulares. A continuacin
estudiaremos algunas razones de esta separacin.

Simplificacin del diseo


Un diseo sencillo es quizs la ventaja ms importante. Separar el
anlisis lxico del anlisis sintctico a menudo permite simplificar una,
otra o ambas fases. Normalmente aadir un analizador lxico permite
simplificar notablemente el analizador sintctico. An ms, la
simplificacin obtenida se hace especialmente patente cuando es

necesario realizar modificaciones o extensiones al lenguaje


inicialmente ideado; en otras palabras, se facilita el mantenimiento del
compilador a medida que el lenguaje evoluciona.