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

Anlisis Lxico

Ing. Jorge Luis Chuc Lpez


Facultad de Ingeniera Universidad Autnoma de Campeche

22/09/2011

Ing. Jorge Luis Chuc Lpez

Analizador lxico
Lee una secuencia de caracteres de entrada, Clasifica los caracteres ledos de acuerdo a su tipo Agrupa los caracteres en una cadena con el objetivo de Identificar a qu clase de componente lxico pertenece Devuelve al analizador sintctico el componente lxico encontrado.
22/09/2011 Ing. Jorge Luis Chuc Lpez 2

22/09/2011

Ing. Jorge Luis Chuc Lpez

If (radio>0) { area = ( rea > 0 ? 1 : 2 ) ; area1 = 3a.1416 * pow(radio, 2); cout<<rea; } if(radio>0){area=(rea>0?1:2);area1=3a .1416*pow(radio,2);cout<<rea;}
22/09/2011 Ing. Jorge Luis Chuc Lpez 4

Alfabeto
Alfabeto: Un conjunto finito de smbolos,
denominado , utilizados en un lenguaje. Aunque un alfabeto no necesita ser finito ni numerable, en esta propuesta se asume que es finito. Los elementos de un alfabeto son conocidos como smbolo, letra o carcter.

22/09/2011

Ing. Jorge Luis Chuc Lpez

Ejemplos de alfabetos
Ejemplos de alfabetos: S1 = {0,1} S2 = {a,e,i,o,u} S3 = {a,b,c,,z} S4 = {gato, perro, pez, liebre} S5 = {a,b,,z,0,1, , 9}
22/09/2011 Ing. Jorge Luis Chuc Lpez 6

Cadenas
Cadena: Secuencia finita de smbolos
de un alfabeto. Sinnimos: frase, palabra, secuencia. La longitud de una cadena s, que se escribe |s|, es el nmero de apariciones de smbolos del alfabeto en la cadena. La cadena vaca, representada por , es una cadena especial de longitud cero.
22/09/2011 Ing. Jorge Luis Chuc Lpez 7

S1 = {0,1} Ejemplos de cadenas para el alfabeto S1. 0101 1 0001111010

22/09/2011 Ing. Jorge Luis Chuc Lpez 8

Cadenas
Si s y t son cadenas, entonces la concatenacin de s y t, que se escribe st, es la cadena que resulta de agregar t a la cadena s.

22/09/2011

Ing. Jorge Luis Chuc Lpez

s = 01010 t = 11100 La concatenacin de s y t es st = 0101011100 ts = 1110001010

22/09/2011

Ing. Jorge Luis Chuc Lpez

10

Lenguaje
Lenguaje: Es el conjunto de cadenas
de un alfabeto fijo. Ejemplo: {0,1,00,11,000,111,01,001} Hay varias operaciones que se pueden aplicar a los lenguajes. Sean L y M dos lenguajes, entonces pueden definirse las siguientes operaciones:
22/09/2011 Ing. Jorge Luis Chuc Lpez 11

Operaciones con lenguajes


Operacin Se escribe Definicin
L M = {s | s est en L o s est en M} LM = {st | s est en L y t est en M} Unin de L y M L M Concatenacin LM de L y M

Cerradura de Kleene de L
Cerradura positiva de L

L*

L L
i 0

L* denota cero o ms concatenaciones de L

L+

L L
i 1

L+ denota una o ms concatenaciones de L


22/09/2011 Ing. Jorge Luis Chuc Lpez 12

Ejemplos de operaciones
Sea L = {A, B, C, ..., Z, a, b, c, ..., z} y D={0, 1, 2, 3, ..., 9}. Podemos crear nuevos lenguajes a partir de L y D, mediante la aplicacin de los operadores anteriores: LD LD L4 L* L(L D)* D+
22/09/2011 Ing. Jorge Luis Chuc Lpez 13

Expresiones regulares
Las expresiones regulares son medios convenientes para especificar ciertos conjuntos simples (aunque posiblemente infinitos) de cadenas. Pueden ser utilizadas para especificar la estructura de los componentes lxicos usados en un lenguaje de programacin. Los conjuntos de cadenas definidos por expresiones regulares se denominan conjuntos regulares.
22/09/2011 Ing. Jorge Luis Chuc Lpez 14

Expresiones regulares
Una expresin regular se construye a partir de expresiones regulares ms simples utilizando un conjunto de reglas definitorias. Cada expresin regular r representa un lenguaje L(r). Las reglas de definicin especifican cmo se forma L(r) combinando de varias maneras los lenguajes representados por las subexpresiones de r.
22/09/2011 Ing. Jorge Luis Chuc Lpez 15

Expresiones regulares
Las siguientes son las reglas que definen las expresiones regulares del alfabeto . Asociada a cada regla hay una especificacin del lenguaje representado por la expresin regular que se est definiendo.
22/09/2011 Ing. Jorge Luis Chuc Lpez 16

Expresiones regulares
1. es una expresin regular designada
por {}; es decir, el conjunto que contiene la cadena vaca.

22/09/2011

Ing. Jorge Luis Chuc Lpez

17

Expresiones regulares
2. Si a es un smbolo de , entonces a es una expresin regular designada por {a}; por

ejemplo, el conjunto que contiene la cadena a. Aunque se usa la misma notacin para las tres, tcnicamente, la expresin regular a es distinta de la cadena a o del smbolo a. El contexto aclarar si se habla de a como expresin regular, cadena o smbolo.
Ing. Jorge Luis Chuc Lpez 18

22/09/2011

Expresiones regulares
3. Suponiendo que r y s sean expresiones

regulares representadas por los lenguajes L(r) y L(s), entonces,


(r) | (s) es una expresin regular representada por L(r) L(s). (r)(s) es una expresin regular representada por L(r)L(s). (r)* es una expresin regular representada por (L(r))*. (r) es una expresin regular representada por L(r).
Ing. Jorge Luis Chuc Lpez 19

22/09/2011

Ejemplos de lenguajes y expresiones regulares


= {0, 1, .}

(0|1)*.(0|1)*: Nmeros binarios de punto flotante. (00)*: Cadenas de ceros con longitud par. (1*01*01*)*: Cadenas con nmero par de ceros. (a|b|c)(a|b|c|0|1|2)*: Identificadores alfanumricos. (0|1|2)*: Nmeros en base 3.
Ing. Jorge Luis Chuc Lpez 20

= {a, b, c, 0, 1, 2}

22/09/2011

Expresiones regulares
Para evitar parntesis innecesarios en las expresiones regulares, se adoptan las siguientes convenciones: El operador unario * tiene mayor precedencia y es asociativo por la izquierda. La concatenacin tiene la segunda mayor precedencia y es asociativa por la izquierda. El operador de alternancia, |, tiene la menor precedencia y es asociativo por la izquierda.
22/09/2011 Ing. Jorge Luis Chuc Lpez 21

Expresiones regulares
Si dos expresiones regulares r y s representan al mismo lenguaje, se dice que r y s son equivalentes y se escribe r = s. Por ejemplo, (a | b) = (b | a).

22/09/2011

Ing. Jorge Luis Chuc Lpez

22

Leyes algebraicas para expresiones regulares


Axioma Descripcin
| es conmutativo

r|s=s|r

r | (s | t) = (r | s) | t | es asociativo
(rs)t = r(st) La concatenacin es asociativa.

r (s | t) = rs | rt (s | t)r = sr | tr
r = r r = r

La concatenacin distribuye sobre |


es el elemento identidad para la concatenacin.

r* = (r | )*
r** = r*
22/09/2011

La relacin entre * y
* es idempotente
Ing. Jorge Luis Chuc Lpez 23

Concepto de lenguaje generado por expresiones regulares


El conjunto de cadenas generados por una expresin regular es un lenguaje regular. En general, un lenguaje puede ser contablemente infinito. La cadena en un lenguaje frecuentemente es denominado token.
22/09/2011 Ing. Jorge Luis Chuc Lpez 24

Definiciones Regulares
Por convenciones de notacin puede ser deseable asignar un nombre a una expresin regular y definir expresiones regulares utilizando dichos nombres como si fueran smbolos.

22/09/2011

Ing. Jorge Luis Chuc Lpez

25

Definiciones Regulares
Si es un alfabeto de smbolos bsicos, entonces una definicin regular es una secuencia de definiciones de la forma

d1 r1 d2 r2
...

dn rn
22/09/2011 Ing. Jorge Luis Chuc Lpez 26

Definiciones Regulares
donde cada di es un nombre distinto, y cada ri es una expresin regular sobre los smbolos de {d1, d2, d3, ..., di-1}, por ejemplo, los smbolos bsicos y los nombres previamente definidos.

22/09/2011

Ing. Jorge Luis Chuc Lpez

27

Definiciones Regulares
Al limitar cada ri a los smbolos de y a los nombres previamente definidos, se puede construir una expresin regular en para cualquier ri, reemplazando una y otra vez los nombres de las expresiones regulares por las expresiones que designan. Es importante destacar que si ri utilizara dj para alguna j i, entonces ri se podra definir recursivamente y este proceso de sustitucin no tendra fin.
22/09/2011 Ing. Jorge Luis Chuc Lpez 28

Definiciones Regulares
El conjunto de identificadores de Pascal puede estar definido mediante las siguientes definiciones regulares Letra A | B | C | . . . | Z | a | b | c | . . . | z Dgito 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Identificador Letra (Letra | Dgito)*

22/09/2011

Ing. Jorge Luis Chuc Lpez

29

Definiciones Regulares
Los nmeros sin signo en Pascal pueden ser definidos mediante: Dgito 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Dgitos Dgito Dgito* FraccinOpcional .Dgitos | ExponenteOpcional ( E (+ | - | ) Dgitos ) | Nmero Dgitos FraccinOpcional ExponenteOpcional
22/09/2011 Ing. Jorge Luis Chuc Lpez 30

Abreviaturas para definiciones regulares


Uno o ms casos. El operador unario
+

significa uno o ms casos de. Si r es una expresin regular que designa al lenguaje L(r), entonces (r)+ es una expresin regular que designa al lenguaje (L(r))+. El operador + tiene la misma precedencia y asociatividad que el operador *. Las dos identidades algebraicas r* = r+ | y r+ = rr* relacionan los operadores de la cerradura de Kleene y los de la cerradura positiva.
22/09/2011 Ing. Jorge Luis Chuc Lpez 31

Abreviaturas para definiciones regulares


Cero o un caso. El operador unario
postfijo ? significa cero o un caso de. La notacin r? es una abreviatura de r | . Si r es una expresin regular, entonces (r)? es una expresin regular designa el lenguaje L(r) {}.
22/09/2011 Ing. Jorge Luis Chuc Lpez 32

Abreviaturas para definiciones regulares


Dgito 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Dgitos Dgito+ FraccinOpcional ( .Dgitos )? ExponenteOpcional ( E (+ | - )? Dgitos )? Nmero Dgitos FraccinOpcional ExponenteOpcional

22/09/2011

Ing. Jorge Luis Chuc Lpez

33

Abreviaturas para definiciones regulares


Clases de caracteres. La notacin [abc],
donde a, b y c son smbolos del alfabeto, designa la expresin regular a | b | c. Una clase abreviada de carcter como [a - z] designa la expresin regular a | b | c | . . . | z.

22/09/2011

Ing. Jorge Luis Chuc Lpez

34

Abreviaturas para definiciones regulares


Dgito [0-9] Dgitos Dgito+ FraccinOpcional ( .Dgitos )? ExponenteOpcional ( E (+ | - )? Dgitos )? Nmero Dgitos FraccinOpcional ExponenteOpcional

22/09/2011

Ing. Jorge Luis Chuc Lpez

35

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