Академический Документы
Профессиональный Документы
Культура Документы
22/09/2011
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
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
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
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
22/09/2011
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
Cerradura de Kleene de L
Cerradura positiva de L
L*
L L
i 0
L+
L L
i 1
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
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
22/09/2011
(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
22
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
r* = (r | )*
r** = r*
22/09/2011
La relacin entre * y
* es idempotente
Ing. Jorge Luis Chuc Lpez 23
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
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
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
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
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
22/09/2011
33
22/09/2011
34
22/09/2011
35