Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DIAGRAMAS DE TRANSICIONES
Son grafos dirigidos que especifican el reconocimiento de un token como elemento del lenguaje.
En un diagrama de transición ( DT) se compila un token.
Partes:
inicio
Estado inicial 0
Estado n
Estado final n
Transición 0 1
id
Arista
Se dice que un token se compila en un DT, si este es reconocido o cumple una ruta desde el estado
inicial hasta un estado de aceptación (estado final).
DT básicos:
a
- ER: a | b inicio
0 1
b
L (a | b) = L(a) | L(b) = {a,b}
- ER: ab
inicio a b
0 1 2
L (ab) = L(a) L(b) = {ab}
a
- ER: a*
inicio Є
1
L (a*) = L(a)* = {Є, a, aa, aaa, aaaa, ...} 0
- ER: a+ a
inicio a
L (a+ ) = L(a)+ = {a, aa, aaa, aaaa, ...} 0 1
a+ aa* inicio
0
a
1
Є
2
a*
EJERCICIOS
I. Desarrollar los Diagramas de Transición (DT) de las siguientes Expresiones Regulares
(ER).
1. (a | b) a*bb sobre ={a,b} 2. (a* | b+)* a* | b* sobre ={a, b}
a a
inicio Є Є Є Є
a 0 1 2 5 6
a b
b
inicio Є b b Є
0 1 2 3 4
b
3
b
Є Є
Є
2
Є Є 2
Є Є
inicio Є mn
0 1 Є mn
1 Є
Є 4 4 4
Є Є Є
3
3
Є
Є
xy xy
mn
Є
Є
0 0 1
3 6 11
Є Є Є Є Є Є
inicio Є 1 Є 1 Є 0
0 1 2 4 5 9 10
Є
Є
0
Є Є
1
1 7
Є
II. Desarrollar los Diagramas de Transición (DT) de las siguientes Definicione s Regulares
(DR).
1. Números enteros con signo y sin signo.
DR: num_entero (-|+| ) digito+
- digito
Inicio + digito
0 1 2 3
digito digito
digito
inicio + digito .
0 1 2 3
-
digito
digito digito
E + digito
4 5 6 7 8
-
-
4. Identificadores
DR: id letra (letra|digito|_)*
inicio letra
0 1 letra 2 3
digito
inicio
5. Operadores relacionales 0 > 1
<
2
=
3
< >
4 5
< 6 =
7
>
=
8 9
inicio
6. Operadores lógicos AND
0 1
OR
2
NOT
3
-
2
/
3
*
4
8. Constantes numéricas
DR: const (int | flota | char | ) id = digito + (.digito + | )
id letra (letra | digito | -)*
char
digito
-
inicio int letra letra = digito
0 1 2 3 4 5
.
float digito
digito
digito
6 7
9. Numero entero, real y notación científica, todo al mismo tiempo con y sin signo
+
num_ent_real_not (+|-|Є ) digito (.digito + | Є ) (E(+ | - | Є ) digito +
| Є)
digito digito
digito
E + digito
5 6 7 8
espacio
inicio
letra letra
0 1 2 3
digito
Carar_esp
prop_printf printf(“mensaje”,var_esc)|printf(“mensaje”)
printf ( “ mensaje “
10 11 12 13 14
)
15
-
inicio t_dato letra (
letra
0 1 2 3 4
digito t_dato
5
letra
-
-
letra , t_dato
6 7 8 9 letra letra 11
10
digito
digito