Sunteți pe pagina 1din 5

1 Compiladores / Gua II / Ciclo 02 - 2017

Centro de Investigacin y
Transferencia de Tecnologa

Facultad: Ingeniera
Anlisis Lxico Escuela: Computacin
Asignatura: Compiladores
Contenido

En la presente gua se dar a conocer la manera en que un compilador realiza el anlisis lxico de un programa fuente.

Objetivos Especficos

Simular un compilador, tomando en cuenta nicamente el anlisis lxico.


Identificar la forma en que un compilador realiza el anlisis lxico de un programa.

Material y Equipo

Gua de laboratorio N 2.
Computadora con Netbeans 7 o superior.

Introduccin Terica

Lxico
El lxico de un lenguaje de programacin u otro lenguaje usado en informtica est constituido por todas las palabras y
smbolos que lo componen. En los lenguajes de programacin, el lxico lo constituyen los elementos individuales del
lenguaje denominados tokens. Los tokens son todas las palabras reservadas del lenguaje, los smbolos que denotan los
distintos tipos de operadores, identificadores (de variables, de funciones, de procedimientos, de tipos, etc.), separadores
de sentencias, y otros smbolos empleados en las distintas instrucciones del lenguaje.

Analizador Lxico
Al analizador lxico (scanner): lee la secuencia de caracteres del programa fuente, caracter a carcter, y los agrupa para
formar unidades con significado propio, los componentes lxicos (tokens en ingls). stos componentes lxicos
representan:

Palabras reservadas: if, while, do,


Identificadores asociados a variables, nombres de funciones, tipos definidos por el usuario, etiquetas, etc.
Operadores: =, +, -, /, ==, <, >, &, !=,
Smbolos especiales: ;, ( ), [ ], { },
Constantes numricas: literales que representan valores enteros, en coma flotante, etc.
Constantes de caracteres: literales que representan cadenas de caracteres, por ejemplo: estoy en labo de
compi,...

El analizador lxico opera bajo peticin del analizador sintctico devolviendo un componente lxico conforme el analizador
sintctico lo va necesitando para avanzar en la gramtica. Los componentes lxicos son los smbolos terminales de la
gramtica. Suele implementarse como una subrutina del analizador sintctico. Cuando recibe la orden obtn el siguiente
componente lxico el analizador lxico lee los caracteres de entrada hasta identificar el siguiente componente lxico.
2 Compiladores / Gua II / Ciclo 02 - 2017

Dame el siguiente componente lxico

Programa fuente Analizador Analizador


Lxico Sintctico

Toma componente lxico

Tabla de
Smbolos

Procedimiento

Siguiendo con el estudio del analizador lxico, se puede representar de la siguiente manera:

(Expresin regular 1) (Accin 1)


(Expresin regular 2) (Accin 2)
(Expresin regular 3) (Accin 3)
.
.
.
(Expresin regular n) (Accin n)

Donde cada accin es un fragmento de programa que describe cual ha de ser la accin del analizador lxico cuando la
secuencia de entrada coincida con la expresin regular.

Qu es una expresin regular?

Son una serie de caracteres que forman un patrn, normalmente representativo de otro grupo de caracteres mayor, de tal
forma que podemos comparar el patrn con otro conjunto de caracteres para encontrar las coincidencias.
Las expresiones regulares estn disponibles en casi cualquier lenguaje de programacin, pero, aunque su sintaxis es
relativamente uniforme, cada lenguaje usa su propio dialecto.

Patrn: es una expresin regular.


Token: es el terminal asociado a un patrn. Utilizamos la palabra terminal desde el punto de vista de la gramtica
utilizada por el analizador sintctico.
Lexema: es cada secuencia de caracteres que encaja con un patrn, es decir, es como instancia de un patrn.

A continuacin, se presenta una aplicacin capaz de evaluar el lxico utilizado en una expresin que corresponde a un
lenguaje de programacin. Dicho programa hace las respectivas distinciones entre cada elemento que forma parte de las
expresiones (variables, palabras reservadas, smbolos, nmeros, etc.)
3 Compiladores / Gua II / Ciclo 02 - 2017
4 Compiladores / Gua II / Ciclo 02 - 2017

La salida que se obtiene del programa debera ser la siguiente:

La idea es que el analizador lxico reconozca cada una de las representaciones que se encuentran en las expresiones del
lenguaje de programacin.
Cada vez que se desee hacer ms robusto nuestro analizador debemos agregar ms patrones en nuestro cdigo.

Ejercicios:

1. Modificar el ejemplo de manera que se pueda evaluar la expresin:


x=1;
do{
if (w==1)
{
While(x<5)
{
z++;
}
}
else{
Array[i] = 7;
}
}while(j==0);

2. Modificar el ejemplo de manera que acepte ms palabras reservadas, por ejemplo: for, foreach, bool, int, double,
char, string.
5 Compiladores / Gua II / Ciclo 02 - 2017

Investigacin Complementaria

1. Investigar qu es un analizador sintctico y los elementos que lo componen


2. Investigar sobre la jerarqua de gramticas segn Chomsky

Bibliografa

Manuel Alfonseca Moreno, Marina de la Cruz Echeanda, Alfonso Ortega de la Puente, Estrella Pulido Caabate,
Compiladores: Teora y Prctica, Pearson Educacin, S.A., Madrid, 2006

S-ar putea să vă placă și