Академический Документы
Профессиональный Документы
Культура Документы
Ingeniera En Computacin
Materia: Compiladores
Tema: Tokens
Proyecto
INTRODUCCION
TOKENS Y LEXEMAS
token: es un par que consiste en un nombre de token y un valor de atributo
opcional. El nombre del token es un smbolo abstracto que representa un tipo de
unidad lxica; por ejemplo, una palabra clave especfica o una secuencia de
caracteres de entrada que denotan un identificador. Los nombres de los tokens
son los smbolos de entrada que procesa el analizador sintctico (Aho, Lam,
Sethi, & Ullman, 2008)
Lexema: es una secuencia de caracteres en el programa fuente, que coinciden
con el patrn para un token y que el analizador lxico identifica como una instancia
de ese token.(Aho, Lam, Sethi, & Ullman, 2008).
Para cada lexema, el analizador lxico produce como salida un token de la forma:
nombreToken,valorAributo
En el token, el primer componente nombreToken es un smbolo abstracto que se
utiliza durante el anlisis sintctico, y el siguiente componente valorAtributo apunta
a una entrada en la tabla de smbolos. La entrada a la tabla de smbolos se
necesita ms tarde en el analizador semntico y generador de cdigo;
supongamos que el analizador lxico encuentra dos tokens de la forma
identificador, para los conjuntos de caracteres suma y resta, para esta etapa de
reconocimiento bastar con dicha informacin; pero el generador de cdigo
necesita saber la posicin y uso de stos identificadores en el programa fuente.
Para entender la forma en que el analizador lxico realiza esta identificacin de
lexemas se propone la siguiente instruccin:
Velocidad=distancia / tiempo
TABLA DE SMBOLOS
Las tablas de smbolos son estructuras de datos que utilizan los compiladores
para guardar informacin acerca de las construcciones de un programa fuente
(Aho, Lam, Sethi, & Ullman,
2008)
Como se ha mencionado con anterioridad, la tabla de smbolos almacena de
forma voltil los lexemas encontrados en el programa fuente y la informacin
adicional necesaria para la generacin de cdigo, como su cadena de caracteres
(lexema), su tipo, su posicin en el espacio de almacenamiento, y cualquier otra
informacin relevante. Por lo general una tabla de smbolos debe soportar varias
declaraciones del mismo identificador dentro del programa.
EXPRESIONES REGULARES
La especificacin de un lenguaje de programacin incluye a menudo un conjunto
de reglas que define el lxico. Estas normas se denominan expresiones regulares
y definen el conjunto de posibles secuencias de caracteres que se utilizan para
formar fichas o lexemas
Cada expresin regular denota un lenguaje. Para definir las expresiones
regulares (ER) sobre un vocabulario V, se utilizan las siguientes reglas
es una ER que denota {}
Para cada perteneciente a V, a es la ER que denota {a}
Si p y q son dos ER que denotan los lenguajes P y Q respectivamente, entonces:
a.(p)|(q)es una ER que denota PQb.(p)(q)es una ER que denota PQc.(p)*es
una ER que denotaP* (Valverde Andreu, 1989).
DEFINICIONES REGULARES
Para facilitar la creacin de todas las expresiones que conformarn un analizador
lxico, es conveniente poner nombres a ciertas expresiones regulares y utilizarlos
en otras expresiones. Lo anterior se denomina definicin regular. En la creacin de
un lenguaje de programacin se tiene que identificar las cadenas de letras, dgitos
y smbolos de operacin, un ejemplo que representa esta definicin es:
AUTMATAS FINITOS
Lista de tokens
Token
Lexema
Patrn
Identificador
Numero
1,2,3,40
Enteros
0,1,2,3,4.,9
Reales con
exponente
Reales sin
exponente
If
Case
09.,E,e,+,-
goto
goto
break
break
for
for
Int
Int
Do
Doubl
Do
Double
else
else
Char
Char
float
float
Null
Null
Return
Return
Public
Public
0,1,2,3,4.,9
If
case
Reservad
a
No
No
No
No
No
Si
Si
Si
Si
Si
Si
Si
Si
Si
Si
Si
Si
Si
Si
string
string
Struct
Struct
Switch
Switch
True
True
typeof
typeof
Void
Void
while
while
namespace
Operacin
asignada
Operacin divisin
Operacin suma
Operacin
multiplicacin
Operacin resta
Dos puntos
Corchete abierto
Corchete cerrado
Mayor
Menor
Menor igual
Coma
Punto y coma
Mayor igual
Diferente
Punto
Parntesis abierto
Parntesis
cerrado
namespace
=
seguida de b seguida de l
seguida de i seguida de c
Letra s seguida de t
seguida de r seguida de i
seguida de n seguida de g
Letra s seguida de t
seguida de r seguida de u
seguida de c seguida de t
Letra s seguida de w
seguida de i seguida de t
seguida de c seguida de h
Letra t seguida de r
seguida de u seguida de e
Letra t seguida de y
seguida de p seguida de e
seguida de o seguida de f
Letra v seguida de o
seguida de i seguida de d
Letra w seguida de h
seguida de i seguida de l
seguida de e
Letra
Simbolo =
/
+
*
Simbolo=
Simbolo+
Smbolo*
Si
Si
Si
:
[
]
>
<
<=
,
;
>=
<>
.
(
)
Simbolo Simbolo :
Simbolo [
Simbolo ]
Simbolo >
Simbolo <
Simbolo <=
Simbolo ,
Simbolo ;
Simbolo >=
Simbolo <>
Simbolo .
Simbolo (
Simbolo )
Si
Si
Si
Si
Si
Si
Si
Si
Si
Si
Si
Si
Si
Si
Si
Si
Si
Si
Si
Si
Si
Si
Si
Llaves abiertas
Llaves cerradas
Diagonal
Comentarios
Cadena de texto
COMENTARIOS:
{
}
\
[,OC,]
[,OC,]
Simbolo {
Simbolo }
Simbolo \
Simbolo [,OC,]
Simbolo [,OC,]
Si
Si
Si
Si
Si
[abc][12]
[]
{2}
{1,2}
()
[a-z1-9]
AlB
AB
\d
\D
\S
Descripcin
Un ponto indica cualquier carcter
Los corchetes representan una
definicin de conjunto. Este por ejemplo
debe contener las letras a o b o c
Debe contener las letras a b c
seguidas de 12
Los corchetes indican la negacin.
Define el nmero de veces que
aparecer el carcter sustituido
Define el nmero de veces que
aparecer el carcter sustituido
Define a los caracteres corchetes como
referencia.
No debe contener los dgitos desde 1 al
9
El carcter l es un OR. A B
Concatenacin de A seguida de B
Digito equivalente [o-9]
No hay digito equivalente
Una letra mayscula minscula, digito o
carcter
\w
\b
\t
\
\n
{x}
{x,y}
*
+
[-]
{n.m}
{n}
<
>
[0123456789]
[0-9]
[A-Za-z]
(ab)*
Equivalente a [\w
Lmite de una palabra
Encuentra un tabulador
Encuentra el carcter ( no los nmeros)
especificados.
Salto de lnea forzado
Indica lo que va dentro de x
Indica lo que va dentro de las llaves
tanto de x como de y
Indica el producto de dos dgitos o
palabras
Indica una suma de dgitos
Indica una resta de dgitos
Cualquier carcter individual incluido el
intervalo
De n a m apariciones del carcter o la
expresin anterior
Exactamente n apariciones del carcter
o la expresin anterior
El principio de una palabra
El final de una palabra
0123456789
0123456789
ABCZabc.z
Cadena vacia
Definicin Regular.
Hernndez Suarez Gabriel.
Vocales---A l E l I l O l U l a l e l i l o l u
Abecedario----- A l B l C l D l E ll Z l a l b l c l d l e ll z
Digito----0 l 1 l 2 l 3 l 4 l 5 l 6 l 7 l 8 l 9
Identificador----letra (letra l digito)
{a,b}-----a l b
{,b}----- l b
{a,b,c,d}------(a l b) l (c l d) = a l b l c l d
{,b,bb,bbb,bbbb}-------b*
Simbolos------ + l l * l / l < l > l { l } l =