Está en la página 1de 7

Compiladores e Interpretes EPCI - UNPRG

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*

Ing. Luis Reyes Lescano 1


Compiladores e Interpretes EPCI - UNPRG

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
Є Є
Є

3. ((xy* | mn*)* | xy)+ | mn sobre ={xy, mn}


Є
Є Є
xy
xy

2
Є Є 2
Є Є
inicio Є mn
0 1 Є mn
1 Є
Є 4 4 4
Є Є Є
3
3

Є
Є
xy xy

mn

4. ((0* | 1)+ | 0* | 1+)* (0 | 1*)* sobre ={0,1}


Є

Є
Є
0 0 1

3 6 11

Є Є Є Є Є Є

inicio Є 1 Є 1 Є 0
0 1 2 4 5 9 10
Є
Є
0
Є Є

1
1 7
Є

Ing. Luis Reyes Lescano 2


Compiladores e Interpretes EPCI - UNPRG

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

2. Números reales con signo y sin signo.


DR: num_real  (-| +| ) digito+ . digito+

digito digito

inicio + digito . digito


a 0 1 a 2 3 4

3. Numero en notación científica con signo y sin signo.


DR: num_cient  (-|+| ) digito+ . digito+ E (-| +| ) 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

Ing. Luis Reyes Lescano 3


Compiladores e Interpretes EPCI - UNPRG

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

7. Operadores aritméticos inicio


0 + 1

-
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

Ing. Luis Reyes Lescano 4


Compiladores e Interpretes EPCI - UNPRG

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

inicio + digito . digito


0 1 2 3 4
-

digito

E + digito
5 6 7 8

10. Cadena de caracteres

cadena letra(letra | digito | espacio | carar_esp )*


letra [A –Z] – [a – z]
carar_esp *| ¿ | ) | &|.....

espacio
inicio
letra letra
0 1 2 3

digito

Carar_esp

Ing. Luis Reyes Lescano 5


Compiladores e Interpretes EPCI - UNPRG

11. Sentencia printf()

prop_printf printf(“mensaje”,var_esc)|printf(“mensaje”)

inicio printf ( “ mensaje “ ,


0 1 2 3 4 5 6
var_esc
)
7 8

printf ( “ mensaje “
10 11 12 13 14
)

15

12. Sentencia scanf()

inicio scanf ( “ formato “ ,


0 1 2 3 4 5 6
var_lect
)
7 8

13. Definición de una función de usuario

func t_dato id (param | )


param t_dato id ( ,t_dato id)*
t_dato int | float |char
id letra(letra | digito | _ )*

Ing. Luis Reyes Lescano 6


Compiladores e Interpretes EPCI - UNPRG

-
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

Ing. Luis Reyes Lescano 7

También podría gustarte