Está en la página 1de 14

Contenido

1.

Solicitud de la prctica ........................................................... Error! Bookmark not defined.

2.

Anlisis sintctico .................................................................................................................. 2


2.1

Primeros y siguientes....................................................................................................... 2

2.2

Cerraduras ......................................................................................................................... 2

2.3

Matriz predictiva ................................................................................................................ 5

EJEMPLO 1 ........................................................................................................................................... 6
EJEMPLO 2 ........................................................................................................................................... 8
EJEMPLO 3 ......................................................................................................................................... 10
3.

Objetivos de la aplicacin .................................................................................................. 11


3.1

Ingreso a la aplicacin ................................................................................................... 11

3.2

Interfaz de usuario .......................................................................................................... 11

3.3

Mdulos ............................................................................................................................ 12

1. Anlisis sintctico
El desarrollo del presente trabajo consiste en la creacin de un programa en el
lenguaje Java bajo la plataforma NetBeans, acoplando lo que en unidades
pasadas fue un lenguaje propio que en este proyecto es llamado Spearon, el
cual contiene expresiones aritmticas, lgicas, relacionales y de agrupamiento que
sern la base para aplicar uno de los dos algoritmos que se pide realizar (LR o LL)
Para el caso de Spearon, el anlisis del algoritmo LR ser la base para el
desarrollo del programa que se pide detallar para la determinacin de expresiones
correctamente escritas.

1.1

Primeros y siguientes

PRIMEROS
P(E')=P( E)=P(T)=P(F)=P(G)=P(H)=(, id
SIGUIENTES
S(E')=E
S (E)=$, &,|! )
S(T)=$,&,|,!,=,<,>,<=,>=,><)
S(F)= $,&,|,!,=,<,>,<=,>=,><,+,-)
S(G)= $,&,|,!,=,<,>,<=,>=,><,+,-,*,/)
S(H)= $,&,|,!,=,<,>,<=,>=,><,+,-,*,/)

1.2

Cerraduras

CERRADURAS

I0
E'.E
E .E&T
E .E|T
E .E!T
E .T
T .T=F
T .T<F
T .T>F
T .T<=F
T.T>=F
T.T><F

I1
E' E. Acc
E E.&T
E E.|T
E E.!T
I2
ET.
TT.=F
TT.<F
TT.>F
TT.<=F
TT.>=F

I5
GH.
I6
H (.E)
E.E&T
E.E|T
E.E!T
E.T
T.T=F
T.T<F
T.T>F
T.T<=F

T .F
F.F+G
F.F-G
F .G
G.G*H
G.G/H
G .H
H .( E )
H .id
I7
Hid.

TT. ><F
I3
TF.
FF.+G
FF.-G
I4
FG.
G G.*H
GVG./H

T.T>=F
T.T><F
T.F
F.F+G
F.F-G
F.G
G.G*H
G.G/H
G .H
H .( E )
H.id
I12
TT<.F
F.F+G
F.F-G
F.G
G.G*H
G.G/H
G .H
H .( E )
H.id
I15
TT>=.F
F.F+G
F.F-G
F.G
G.G*H
G.G/H
G .H
H .( E )
H.id
I22
EE&T.
TT.=F
TT.<F
TT.>F
TT.<=F
TT.>=F
TT.><F
I29

I8
EE&.T
T.T=F
T.T<F
T.T>F
T.T<=F
T.T>=F
T.T><F
T.F
F.F+G
F.F-G
F.G
G.G*H
G.G/H
G .H
H .( E )
H.id

I9
E-- E|.T
T.T=F
T.T<F
T.T>F
T.T<=F
T.T>=F
T.T><F
T.F
F.F+G
F.F-G
F.G
G.G*H
G.G/H
G .H
H .( E )
H.id

I10
EE!.T
T.T=F
T.T<F
T.T>F
T.T<=F
T.T>=F
T.T><F
T.F
F.F+G
F.F-G
F.G
G.G*H
G.G/H
G .H
H .( E )
H.id

I11
TT=.F
F.F+G
F.F-G
F.G
G.G*H
G.G/H
G .H
H .( E )
H.id

I18
FF-.G
G.G*H
G.G/H
G .H
H .( E )
H.id

I19
GG*.H
H .( E )
H.id

I20
GG/.H
H .( E )
H.id

I21
H(E.)
EE.&T
EE.|T
EE.!T

I25

I26

I27

I28

I13
TT>.F
F.F+G
F.F-G
F.G
G.G*H
G.G/H
G .H
H .( E )
H.id
I16
TT><.F
F.F+G
F.F-G
F.G
G.G*H
G.G/H
G .H
H .( E )
H.id
I23
EE|T.
TT.=F
TT.<F
TT.>F
TT.<=F
TT.>=F
TT.><F
I30

I14
TT<=.F
F.F+G
F.F-G
F.G
G.G*H
G.G/H
G .H
H .( E )
H.id
I17
FF+.G
G.G*H
G.G/H
G .H
H .( E )
H.id

I24
EE!T.
TT.=F
TT.<F
TT.>F
TT.<=F
TT.>=F
TT.><F
I31

TT=F.
FF.+G
FF.-G
I32
FF-G.
GG.*H
GG./H

TT<F.
FF.+G
FF.-G
I32
G G&H.

TT>F.
FF.+G
FF.-G
I33
G G|H.

TT<=F.
FF.+G
FF.-G
I34
G G!H.

TT>=F.
FF.+G
FF.-G
I35
H (E).

TT><F.
FF.+G
FF.-G

FF+G.
GG.*H
GG./H

Matriz predictiva

1.3
id
0 D7
1
2
3
4
5
6 D7
7
8 D7
9 D7
10 D7
11 D7
12 D7
13 D7
14 D7
15 D7
16 D7
17 D7
18 D7
19 D7
20 D7
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

>

<

D13 D12 D11


D17 D18
R11 R11 R11
R14 R14 D19 D20 R14 R14 R14
R17 R17 R17 R17 R17 R17 R17

><

D16
R11
R14
R17

<=

D14
R11
R14
R17

>=

&

D15
R11
R14
R17

D8
R4
R11
R14
R17

D9
R4
R11
R14
R17

D10
R4
R11
R14
R17

(
D6

AC
R4 R4
R11 R11
R14 R14
R17 R17
D6

R19 R19 R19 R19 R19 R19 R19 R19 R19 R19 R19 R19 R19

21

D17
D17
D17
D17
D17
D17
R12
R13
R15
R16
R18

D18
D18
D18
D18
D18
D18
R12
R13
R15
R16
R18

D19
D19
R15
R16
R18

D20
D20
R15
R16
R18

D13
D13
D13
R5
R6
R7
R8
R9
R10
R12
R13
R15
R16
R18

D12
D12
D12
R5
R6
R7
R8
R9
R10
R12
R13
R15
R16
R18

D11
D11
D11
R5
R6
R7
R8
R9
R10
R12
R13
R15
R16
R18

D16
D16
D16
R5
R6
R7
R8
R9
R10
R12
R13
R15
R16
R18

D14
D14
D14
R5
R6
R7
R8
R9
R10
R12
R13
R15
R16
R18

D15
D15
D15
R5
R6
R7
R8
R9
R10
R12
R13
R15
R16
R18

D9
R1
R2
R3
R5
R6
R7
R8
R9
R10
R12
R13
R15
R16
R18

D10
R1
R2
R3
R5
R6
R7
R8
R9
R10
R12
R13
R15
R16
R18

3 4

R19 R19
D6
D6
D6
D6
D6
D6
D6
D6
D6
D6
D6
D6
D6

D8
R1
R2
R3
R5
R6
R7
R8
R9
R10
R12
R13
R15
R16
R18

E T F G H
1 2 3 4 5

22
23
24

D35
R1
R2
R3
R5
R6
R7
R8
R9
R10
R12
R13
R15
R16
R18

R1
R2
R3
R5
R6
R7
R8
R9
R10
R12
R13
R15
R16
R18

3
3
3
25
26
27
28
29
30
31
32

4
4
4
4
4
4
4
4
4
4
4

5
5
5
5
5
5
5
5
5
5
5
33
34

EJEMPLO 1
S=0,6,7,5,4,3,2,21,8,7,5,4,3,22,21,35,5,4,3,13,6,7,5,4,3,2,21,9,7,5,4,3,23,21,35,5,27,3,12,6,7,5,4,3,
2,10,7,5,4,24,2,21,35,5,26,3,2,1
a=(,id,+,id,),<,(,id,-,id,),>,(,id,*,id,),$
Pila
0
06
067
065
064
063
062
0 6 21
0 6 21 8
0 6 21 8 7
0 6 21 8 5
0 6 21 8 4
0 6 21 8 3
0 6 21 8 22
0 6 21
0 6 21 35
05
04
03
0 3 13
0 3 13 6
0 3 13 6 7
0 3 13 6 5
0 3 13 6 4
0 3 13 6 3
0 3 13 6 2
0 3 13 6 21
0 3 13 6 21 9
0 3 13 6 21 9 7
0 3 13 6 21 9 5
0 3 13 6 21 9 4
0 3 13 6 21 9 3
0 3 13 6 21 9 23
0 3 13 6 21

Entrada
(id+id)<(id-id)>(id*id)$
id+id)<(id-id)>(id*id)$
+id)<(id-id)>(id*id)$
+id)<(id-id)>(id*id)$
+id)<(id-id)>(id*id)$
+id)<(id-id)>(id*id)$
+id)<(id-id)>(id*id)$
+id)<(id-id)>(id*id)$
id)<(id-id)>(id*id)$
)<(id-id)>(id*id)$
)<(id-id)>(id*id)$
)<(id-id)>(id*id)$
)<(id-id)>(id*id)$
)<(id-id)>(id*id)$
)<(id-id)>(id*id)$
<(id-id)>(id*id)$
<(id-id)>(id*id)$
<(id-id)>(id*id)$
<(id-id)>(id*id)$
(id-id)>(id*id)$
id-id)>(id*id)$
-id)>(id*id)$
-id)>(id*id)$
-id)>(id*id)$
-id)>(id*id)$
-id)>(id*id)$
-id)>(id*id)$
id)>(id*id)$
)>(id*id)$
)>(id*id)$
)>(id*id)$
)>(id*id)$
)>(id*id)$
)>(id*id)$

Accin
D6
D7
H-- id
G-- H
F-- G
T-- F
E--T
D8
D7
H-- id
G-- H
F-- G
T-- F
E--E+T
D35
H--( E )
G-- H
F-- G
D13
D6
D7
H-- id
G-- H
F-- G
T-- F
E--T
D9
D7
H-- id
G-- H
F-- G
T-- F
E-- E-T

0 3 13 21 35
0 3 13 5
0 3 13 27
03
0 3 12
0 3 12 6
0 3 12 6 7
0 3 12 6 5
0 3 12 6 4
0 3 12 6 3
0 3 12 6 2
0 3 12 6 2 10
0 3 12 6 2 10 7
0 3 12 6 2 10 5
0 3 12 6 2 10 4
0 3 12 6 2 10 24
0 3 12 6 2
0 3 12 6 21
0 3 12 6 21 35
0 3 12 5
0 3 12 26
03
02
01

>(id*id)$
>(id*id)$
>(id*id)$
>(id*id)$
(id*id)$
id*id)$
*id)$
*id)$
*id)$
*id)$
*id)$
id)$
)$
)$
)$
)$
)$
)$
$
$
$
$
$
$

D35
H-- ( E )
G-- H
F-- F<G
D12
D6
D7
H-- id
G-- H
F-- G
T-- F
D10
D7
H-- id
G-- H
F-- G
T-- T*F
E-- T
D35
H-- ( E )
G-- H
F-- F>G
T-- F
E-- T
Aceptado

EJEMPLO 2
S=0,6,7,5,4,3,2,21,8,7,5,4,3,22,21,35,5,4,18,6,7,5,4,3,2,21,9,7,5,4,3,23,21,35,33,4,3,13,6,7,5,4,3,2,
10,7,5,4,24,2,21,35,5,27,19,6,7,5,4,3,2,11,7,5,4,25,2,21,35,33,27,3,2,1
a=(,id,+,id,),&,(,id,-,id,),<,(,id,*,id,),|,(,id,/,id,),$
PILA
0
06
067
065
064
063
062
0 6 21
0 6 21 8
0 6 21 8 7
0 6 21 8 5
0 6 21 8 4
0 6 21 8 3
0 6 21 8 22
0 6 21
0 6 21 35
05
04
0 4 18
0 4 18 6
0 4 18 6 7
0 4 18 6 5
0 4 18 6 4
0 4 18 6 3
0 4 18 6 2
0 4 18 6 21
0 4 18 6 21 9
0 4 18 6 21 9 7
0 4 18 6 21 9 5
0 4 18 6 21 9 4
0 4 18 6 21 9 3
0 4 18 6 21 9 23
0 4 18 6 21
0 4 18 6 21 35

ENTRADA
(id+id)&(id-id)<(id*id)|(id/id)$
id+id)&(id-id)<(id*id)|(id/id)$
+id)&(id-id)<(id*id)|(id/id)$
+id)&(id-id)<(id*id)|(id/id)$
+id)&(id-id)<(id*id)|(id/id)$
+id)&(id-id)<(id*id)|(id/id)$
+id)&(id-id)<(id*id)|(id/id)$
+id)&(id-id)<(id*id)|(id/id)$
id)&(id-id)<(id*id)|(id/id)$
)&(id-id)<(id*id)|(id/id)$
)&(id-id)<(id*id)|(id/id)$
)&(id-id)<(id*id)|(id/id)$
)&(id-id)<(id*id)|(id/id)$
)&(id-id)<(id*id)|(id/id)$
)&(id-id)<(id*id)|(id/id)$
&(id-id)<(id*id)|(id/id)$
&(id-id)<(id*id)|(id/id)$
&(id-id)<(id*id)|(id/id)$
(id-id)<(id*id)|(id/id)$
id-id)<(id*id)|(id/id)$
-id)<(id*id)|(id/id)$
-id)<(id*id)|(id/id)$
-id)<(id*id)|(id/id)$
-id)<(id*id)|(id/id)$
-id)<(id*id)|(id/id)$
-id)<(id*id)|(id/id)$
id)<(id*id)|(id/id)$
)<(id*id)|(id/id)$
)<(id*id)|(id/id)$
)<(id*id)|(id/id)$
)<(id*id)|(id/id)$
)<(id*id)|(id/id)$
)<(id*id)|(id/id)$
<(id*id)|(id/id)$

ACCION
D6
D7
H-- id
G-- H
F-- G
T-- F
E-- T
D8
D7
H-- id
G-- H
F-- G
T-- F
E-- E+T
D35
H-- ( E )
G-- H
D18
D6
D7
H-- id
G-- H
F-- G
T-- F
E-- T
D9
D7
H-- id
G-- H
F-- G
T-- F
E-- E-T
D35

0 4 18 32
04
03
0 3 13
0 3 13 6
0 3 13 6 7
0 3 13 6 5
0 3 13 6 4
0 3 13 6 3
0 3 13 6 2
0 3 13 6 2 10
0 3 13 6 2 10 7
0 3 13 6 2 10 5
0 3 13 6 2 10 4
0 3 13 6 2 10 24
0 3 13 6 2
0 3 13 6 21
0 3 13 6 21 35
0 3 13 5
0 3 13 27
0 3 13 27 19
0 3 13 27 19 6
0 3 13 27 19 6 7
0 3 13 27 19 6 5
0 3 13 27 19 6 4
0 3 13 27 19 6 3
0 3 13 27 19 6 2
0 3 13 27 19 6 2 11
0 3 13 27 19 6 2 11 7
0 3 13 27 19 6 2 11 5
0 3 13 27 19 6 2 11 4
0 3 13 27 19 6 2 11 25
0 3 13 27 19 6 2
0 3 13 27 19 6 21
0 3 13 27 19 6 21 35
0 3 13 27 19 33
0 3 13 27
03
02
01

<(id*id)|(id/id)$
<(id*id)|(id/id)$
<(id*id)|(id/id)$
(id*id)|(id/id)$
id*id)|(id/id)$
*id)|(id/id)$
*id)|(id/id)$
*id)|(id/id)$
*id)|(id/id)$
*id)|(id/id)$
id)|(id/id)$
)|(id/id)$
)|(id/id)$
)|(id/id)$
)|(id/id)$
)|(id/id)$
)|(id/id)$
|(id/id)$
|(id/id)$
|(id/id)$
(id/id)$
id/id)$
/id)$
/id)$
/id)$
/id)$
/id)$
id)$
)$
)$
)$
)$
)$
)$
$
$
$
$
$
$

H-- ( E )
G-- G&H
F-- G
D13
D6
D7
H-- id
G-- H
F-- G
T-- F
D10
D7
H-- id
G-- H
F-- G
T-- T*F
E-- T
D35
H-- ( E )
G-- H
D19
D6
D7
H-- id
G-- H
F-- G
T-- F
D11
D7
H-- id
G-- H
F-- G
T-- T/F
G--T
D35
H-- ( E )
G-- G|H
F-- F<G
T-- F
E-- T
ACEPTADO

EJEMPLO 3
S=0,6,7,5,4,3,2,10,7,5,4,24,2,21,35,5,4,3,12,7,26,3,2,1,8,7,5,4,18
a=(,id,*,id,),>,id,+,id,&,*
PILA
0
06
067
065
064
063
062
0 6 2 10
0 6 2 10 7
0 6 2 10 5
0 6 2 10 4
0 6 2 10 24
062
0 6 21
0 6 21 35
05
04
03
0 3 12
0 3 12 7
0 3 12 26
03
02
01
018
0187
0185
0184
0 1 8 4 18

ENTRADA
(id*id)>id+id&*id>id+id$
id*id)>id+id&*id>id+id$
*id)>id+id&*id>id+id$
*id)>id+id&*id>id+id$
*id)>id+id&*id>id+id$
*id)>id+id&*id>id+id$
*id)>id+id&*id>id+id$
id)>id+id&*id>id+id$
)>id+id&*id>id+id$
)>id+id&*id>id+id$
)>id+id&*id>id+id$
)>id+id&*id>id+id$
)>id+id&*id>id+id$
)>id+id&*id>id+id$
>id+id&*id>id+id$
>id+id&*id>id+id$
>id+id&*id>id+id$
>id+id&*id>id+id$
id+id&*id>id+id$
+id&*id>id+id$
+id&*id>id+id$
+id&*id>id+id$
+id&*id>id+id$
+id&*id>id+id$
id&*id>id+id$
&*id>id+id$
&*id>id+id$
&*id>id+id$
*id>id+id$
TERMINA

ACCION
D6
D7
H-- id
G-- H
F-- G
T-- F
D10
D7
H-- id
G-- H
F-- G
T-- T*F
E-- T
D35
H-- ( E )
G-- H
F-- G
D12
D7
G-- H
F-- F>G
T-- F
E-- T
D8
D7
H-- id
G-- H
D18

2. Objetivos de la aplicacin
Permitir el ingreso, validacin e impresin de la informacin correspondiente a
una expresin determinado por el algoritmo LR.
2.1

Ingreso a la aplicacin

La aplicacin puede ejecutarse haciendo doble clic a un archivo ejecutable .jar


llamado LR (Fig. 1)

Figura 1.- Ejecutable LR

2.2

Interfaz de usuario

La interfaz de usuario es sencilla de utilizar (Fig. 2) cuenta con varios mdulos que
ms adelante se detallarn.

Figura 2.- Interfaz de usuario

2.3

Mdulos
Tabla LR.- Contiene la matriz predictiva (Fig. 3) que corresponde al
lenguaje propio Spearon est cargada desde una base de datos y
montada en una tabla para ser manipulada internamente cuando se ejecute
el algoritmo.

Figura 3.- Matriz predictiva

Entrada de datos.- Corresponde al ingreso de la expresin la cual se va a


validar para verificar si es aceptada o no. El rea de texto que almacena la
expresin al momento de ejecutar la aplicacin contiene una expresin por
default (Fig. 4), de igual manera puede cargarse otra expresin haciendo
clic en el botn Cargar Gramtica haciendo referencia a una expresin
contenida en un archivo de texto (Fig. 5).
Cabe mencionar que los token de la expresin hacen referencia a los ya
dados de alta por decirlo as en la matriz predictiva correspondiente al
lenguaje Spearon es importante que cada token sea separado por un
espacio y para finalizar la expresin tiene que contener el signo $, de igual
manera separado por un espacio del ltimo token.

Figura 4.- Entrada de datos por default

Figura 5.- Entrada de datos desde archivo de texto

Ejecutar algoritmo.- Es el centro de toda la aplicacin, una vez que se


tiene cargada una expresin el botn ejecutar (Fig. 6) hace referencia a
todo el algoritmo LR que internamente valida la expresin deseada.

Figura 6. Ejecutar algoritmo

Salidas.- Muestra el corrimiento del algoritmo dividindolo en 3 partes.


1. Pila.- Muestra lo que se encuentra en el tope de la pila tras cada
comparacin.
2. Entrada.- Muestra el token con el cul se est comparando el tope de la
pila.
3. Accin.- Hace referencia al cruce de la Pila con la Entrada que ser
buscado en la matriz predictiva para verificar si corresponde a un
Desplazamiento (D) o una Reduccin (R).

Finalmente el resultado que se espera es un Aceptado en una expresin correcta


o un null en una expresin que en algn momento del corrimiento cae en una
casilla vaca dentro de la matriz predictiva.

Figura 7. Salidas de datos

También podría gustarte