Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Unidad 5 S6B

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 33

Unidad V Análisis Léxico

• 5.1 Funciones del analizador léxico


• 5.2 Componentes léxicos, patrones y lexemas
• 5.3 Creación de Tabla de tokens
• 5.4 Errores léxicos
• 5.5 Generadores de analizadores Léxicos
• 5.6 Aplicaciones (Caso de estudio)
5.1 Funciones del analizador léxico

Funcionamiento del analizador léxico


Principal función: Ejemplo: (token, lexema)
ü Procesar el código fuente y devolver pares. (Entero, 6)
(token, lexema)---->(Identificador, idNumero2) (Resta, -)
ü Funciona como una subrutina del analizar sintáctico (División, /)
(Multiplicación, *)

Token
Fase 1 Fase 2
Programa
Analizador Analizador
Fuente
Léxico Sintáctico
Siguiente

Tabla de
Símbolos
5.2 Componentes léxicos, patrones y lexemas

Analizador Léxico

üToken
üPatrón
üLexema
Definiciones de términos comunes
Tokens: Son los elementos léxicos del lenguaje. Ejemplo palabras reservadas,
operadores, etc.

Tokens Tokens Tokens


While Asignación CierraLlaves
AbreParentesis Identificador
Identificador Suma
MenorQue Identificador
Identificador FinInstrucción
CierraParentesis Identificador
AbreLlaves SumaAsignación
TipoDatoInt Identificador
Identificador FinInstrucción
Definiciones de términos comunes
Tokens: Son los elementos léxicos del lenguaje. Ejemplo palabras reservadas,
operadores, etc.

Patrón: Expresión regular que define el conjunto de cadenas que cada uno de los tokens representa.

Lexema: Secuencia de caracteres del código fuente que concuerda con el patrón de un token.

Token Lexema Patrón


Identificador Pepe, const1, … Letra ( Letra | Dígito )*
+
Entero 10, -105, +24, … ( + |- | λ ) Digito
Analizador Léxico

üAtributo
Definiciones de términos comunes
Atributo:

ü El análisis léxico debe proporcionar información adicional sobre los


tokens en sus atributos asociados.
ü El número de atributo depende de cada token.

En la práctica, se puede considerar que los tokens tienen un único atributo,


un registro que contiene toda la información propia de cada caso por
ejemplo:

(tipo de token, lexema, línea y columna en la que fue encontrado).

Lo normal es que toda esta información se entregue a los analizadores


siguientes para que la usen como convenga.
5.3 Creación de Tabla de tokens

Definiciones de términos comunes


Atributo: (tipo de token, lexema, línea y columna en la que fue encontrado)

Token Lexema Línea Col Token Lexema Línea Col

Mientras while 1 1 Identificador


AbreParentesis ( 1 7 Suma
Identificador y 1 8 Identificador b
MenorQue < 1 10 FinInstrucción
Identificador Identificador y
aParentesis SumaAsignación
AbreLlaves Identificador x
Int FinInstrucción
Identificador CierraLlaves
Asignación
5.4Errores léxicos
Diseño de Analizadores Léxicos

üDiagrama de transiciones
üTabla de transiciones
üEjemplo1
Diseño de Analizadores Léxicos
Un Diagrama de Transiciones (DT) debe funcionar como un analizador léxico; es decir, debe leer
caracteres hasta que complete un token, y en ese momento debe retornar (en los estados de
aceptación) el token que ha leído y dejar la entrada preparada para la siguiente llamada.

Ejemplo1: Diseñe un diagrama de transiciones para el reconocimiento de identificadores, números


enteros sin signo.

Notación
l= letra
l,d token lexema patrón
Enteros 4, 66,2234 dígito+
d=digito otro
l 1 2
*
Identificador
Identificadores ab1 Letra (letra | dígito)*
num 4; token=4
0
d d
3
otro 4 *
tabla de símbolos

identificador num 1 1
Entero
Diagrama de transiciones entero 4 15
Diseño de Analizadores Léxicos
Continuación…
üDiagrama de transiciones
üTabla de transiciones
üEjemplo1
Actividad 4.4

Definiciones de términos comunes


Un Diagrama de Transiciones (DT) debe funcionar como un analizador léxico; es decir, debe leer
caracteres hasta que complete un token, y en ese momento debe retornar (en los estados de
aceptación) el token que ha leído y dejar la entrada preparada para la siguiente llamada.

Ejemplo1: Diseñe un diagrama de transiciones para el reconocimiento de identificadores, números


enteros sin signo.

Notación
l= letra
l,d Entradas
Estado l d otro token Retroceso
d=digito otro
l 1 2
*
Identificador
0 1 3 Error - -
1 1 1 2 - -
0
d d 2 - - - Identificador 1

3
otro 4 * 3 - 3 4 -
Entero 4 - - - Entero 1
Diagrama de transiciones Tabla de transiciones
Diseño de Analizadores Léxico

üDiagrama de transiciones
üTabla de transiciones
üEjemplo2
Tabla de transiciones
Diseño de Analizadores Léxicos
Un Diagrama de Transiciones (DT) debe funcionar como un analizador léxico; es decir, debe leer
caracteres hasta que complete un token, y en ese momento debe retornar (en los estados de
aceptación) el token que ha leído y dejar la entrada preparada para la siguiente llamada.
Ejemplo: Diseñe un diagrama de transiciones para el reconocimiento de identificadores, números
enteros sin signo y asignación

ny6=2
2ab=2
Notación l,d a=2 token lexema patrón
l= letra otro Identificadores ab1 Letra (letra | dígito)*
d=digito
l 1 2 * Identificador
Enteros 4, 66,2234 dígito+
0
d d Asignación = =

3
otro 4 *Entero

= otro *Asignación
6
Diagrama de transiciones 5
Tabla de transiciones
Diseño de analizadores Léxicos
Un Diagrama de Transiciones (DT) debe funcionar como un analizador léxico; es decir, debe leer
caracteres hasta que complete un token, y en ese momento debe retornar (en los estados de
aceptación) el token que ha leído y dejar la entrada preparada para la siguiente llamada.
Ejemplo: Diseñe un diagrama de transiciones para el reconocimiento de identificadores, números
enteros sin signo y asignación

ny6=2 Entradas
2ab=2
Notación l,d a=2
Estad l
o
d = otro token Retroce
so
l= letra otro 0 1 3 5 Error - -
d=digito
l 1 2 * Identificador
1 1 1 - 2 - -
2 - - - - Identificador 1
0
d d 3 - 3 - 4 -
3
otro 4 *Entero 4 - - - - Entero 1
= otro *Asignación
5 - - - 6
6
Diagrama de transiciones 5 6 - - - - Asignación 1
Diseño de analizadores Léxicos
Gramática Formal G={ΣT, ΣN,S,P}
ΣT =Es el alfabeto de símbolos terminales
ΣN =Es el alfabeto de símbolos no terminales <>
S =Es el símbolo inicial de la gramática
P =Es un conjunto de producciones gramaticales

<Léxico>::= <identificador>|<Entero>|<Asignación>|<Léxico>
<Léxico>::= <identificador>|<Entero>|<Asignación>
<identificador>::=<l><Alfanumérico>
<Alfanumérico>::=<l>|<d><Alfanumérico>
P <Alfanumérico>::=<l>|<d>
< l >::=(a-z)|(A-Z)
<d>::=(0-9)
<Entero>::=<d><Entero> (identificar) (lexico)
(identificador) (entero) (lexico)
<Entero>::=<d>
<Asignación>::= (=)
Tabla de transiciones
Diseño de analizadores Léxicos
boolean isAsignación (char símbolo){
if (símbolo==‘=’) return TRUE; else FALSE;
}
boolean isDigito(char símbolo){
if( (símbolo==‘0’) || (símbolo==‘1’) || (símbolo==‘2’) || (símbolo==‘3’) || (símbolo==‘4’) || (símbolo==‘5’) ||
(símbolo==‘6’) || (símbolo==´7’) || (símbolo==‘8’) || (símbolo==‘9’) ) return TRUE; else FALSE;
}
boolean isLetra(char símbolo){
if(( (símbolo==‘a’) || (símbolo==‘b’) || (símbolo==‘c’) || (símbolo==‘d’) || (símbolo==‘e’) || (símbolo==‘f’) ||
(símbolo==‘g’) || (símbolo==‘h’) || (símbolo==‘i’) || (símbolo==‘j’) || (símbolo==‘k’) || (símbolo==‘l’) || (símbolo==‘m’) ||
(símbolo==‘ñ’) || (símbolo==‘o’) || (símbolo==‘p’) || (símbolo==‘q’) || (símbolo==‘r’) || (símbolo==‘s’) || (símbolo==‘t’)
|| (símbolo==‘u’) || (símbolo==‘v’) || (símbolo==‘w’) || (símbolo==‘x’) || (símbolo==‘y’) || (símbolo==‘z’) ||
(símbolo==‘A’) || (símbolo==‘B’) || (símbolo==‘C’) || (símbolo==‘D’) || (símbolo==‘E’) || (símbolo==‘F’) ||
(símbolo==‘G’) || (símbolo==‘H’) || (símbolo==‘I’) || (símbolo==‘J’) || (símbolo==‘K’) || (símbolo==‘L’) ||
(símbolo==‘M’) || (símbolo==‘N’) || (símbolo==‘Ñ’) || (símbolo==‘O’) || (símbolo==‘P’) || (símbolo==‘Q’) ||
(símbolo==‘R’) || (símbolo==‘S’) || (símbolo==‘T’) || (símbolo==‘U’) || (símbolo==‘V’) || (símbolo==‘W’) ||
(símbolo==‘X’) || (símbolo==‘Y’) || (símbolo==‘Z’) ) return TRUE; else FALSE;
}
Diseño de Analizadores Léxicos

üDiagrama de transiciones
üTabla de transiciones
üEjemplo3
Diseño de Analizadores Léxicos
Diseñar un analizador léxico que ujlice un DT construido a parjr de las expresiones regulares de los
patrones de los tokens involucrados en expresiones algebraicas (los operadores son "*", "+", "-", "/",
"(" y ")") en las que intervengan números enteros y reales (en notación no exponencial) sin signo y
variables expresadas mediante idenjficadores.

Notación 1 otro 2 *Suma


l= letra
d=digito + 3
otro 4 *Resta
token lexema patrón
- Suma + +
* 5 otro 6 *Multiplicación Resta - -

/
7
otro 8 *División
Multiplicación * *
0
d d
División / /

l 9 otro *Entero Enteros 4, 66,2234 dígito+


. 10

d Reales 4.567 dígito+ . dígito+


13 11 otro 12 *Real
l ,d otro 14 *Identificador
Identificadores ab1, sss3s4 Letra (letra | dígito)*
1 2
Estado + - * / d l . otro token Retroceso
+ 3 otro 4
0 1 3 5 7 9 13 - error - -
1 - - - - - - - 2 - * 5 otro 6

2 - - - - - - - - Suma 1 0
/ 7 otro 8
3 - - - - - - - 4 - d 9 d otro
4 - - - - - - - - Resta 1
l .
13
5 - - - - - - - 6 -
l ,d otro 1
6 - - - - - - - - Multiplicación 1
7 - - - - - - - 8 -
8 - - - - - - - - División 1
9 - - - - 9 - 11 10 -
10 - - - - - - - - Entero 1
11 - - - - 11 - - 12 -
12 - - - - - - - - Real 1
13 - - - - 13 13 - 14 -
14 - - - - - - - - Identificador 1
Tabla de transiciones
Gramática Formal G={ΣT, ΣN,S,P}
ΣT =Es el alfabeto de símbolos terminales
ΣN =Es el alfabeto de símbolos no terminales <>
Diseño de analizadores léxicos
S =Es el símbolo inicial de la gramática
P =Es un conjunto de producciones gramaticales

<Léxico>::= <identificador>|<Entero>|<Real>|<Suma>|
<Resta>|<División>|<Multiplicación>|<Léxico>
<Léxico>::= <identificador>|<Entero>|<Real>|<Suma>|
<Resta>|<División>|<Multiplicación>
<identificador>::=<l><Alfanumérico>
<Alfanumérico>::=<l>|<d><Alfanumérico>
P <Alfanumérico>::=<l>|<d>
< l >::=(a-z)|(A-Z)
<d>::=(0-9)
<Entero>::=<d><Entero>
<Entero>::=<d>
<Real>::=<Entero> . <Entero>
<Suma>::= +
<Resta>::= -
<Multiplicación>::= *
<División>::= /
Diseño de Analizadores Léxicos
Continuación
üDiagrama de transiciones
üTabla de transiciones
üEjemplo4
Diseñar un diagrama de transiciones determinista para reconocer los siguientes componentes léxicos:
Diseño de Analizadores Léxicos while la palabra reservada ”while” (en minúscula). when la palabra reservada “when” (en minúscula).
Ident cualquier secuencia de letas (mayúsculas y minúsculas) y dígitos que empiecen por una letra, y que no coincida
con nunguna de las palabras reservadas.
OperSum el símbolo + Opermult el símbolo * OperInc el símbolo ++

+ 3
otro 4 *OperInc token lexema patrón

1
otro 2 *Suma
PRwhile
PRwhen
while
when
while
when
+ 5
otro 6 *Multiplicación
Ident ab1, ss3 letra (letra | dígito)*
OperSum + +
*
a,d otro 8 *Identificador OperMult * *

0
a to ro (*7) OperInc ++ ++
7

otro
l e otro
otro

w i 11 12 13 14 *PRwhile Notación
a=letra=(a-z |A-Z)
⍷ 9 h d=digito
. e
10
n otro
otro

15 16 17

to ro
otro

*PRwhen

(*7)
Estado + * a d w h i l e n otro token Retroceso
0 1 5 7 9 - - - - - - ⍷ -
1 3 - - - - - - - - - 2 -
2 - - - - - - - - - - - Suma 1
3 - - - - - - - - - - 4 -
4 - - - - - - - - - - - OperInc 1
Tabla de transiciones Ejemplo4

5 - - - - - - - - - - 6 -
6 - - - - - - - - - - - Multiplicación 1
7 - - 7 7 - - - - - - 8 -
8 - - - - - - - - - - - Identificador 1
9 - - - - - 10 - - - - 7 - 1
10 - - - - - - 11 - 15 - 7 - 1
11 - - - - - - - 12 - - 7 - 1
12 - - - - - - 13 - - - 7 - 1
13 - - - - - - - - - - 14 -
14 - - - - - - - - - - - PRwhile 1
15 - - - - - - - - - 16 7 - 1
16 - - - - - - - - - - 17 -
17 - - - - - - - - - - - PRwhen 1
Gramática Formal G={ΣT, ΣN,S,P}
Diseño de Analizadores Léxicos ΣT =Es el alfabeto de símbolos terminales
ΣN =Es el alfabeto de símbolos no terminales <>
S =Es el símbolo inicial de la gramática
P =Es un conjunto de producciones gramaticales

<Léxico>::= <identificador>|<Entero>|<Real>|<Suma>|
<Resta>|<División>|<Multiplicación>|<Léxico>
<Léxico>::= <identificador>|<Entero>|<Real>|<Suma>|
<Resta>|<División>|<Multiplicación>
<OperInc>::=<Suma><Suma>
<Suma>::= +
<Multiplicación>::= *
P <identificador>::=<l><Alfanumérico>
<Alfanumérico>::=<l>|<d><Alfanumérico>
<Alfanumérico>::=<l>|<d>
<a>::=(a-z)|(A-Z)
<d>::=(0-9)
<PRwhile>::= while
<PRwhen>::=when
Diseño de Analizadores Léxicos
Continuación
üDiagrama de transiciones
üTabla de transiciones
üEjemplo5
Diseñar un diagrama de transiciones determinista para reconocer los siguientes componentes léxicos:
Diseño de Analizadores Léxicos Letras cuanquier secuenc ia de una o más letras (mayúsculas y minúscula);
Entero cualquier secuencia de uno o más dígitos;
Explos1 la palabra reservada ”bang” (en minúsculas); Explos2 la palabra reservada “boom” (en minúsculas);
True la secuencia “:-)” Falso la secuencia “:-(“ Asignar la secuencia “:=“
*Entero
2 token lexema patrón
5 *Asignar
otro Letras asdC,frg (a-z|A-Z) +
otro
d (⍷) otro *Falso Entero 4, 66,2234 dígito+
1 4 7 8
= ( Explos1 bang bang
otro otro
d otro Explos2 boom boom
:
3
- 6
)
9 10 *True
True :-) :-)
0 b
11
a 12
n 13
g
14
otro 15 *Explos1 Falso :-( :-(
l otro otro otro Asignar := :=
o
20
otro l otro (*20) Notación
o otro l=letra=(a-z|A-Z) +
otro 16
17 m 18
otro 19
d=digito=(0-9) +
*Explos2

21 *Letras
Estado d : = - ( ) b a n g o m l otro token Retroceso
0 1 3 - - - - 11 - - - - - 20 ⍷ Explos1 1
1 1 - - - - - - - - - - - - 2
2 - - - - - - - - - - - - - - Entero 1
3 - - 4 6 - - - - - - - - - ⍷
4 - - - - - - - - - - - - - 5
5 - - - - - - - - - - - - - - Asignar 1
6 - - - - 7 9 - - - - - - - ⍷
Tabla de transiciones Ejemplo5

7 - - - - - - - - - - - - - 8
8 - - - - - - - - - - - - - Falso 1
9 - - - - - - - - - - - - - 10
10 - - - - - - - - - - - - - True 1
11 - - - - - - - 12 - - 16 - - 20 1
12 - - - - - - - - 13 - - - - 20 1
13 14 20 1
14 15
15 Explos1 1
16 17 20 1
17 18 20 1
18 19
19 Explos2 1
20 20 21
Diseño de Analizadores Léxicos

üDiagrama de transiciones
üTabla de transiciones
üEjemplo6
Diseñar un diagrama de transiciones determinista para reconocer los siguientes componentes léxicos:
Diseño de Analizadores Léxicos Read la palabra reservada “read” Print la palabra reservada “print” Pradir la palabra reservada “pradir”
Redir la palabra reservada ”redir” Raya el símbolo “-”punto el símbolo “.” Uno el símbolo “.----”
Dos el símbolo “..---” Ident cualquier secuencia de letras dígitos que empiece por una letra y no coincida con
ninguna de las palabras reservadas.
token lexema patrón
Read read read
Print print print
Pradir pradir pradir
Redir redir redir
Raya - -
Uno .---- .----
Dos ..---- ..----
Identific ab1, Letra
adores sss3s (letra |
dígito)*
Dadas las siguientes gramáticas, indicar de qué tipo son y cómo es el lenguaje que generan

También podría gustarte