Вы находитесь на странице: 1из 9

Instituto Politcnico Nacional

Escuela Superior De Ingeniera


Mecnica Y Elctrica
Unidad Culhuacn.

Ingeniera En Computacin

Materia: Compiladores

Tema: Tokens
Proyecto

Profesora: Rodrguez Moreno Iovanna


Alumnos:
Hernndez Suarez Gabriel
Soto Prez Jos
Morales Lpez Waldo
Grupo: 5CX32

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

Una forma de generar un analizador lxico a partir de las definiciones regulares


que modelan el lenguaje es con el uso de autmatas finitos, en esencia, stos
consisten en grafos como los diagramas de transicin de estados, con las
siguientes caractersticas:
-Los autmatas finitos son reconocedores, es decir, solo pueden representar cierto
o falso en relacin con cada posible cadena de entrada, esto se representa por la
transicin que lleva de un estado a otro.
-Los autmatas finitos pueden ser de dos tipos:
Los autmatas finitos no deterministas (AFN) no tiene restricciones en
cuanto al nmero de transiciones de estados.
Los autmatas finitos deterministas (AFD) tienen para cada estado, y para
cada smbolo del alfabeto de entrada, exactamente una lnea con ese
smbolo que sale de ese estado.
Tanto los autmatas finitos deterministas como no deterministas son capaces de
reconocer los mismos lenguajes, mejor conocidos como lenguajes regulares

Lista de tokens


Token

Lexema

Patrn

Identificador

a...z, A...Z, 0...9

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

Letra seguida de letra o


digito
Digito seguido de mas
dgitos
Dgitos seguidos de mas
dgitos
Dgitos y exponentes
seguidos de mas dgitos
Dieguitos seguidos de
dgitos
Letra i seguida de f
Letra c seguida de a
seguida de s seguida de e
Letra g seguida de o
seguida de t seguida de o
Letra b seguida de r
seguida de e seguida de a
seguida de k
Letra f seguida de o
seguida de r
Letra i deguida de n
desuida de t
Letra d seguida de o
Letra d seguida de o
seguida de u seguida de b
seguida de l seguida e
Letra e seguida de l
seguida s seguida de e
Letra c seguida de h
seguida de a seguida de r
Letra f seguida de l
seguida de o seguida de a
seguida de t
Letra n seguida de u
seguida de l seguida de l
Letra r seguida de e
seguida de t seguida de u
seguida de r seguida de n
Letra p seguida de u

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

En la Cadena de Texto no se permite el EOF, ni el salto de Lnea.


En Comentario no puede haber fin de archivo.
Operadores Aritmticos: suma, resta, multiplicacin y divisin.
Operador relaciona: es el igual, en C es = =.
Operador Lgico: Y, O, NO.

Lista de expresiones regulares.


Expresiones
.
[abc]

[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 =

Вам также может понравиться