Start of CONSTRUCTOR for the Grammar TRIM.grm Wed May 03 15:42:53 2006

Terminal alphabet

# 1 = #
# 2 = ;
# 3 = :
# 4 = #i#
# 5 = :=
# 6 = GOTO
# 7 = +
# 8 = -
# 9 = *
#10 = /
#11 = #c#
#12 = (
#13 = )
#14 = <
#15 = >
#16 = <=
#17 = >=
#18 = /=
#19 = =
#20 = IF
#21 = THEN
#22 = READ
#23 = WRITE
#24 = END
#25 = BEGIN
#26 = DO
#27 = WHILE


Nonterminal alphabet

#28 = `programm'
#29 = `programm12'
#30 = `operaatorid'
#31 = `operaator'
#32 = `operaatorid13'
#33 = `label'
#34 = `omistamine'
#35 = `iflause'
#36 = `suunamine'
#37 = `lugemine'
#38 = `kirjutamine'
#39 = `plokk'
#40 = `loop'
#41 = `muutuja'
#42 = `omistamine1'
#43 = `loogilav'
#44 = `aritmav'
#45 = `tingimus'
#46 = `yksliige'
#47 = `aritmav2'
#48 = `aritmav3'
#49 = `tegur'
#50 = `yksliige4'
#51 = `tegur5'
#52 = `loogilav6'
#53 = `loogilav7'
#54 = `loogilav8'
#55 = `loogilav9'
#56 = `loogilav10'
#57 = `loogilav11'
#58 = `plokk1'
#59 = `whiletingimus'
#60 = `loop1'


Productions

P 1: `programm' -> `programm12' #
P 2: `programm12' -> # `operaatorid'
P 3: `operaatorid' -> `operaator'
P 4: `operaatorid' -> `operaatorid13' ; `operaatorid'
P 5: `operaatorid13' -> `operaator'
P 6: `operaator' -> `label' : `operaator'
P 7: `operaator' -> `omistamine'
P 8: `operaator' -> `iflause'
P 9: `operaator' -> `suunamine'
P10: `operaator' -> `lugemine'
P11: `operaator' -> `kirjutamine'
P12: `operaator' -> `plokk'
P13: `operaator' -> `loop'
P14: `label' -> #i#
P15: `omistamine' -> `muutuja' := `omistamine1'
P16: `omistamine' -> `muutuja' := `loogilav'
P17: `omistamine1' -> `aritmav'
P18: `muutuja' -> #i#
P19: `iflause' -> `tingimus' `operaator'
P20: `suunamine' -> GOTO `label'
P21: `aritmav' -> `yksliige'
P22: `aritmav' -> `aritmav' + `aritmav2'
P23: `aritmav' -> `aritmav' - `aritmav3'
P24: `aritmav2' -> `yksliige'
P25: `aritmav3' -> `yksliige'
P26: `yksliige' -> `tegur'
P27: `yksliige' -> `yksliige' * `yksliige4'
P28: `yksliige' -> `yksliige' / `tegur'
P29: `yksliige4' -> `tegur'
P30: `tegur' -> #i#
P31: `tegur' -> #c#
P32: `tegur' -> ( `tegur5'
P33: `tegur5' -> `aritmav' )
P34: `loogilav' -> `aritmav' < `loogilav6'
P35: `loogilav' -> `aritmav' > `loogilav7'
P36: `loogilav' -> `aritmav' <= `loogilav8'
P37: `loogilav' -> `aritmav' >= `loogilav9'
P38: `loogilav' -> `aritmav' /= `loogilav10'
P39: `loogilav' -> `aritmav' = `loogilav11'
P40: `loogilav6' -> `aritmav'
P41: `loogilav7' -> `aritmav'
P42: `loogilav8' -> `aritmav'
P43: `loogilav9' -> `aritmav'
P44: `loogilav10' -> `aritmav'
P45: `loogilav11' -> `aritmav'
P46: `tingimus' -> IF `loogilav' THEN
P47: `lugemine' -> READ #i#
P48: `kirjutamine' -> WRITE #i#
P49: `plokk' -> `plokk1' END
P50: `plokk1' -> BEGIN `operaatorid'
P51: `loop' -> `whiletingimus' DO `operaator'
P52: `loop' -> `loop1' `whiletingimus'
P53: `loop1' -> DO `operaator'
P54: `whiletingimus' -> WHILE `loogilav'

Leftmost-set

Symbol123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
28.programm*000000000000000000000000000*0000000000000000000000000000000
29.programm12*00000000000000000000000000000000000000000000000000000000000
30.operaatorid000*0*0000000000000*0**0***000***********000*000000000000***
31.operaator000*0*0000000000000*0**0***00000*********000*000000000000***
32.operaatorid13000*0*0000000000000*0**0***000*0*********000*000000000000***
33.label000*00000000000000000000000000000000000000000000000000000000
34.omistamine000*000000000000000000000000000000000000*0000000000000000000
35.iflause0000000000000000000*000000000000000000000000*000000000000000
36.suunamine00000*000000000000000000000000000000000000000000000000000000
37.lugemine000000000000000000000*00000000000000000000000000000000000000
38.kirjutamine0000000000000000000000*0000000000000000000000000000000000000
39.plokk000000000000000000000000*00000000000000000000000000000000*00
40.loop0000000000000000000000000**0000000000000000000000000000000**
41.muutuja000*00000000000000000000000000000000000000000000000000000000
42.omistamine1000*000000**0000000000000000000000000000000*0*00*00000000000
43.loogilav000*000000**0000000000000000000000000000000*0*00*00000000000
44.aritmav000*000000**0000000000000000000000000000000*0*00*00000000000
45.tingimus0000000000000000000*0000000000000000000000000000000000000000
46.yksliige000*000000**000000000000000000000000000000000*00*00000000000
47.aritmav2000*000000**000000000000000000000000000000000*00*00000000000
48.aritmav3000*000000**000000000000000000000000000000000*00*00000000000
49.tegur000*000000**000000000000000000000000000000000000000000000000
50.yksliige4000*000000**000000000000000000000000000000000000*00000000000
51.tegur5000*000000**0000000000000000000000000000000*0*00*00000000000
52.loogilav6000*000000**0000000000000000000000000000000*0*00*00000000000
53.loogilav7000*000000**0000000000000000000000000000000*0*00*00000000000
54.loogilav8000*000000**0000000000000000000000000000000*0*00*00000000000
55.loogilav9000*000000**0000000000000000000000000000000*0*00*00000000000
56.loogilav10000*000000**0000000000000000000000000000000*0*00*00000000000
57.loogilav11000*000000**0000000000000000000000000000000*0*00*00000000000
58.plokk1000000000000000000000000*00000000000000000000000000000000000
59.whiletingimus00000000000000000000000000*000000000000000000000000000000000
60.loop10000000000000000000000000*0000000000000000000000000000000000

Rightmost-set

Symbol123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
28.programm*00000000000000000000000000000000000000000000000000000000000
29.programm12000*000000*0*0000000000*00000**0********0***0************0*0
30.operaatorid000*000000*0*0000000000*00000**0********0***0************0*0
31.operaator000*000000*0*0000000000*000000*0********0***0************0*0
32.operaatorid13000*000000*0*0000000000*000000*0********0***0************0*0
33.label000*00000000000000000000000000000000000000000000000000000000
34.omistamine000*000000*0*0000000000000000000000000000***0************000
35.iflause000*000000*0*0000000000*000000*0********0***0************0*0
36.suunamine000*0000000000000000000000000000*000000000000000000000000000
37.lugemine000*00000000000000000000000000000000000000000000000000000000
38.kirjutamine000*00000000000000000000000000000000000000000000000000000000
39.plokk00000000000000000000000*000000000000000000000000000000000000
40.loop000*000000*0*0000000000*000000*0********0***0************0*0
41.muutuja000*00000000000000000000000000000000000000000000000000000000
42.omistamine1000*000000*0*000000000000000000000000000000*0******000000000
43.loogilav000*000000*0*000000000000000000000000000000*0************000
44.aritmav000*000000*0*00000000000000000000000000000000******000000000
45.tingimus00000000000000000000*000000000000000000000000000000000000000
46.yksliige000*000000*0*00000000000000000000000000000000000***000000000
47.aritmav2000*000000*0*00000000000000000000000000000000*00***000000000
48.aritmav3000*000000*0*00000000000000000000000000000000*00***000000000
49.tegur000*000000*0*0000000000000000000000000000000000000*000000000
50.yksliige4000*000000*0*00000000000000000000000000000000000*0*000000000
51.tegur5000000000000*00000000000000000000000000000000000000000000000
52.loogilav6000*000000*0*000000000000000000000000000000*0******000000000
53.loogilav7000*000000*0*000000000000000000000000000000*0******000000000
54.loogilav8000*000000*0*000000000000000000000000000000*0******000000000
55.loogilav9000*000000*0*000000000000000000000000000000*0******000000000
56.loogilav10000*000000*0*000000000000000000000000000000*0******000000000
57.loogilav11000*000000*0*000000000000000000000000000000*0******000000000
58.plokk1000*000000*0*0000000000*00000**0********0***0************0*0
59.whiletingimus000*000000*0*00000000000000000000000000000**0************000
60.loop1000*000000*0*0000000000*000000*0********0***0************0*0

Leftmost & rightmost sets

`programm' leftmost set: `#' , `programm12'
`programm' rightmost set: #

`programm12' leftmost set: `#'
`programm12' rightmost set: #i# , #c# , ) , END , operaatorid , operaator , label , omistamine , iflause , suunamine , lugemine , kirjutamine , plokk , loop , omistamine1 , loogilav , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5 , loogilav6 , loogilav7 , loogilav8 , loogilav9 , loogilav10 , loogilav11 , whiletingimus

`operaatorid' leftmost set: `#i#' , `GOTO' , `IF' , `READ' , `WRITE' , `BEGIN' , `DO' , `WHILE' , `operaator' , `operaatorid13' , `label' , `omistamine' , `iflause' , `suunamine' , `lugemine' , `kirjutamine' , `plokk' , `loop' , `muutuja' , `tingimus' , `plokk1' , `whiletingimus' , `loop1'
`operaatorid' rightmost set: #i# , #c# , ) , END , operaatorid , operaator , label , omistamine , iflause , suunamine , lugemine , kirjutamine , plokk , loop , omistamine1 , loogilav , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5 , loogilav6 , loogilav7 , loogilav8 , loogilav9 , loogilav10 , loogilav11 , whiletingimus

`operaator' leftmost set: `#i#' , `GOTO' , `IF' , `READ' , `WRITE' , `BEGIN' , `DO' , `WHILE' , `label' , `omistamine' , `iflause' , `suunamine' , `lugemine' , `kirjutamine' , `plokk' , `loop' , `muutuja' , `tingimus' , `plokk1' , `whiletingimus' , `loop1'
`operaator' rightmost set: #i# , #c# , ) , END , operaator , label , omistamine , iflause , suunamine , lugemine , kirjutamine , plokk , loop , omistamine1 , loogilav , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5 , loogilav6 , loogilav7 , loogilav8 , loogilav9 , loogilav10 , loogilav11 , whiletingimus

`operaatorid13' leftmost set: `#i#' , `GOTO' , `IF' , `READ' , `WRITE' , `BEGIN' , `DO' , `WHILE' , `operaator' , `label' , `omistamine' , `iflause' , `suunamine' , `lugemine' , `kirjutamine' , `plokk' , `loop' , `muutuja' , `tingimus' , `plokk1' , `whiletingimus' , `loop1'
`operaatorid13' rightmost set: #i# , #c# , ) , END , operaator , label , omistamine , iflause , suunamine , lugemine , kirjutamine , plokk , loop , omistamine1 , loogilav , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5 , loogilav6 , loogilav7 , loogilav8 , loogilav9 , loogilav10 , loogilav11 , whiletingimus

`label' leftmost set: `#i#'
`label' rightmost set: #i#

`omistamine' leftmost set: `#i#' , `muutuja'
`omistamine' rightmost set: #i# , #c# , ) , omistamine1 , loogilav , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5 , loogilav6 , loogilav7 , loogilav8 , loogilav9 , loogilav10 , loogilav11

`iflause' leftmost set: `IF' , `tingimus'
`iflause' rightmost set: #i# , #c# , ) , END , operaator , label , omistamine , iflause , suunamine , lugemine , kirjutamine , plokk , loop , omistamine1 , loogilav , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5 , loogilav6 , loogilav7 , loogilav8 , loogilav9 , loogilav10 , loogilav11 , whiletingimus

`suunamine' leftmost set: `GOTO'
`suunamine' rightmost set: #i# , label

`lugemine' leftmost set: `READ'
`lugemine' rightmost set: #i#

`kirjutamine' leftmost set: `WRITE'
`kirjutamine' rightmost set: #i#

`plokk' leftmost set: `BEGIN' , `plokk1'
`plokk' rightmost set: END

`loop' leftmost set: `DO' , `WHILE' , `whiletingimus' , `loop1'
`loop' rightmost set: #i# , #c# , ) , END , operaator , label , omistamine , iflause , suunamine , lugemine , kirjutamine , plokk , loop , omistamine1 , loogilav , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5 , loogilav6 , loogilav7 , loogilav8 , loogilav9 , loogilav10 , loogilav11 , whiletingimus

`muutuja' leftmost set: `#i#'
`muutuja' rightmost set: #i#

`omistamine1' leftmost set: `#i#' , `#c#' , `(' , `aritmav' , `yksliige' , `tegur'
`omistamine1' rightmost set: #i# , #c# , ) , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5

`loogilav' leftmost set: `#i#' , `#c#' , `(' , `aritmav' , `yksliige' , `tegur'
`loogilav' rightmost set: #i# , #c# , ) , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5 , loogilav6 , loogilav7 , loogilav8 , loogilav9 , loogilav10 , loogilav11

`aritmav' leftmost set: `#i#' , `#c#' , `(' , `aritmav' , `yksliige' , `tegur'
`aritmav' rightmost set: #i# , #c# , ) , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5

`tingimus' leftmost set: `IF'
`tingimus' rightmost set: THEN

`yksliige' leftmost set: `#i#' , `#c#' , `(' , `yksliige' , `tegur'
`yksliige' rightmost set: #i# , #c# , ) , tegur , yksliige4 , tegur5

`aritmav2' leftmost set: `#i#' , `#c#' , `(' , `yksliige' , `tegur'
`aritmav2' rightmost set: #i# , #c# , ) , yksliige , tegur , yksliige4 , tegur5

`aritmav3' leftmost set: `#i#' , `#c#' , `(' , `yksliige' , `tegur'
`aritmav3' rightmost set: #i# , #c# , ) , yksliige , tegur , yksliige4 , tegur5

`tegur' leftmost set: `#i#' , `#c#' , `('
`tegur' rightmost set: #i# , #c# , ) , tegur5

`yksliige4' leftmost set: `#i#' , `#c#' , `(' , `tegur'
`yksliige4' rightmost set: #i# , #c# , ) , tegur , tegur5

`tegur5' leftmost set: `#i#' , `#c#' , `(' , `aritmav' , `yksliige' , `tegur'
`tegur5' rightmost set: )

`loogilav6' leftmost set: `#i#' , `#c#' , `(' , `aritmav' , `yksliige' , `tegur'
`loogilav6' rightmost set: #i# , #c# , ) , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5

`loogilav7' leftmost set: `#i#' , `#c#' , `(' , `aritmav' , `yksliige' , `tegur'
`loogilav7' rightmost set: #i# , #c# , ) , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5

`loogilav8' leftmost set: `#i#' , `#c#' , `(' , `aritmav' , `yksliige' , `tegur'
`loogilav8' rightmost set: #i# , #c# , ) , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5

`loogilav9' leftmost set: `#i#' , `#c#' , `(' , `aritmav' , `yksliige' , `tegur'
`loogilav9' rightmost set: #i# , #c# , ) , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5

`loogilav10' leftmost set: `#i#' , `#c#' , `(' , `aritmav' , `yksliige' , `tegur'
`loogilav10' rightmost set: #i# , #c# , ) , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5

`loogilav11' leftmost set: `#i#' , `#c#' , `(' , `aritmav' , `yksliige' , `tegur'
`loogilav11' rightmost set: #i# , #c# , ) , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5

`plokk1' leftmost set: `BEGIN'
`plokk1' rightmost set: #i# , #c# , ) , END , operaatorid , operaator , label , omistamine , iflause , suunamine , lugemine , kirjutamine , plokk , loop , omistamine1 , loogilav , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5 , loogilav6 , loogilav7 , loogilav8 , loogilav9 , loogilav10 , loogilav11 , whiletingimus

`whiletingimus' leftmost set: `WHILE'
`whiletingimus' rightmost set: #i# , #c# , ) , loogilav , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5 , loogilav6 , loogilav7 , loogilav8 , loogilav9 , loogilav10 , loogilav11

`loop1' leftmost set: `DO'
`loop1' rightmost set: #i# , #c# , ) , END , operaator , label , omistamine , iflause , suunamine , lugemine , kirjutamine , plokk , loop , omistamine1 , loogilav , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5 , loogilav6 , loogilav7 , loogilav8 , loogilav9 , loogilav10 , loogilav11 , whiletingimus


Precedence matrix

Symbol123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
1.#000<0<0000000000000<0<<0<<<00=<<<<<<<<<<<000<000000000000<<<
2.;000<0<0000000000000<0<<0<<<00=<<<<<<<<<<<000<000000000000<<<
3.:000<0<0000000000000<0<<0<<<000=0<<<<<<<<<000<000000000000<<<
4.#i#>>>0>0>>>>00>>>>>>>0>00>0>>0000000000000000000000000000000>0
5.:=000<000000<<00000000000000000000000000000==<0<00<00000000000
6.GOTO000<0000000000000000000000000000=000000000000000000000000000
7.+000<000000<<000000000000000000000000000000000<=0<00000000000
8.-000<000000<<000000000000000000000000000000000<0=<00000000000
9.*000<000000<<000000000000000000000000000000000000<=0000000000
10./000<000000<<000000000000000000000000000000000000=00000000000
11.#c#>>0000>>>>00>>>>>>>0>00>0>>0000000000000000000000000000000>0
12.(000<000000<<0000000000000000000000000000000<0<00<0=000000000
13.)>>0000>>>>00>>>>>>>0>00>0>>0000000000000000000000000000000>0
14.<000<000000<<0000000000000000000000000000000<0<00<00=00000000
15.>000<000000<<0000000000000000000000000000000<0<00<000=0000000
16.<=000<000000<<0000000000000000000000000000000<0<00<0000=000000
17.>=000<000000<<0000000000000000000000000000000<0<00<00000=00000
18./=000<000000<<0000000000000000000000000000000<0<00<000000=0000
19.=000<000000<<0000000000000000000000000000000<0<00<0000000=000
20.IF000<000000<<000000000000000000000000000000=<0<00<00000000000
21.THEN000>0>0000000000000>0>>0>>>000>0>>>>>>>>>000>000000000000>>>
22.READ000=00000000000000000000000000000000000000000000000000000000
23.WRITE000=00000000000000000000000000000000000000000000000000000000
24.END>>000000000000000000000>00>0000000000000000000000000000000>0
25.BEGIN000<0<0000000000000<0<<0<<<00=<<<<<<<<<<<000<000000000000<<<
26.DO000<0<0000000000000<0<<0<<<000=0<<<<<<<<<000<000000000000<<<
27.WHILE000<000000<<000000000000000000000000000000=<0<00<00000000000
28.programm000000000000000000000000000000000000000000000000000000000000
29.programm12=00000000000000000000000000000000000000000000000000000000000
30.operaatorid>0000000000000000000000>000000000000000000000000000000000000
31.operaator>>000000000000000000000>00>0000000000000000000000000000000>0
32.operaatorid130=0000000000000000000000000000000000000000000000000000000000
33.label>>=00000000000000000000>00>0000000000000000000000000000000>0
34.omistamine>>000000000000000000000>00>0000000000000000000000000000000>0
35.iflause>>000000000000000000000>00>0000000000000000000000000000000>0
36.suunamine>>000000000000000000000>00>0000000000000000000000000000000>0
37.lugemine>>000000000000000000000>00>0000000000000000000000000000000>0
38.kirjutamine>>000000000000000000000>00>0000000000000000000000000000000>0
39.plokk>>000000000000000000000>00>0000000000000000000000000000000>0
40.loop>>000000000000000000000>00>0000000000000000000000000000000>0
41.muutuja0000=0000000000000000000000000000000000000000000000000000000
42.omistamine1>>000000000000000000000>00>0000000000000000000000000000000>0
43.loogilav>>000000000000000000=00>0>>0000000000000000000000000000000>0
44.aritmav>>0000==0000=======0>00>0>>0000000000000000000000000000000>0
45.tingimus000<0<0000000000000<0<<0<<<000=0<<<<<<<<<000<000000000000<<<
46.yksliige>>0000>>==00>>>>>>>0>00>0>>0000000000000000000000000000000>0
47.aritmav2>>0000>>0000>>>>>>>0>00>0>>0000000000000000000000000000000>0
48.aritmav3>>0000>>0000>>>>>>>0>00>0>>0000000000000000000000000000000>0
49.tegur>>0000>>>>00>>>>>>>0>00>0>>0000000000000000000000000000000>0
50.yksliige4>>0000>>>>00>>>>>>>0>00>0>>0000000000000000000000000000000>0
51.tegur5>>0000>>>>00>>>>>>>0>00>0>>0000000000000000000000000000000>0
52.loogilav6>>000000000000000000>00>0>>0000000000000000000000000000000>0
53.loogilav7>>000000000000000000>00>0>>0000000000000000000000000000000>0
54.loogilav8>>000000000000000000>00>0>>0000000000000000000000000000000>0
55.loogilav9>>000000000000000000>00>0>>0000000000000000000000000000000>0
56.loogilav10>>000000000000000000>00>0>>0000000000000000000000000000000>0
57.loogilav11>>000000000000000000>00>0>>0000000000000000000000000000000>0
58.plokk100000000000000000000000=000000000000000000000000000000000000
59.whiletingimus>>000000000000000000000>0=>0000000000000000000000000000000>0
60.loop100000000000000000000000000<0000000000000000000000000000000=0

The relationships of symbol #1 #:
<• #i#<• GOTO<• IF<• READ<• WRITE<• BEGIN<• DO<• WHILE=• `operaatorid'<• `operaator'<• `operaatorid13'<• `label'<• `omistamine'<• `iflause'<• `suunamine'<• `lugemine'<• `kirjutamine'<• `plokk'<• `loop'<• `muutuja'<• `tingimus'<• `plokk1'<• `whiletingimus'<• `loop1'

The relationships of symbol #2 ;:
<• #i#<• GOTO<• IF<• READ<• WRITE<• BEGIN<• DO<• WHILE=• `operaatorid'<• `operaator'<• `operaatorid13'<• `label'<• `omistamine'<• `iflause'<• `suunamine'<• `lugemine'<• `kirjutamine'<• `plokk'<• `loop'<• `muutuja'<• `tingimus'<• `plokk1'<• `whiletingimus'<• `loop1'

The relationships of symbol #3 ::
<• #i#<• GOTO<• IF<• READ<• WRITE<• BEGIN<• DO<• WHILE=• `operaator'<• `label'<• `omistamine'<• `iflause'<• `suunamine'<• `lugemine'<• `kirjutamine'<• `plokk'<• `loop'<• `muutuja'<• `tingimus'<• `plokk1'<• `whiletingimus'<• `loop1'

The relationships of symbol #4 #i#:
•> #•> ;•> :•> :=•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN•> END•> DO•> WHILE•> `whiletingimus'

The relationships of symbol #5 :=:
<• #i#<• #c#<• (=• `omistamine1'=• `loogilav'<• `aritmav'<• `yksliige'<• `tegur'

The relationships of symbol #6 GOTO:
<• #i#=• `label'

The relationships of symbol #7 +:
<• #i#<• #c#<• (<• `yksliige'=• `aritmav2'<• `tegur'

The relationships of symbol #8 -:
<• #i#<• #c#<• (<• `yksliige'=• `aritmav3'<• `tegur'

The relationships of symbol #9 *:
<• #i#<• #c#<• (<• `tegur'=• `yksliige4'

The relationships of symbol #10 /:
<• #i#<• #c#<• (=• `tegur'

The relationships of symbol #11 #c#:
•> #•> ;•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN•> END•> DO•> WHILE•> `whiletingimus'

The relationships of symbol #12 (:
<• #i#<• #c#<• (<• `aritmav'<• `yksliige'<• `tegur'=• `tegur5'

The relationships of symbol #13 ):
•> #•> ;•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN•> END•> DO•> WHILE•> `whiletingimus'

The relationships of symbol #14 <:
<• #i#<• #c#<• (<• `aritmav'<• `yksliige'<• `tegur'=• `loogilav6'

The relationships of symbol #15 >:
<• #i#<• #c#<• (<• `aritmav'<• `yksliige'<• `tegur'=• `loogilav7'

The relationships of symbol #16 <=:
<• #i#<• #c#<• (<• `aritmav'<• `yksliige'<• `tegur'=• `loogilav8'

The relationships of symbol #17 >=:
<• #i#<• #c#<• (<• `aritmav'<• `yksliige'<• `tegur'=• `loogilav9'

The relationships of symbol #18 /=:
<• #i#<• #c#<• (<• `aritmav'<• `yksliige'<• `tegur'=• `loogilav10'

The relationships of symbol #19 =:
<• #i#<• #c#<• (<• `aritmav'<• `yksliige'<• `tegur'=• `loogilav11'

The relationships of symbol #20 IF:
<• #i#<• #c#<• (=• `loogilav'<• `aritmav'<• `yksliige'<• `tegur'

The relationships of symbol #21 THEN:
•> #i#•> GOTO•> IF•> READ•> WRITE•> BEGIN•> DO•> WHILE•> `operaator'•> `label'•> `omistamine'•> `iflause'•> `suunamine'•> `lugemine'•> `kirjutamine'•> `plokk'•> `loop'•> `muutuja'•> `tingimus'•> `plokk1'•> `whiletingimus'•> `loop1'

The relationships of symbol #22 READ:
=• #i#

The relationships of symbol #23 WRITE:
=• #i#

The relationships of symbol #24 END:
•> #•> ;•> END•> WHILE•> `whiletingimus'

The relationships of symbol #25 BEGIN:
<• #i#<• GOTO<• IF<• READ<• WRITE<• BEGIN<• DO<• WHILE=• `operaatorid'<• `operaator'<• `operaatorid13'<• `label'<• `omistamine'<• `iflause'<• `suunamine'<• `lugemine'<• `kirjutamine'<• `plokk'<• `loop'<• `muutuja'<• `tingimus'<• `plokk1'<• `whiletingimus'<• `loop1'

The relationships of symbol #26 DO:
<• #i#<• GOTO<• IF<• READ<• WRITE<• BEGIN<• DO<• WHILE=• `operaator'<• `label'<• `omistamine'<• `iflause'<• `suunamine'<• `lugemine'<• `kirjutamine'<• `plokk'<• `loop'<• `muutuja'<• `tingimus'<• `plokk1'<• `whiletingimus'<• `loop1'

The relationships of symbol #27 WHILE:
<• #i#<• #c#<• (=• `loogilav'<• `aritmav'<• `yksliige'<• `tegur'

The relationships of symbol #28 `programm':

The relationships of symbol #29 `programm12':
=• #

The relationships of symbol #30 `operaatorid':
•> #•> END

The relationships of symbol #31 `operaator':
•> #•> ;•> END•> WHILE•> `whiletingimus'

The relationships of symbol #32 `operaatorid13':
=• ;

The relationships of symbol #33 `label':
•> #•> ;=• :•> END•> WHILE•> `whiletingimus'

The relationships of symbol #34 `omistamine':
•> #•> ;•> END•> WHILE•> `whiletingimus'

The relationships of symbol #35 `iflause':
•> #•> ;•> END•> WHILE•> `whiletingimus'

The relationships of symbol #36 `suunamine':
•> #•> ;•> END•> WHILE•> `whiletingimus'

The relationships of symbol #37 `lugemine':
•> #•> ;•> END•> WHILE•> `whiletingimus'

The relationships of symbol #38 `kirjutamine':
•> #•> ;•> END•> WHILE•> `whiletingimus'

The relationships of symbol #39 `plokk':
•> #•> ;•> END•> WHILE•> `whiletingimus'

The relationships of symbol #40 `loop':
•> #•> ;•> END•> WHILE•> `whiletingimus'

The relationships of symbol #41 `muutuja':
=• :=

The relationships of symbol #42 `omistamine1':
•> #•> ;•> END•> WHILE•> `whiletingimus'

The relationships of symbol #43 `loogilav':
•> #•> ;=• THEN•> END•> DO•> WHILE•> `whiletingimus'

The relationships of symbol #44 `aritmav':
•> #•> ;=• +=• -=• )=• <=• >=• <==• >==• /==• =•> THEN•> END•> DO•> WHILE•> `whiletingimus'

The relationships of symbol #45 `tingimus':
<• #i#<• GOTO<• IF<• READ<• WRITE<• BEGIN<• DO<• WHILE=• `operaator'<• `label'<• `omistamine'<• `iflause'<• `suunamine'<• `lugemine'<• `kirjutamine'<• `plokk'<• `loop'<• `muutuja'<• `tingimus'<• `plokk1'<• `whiletingimus'<• `loop1'

The relationships of symbol #46 `yksliige':
•> #•> ;•> +•> -=• *=• /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN•> END•> DO•> WHILE•> `whiletingimus'

The relationships of symbol #47 `aritmav2':
•> #•> ;•> +•> -•> )•> <•> >•> <=•> >=•> /=•> =•> THEN•> END•> DO•> WHILE•> `whiletingimus'

The relationships of symbol #48 `aritmav3':
•> #•> ;•> +•> -•> )•> <•> >•> <=•> >=•> /=•> =•> THEN•> END•> DO•> WHILE•> `whiletingimus'

The relationships of symbol #49 `tegur':
•> #•> ;•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN•> END•> DO•> WHILE•> `whiletingimus'

The relationships of symbol #50 `yksliige4':
•> #•> ;•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN•> END•> DO•> WHILE•> `whiletingimus'

The relationships of symbol #51 `tegur5':
•> #•> ;•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN•> END•> DO•> WHILE•> `whiletingimus'

The relationships of symbol #52 `loogilav6':
•> #•> ;•> THEN•> END•> DO•> WHILE•> `whiletingimus'

The relationships of symbol #53 `loogilav7':
•> #•> ;•> THEN•> END•> DO•> WHILE•> `whiletingimus'

The relationships of symbol #54 `loogilav8':
•> #•> ;•> THEN•> END•> DO•> WHILE•> `whiletingimus'

The relationships of symbol #55 `loogilav9':
•> #•> ;•> THEN•> END•> DO•> WHILE•> `whiletingimus'

The relationships of symbol #56 `loogilav10':
•> #•> ;•> THEN•> END•> DO•> WHILE•> `whiletingimus'

The relationships of symbol #57 `loogilav11':
•> #•> ;•> THEN•> END•> DO•> WHILE•> `whiletingimus'

The relationships of symbol #58 `plokk1':
=• END

The relationships of symbol #59 `whiletingimus':
•> #•> ;•> END=• DO•> WHILE•> `whiletingimus'

The relationships of symbol #60 `loop1':
<• WHILE=• `whiletingimus'


Grammar TRIM.grm is a precedence grammar

Grammar TRIM.grm is not invertible


Left Context


Symbol123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
28.programm000000000000000000000000000000000000000000000000000000000000
29.programm12000000000000000000000000000000000000000000000000000000000000
30.operaatorid**0000000000000000000000*00000000000000000000000000000000000
31.operaator***000000000000000000000**000000000000000000*000000000000000
32.operaatorid13**0000000000000000000000*00000000000000000000000000000000000
33.label***00*000000000000000000**000000000000000000*000000000000000
34.omistamine***000000000000000000000**000000000000000000*000000000000000
35.iflause***000000000000000000000**000000000000000000*000000000000000
36.suunamine***000000000000000000000**000000000000000000*000000000000000
37.lugemine***000000000000000000000**000000000000000000*000000000000000
38.kirjutamine***000000000000000000000**000000000000000000*000000000000000
39.plokk***000000000000000000000**000000000000000000*000000000000000
40.loop***000000000000000000000**000000000000000000*000000000000000
41.muutuja***000000000000000000000**000000000000000000*000000000000000
42.omistamine10000*0000000000000000000000000000000000000000000000000000000
43.loogilav0000*00000000000000*000000*000000000000000000000000000000000
44.aritmav0000*000000*0*******000000*000000000000000000000000000000000
45.tingimus***000000000000000000000**000000000000000000*000000000000000
46.yksliige0000*0**000*0*******000000*000000000000000000000000000000000
47.aritmav2000000*00000000000000000000000000000000000000000000000000000
48.aritmav30000000*0000000000000000000000000000000000000000000000000000
49.tegur0000*0****0*0*******000000*000000000000000000000000000000000
50.yksliige400000000*000000000000000000000000000000000000000000000000000
51.tegur500000000000*000000000000000000000000000000000000000000000000
52.loogilav60000000000000*0000000000000000000000000000000000000000000000
53.loogilav700000000000000*000000000000000000000000000000000000000000000
54.loogilav8000000000000000*00000000000000000000000000000000000000000000
55.loogilav90000000000000000*0000000000000000000000000000000000000000000
56.loogilav1000000000000000000*000000000000000000000000000000000000000000
57.loogilav11000000000000000000*00000000000000000000000000000000000000000
58.plokk1***000000000000000000000**000000000000000000*000000000000000
59.whiletingimus***000000000000000000000**000000000000000000*00000000000000*
60.loop1***000000000000000000000**000000000000000000*000000000000000

Right Context


Symbol123456789101112131415161718192021222324252627
28.programm000000000000000000000000000
29.programm12*00000000000000000000000000
30.operaatorid*0000000000000000000000*000
31.operaator**000000000000000000000*00*
32.operaatorid130*0000000000000000000000000
33.label***00000000000000000000*00*
34.omistamine**000000000000000000000*00*
35.iflause**000000000000000000000*00*
36.suunamine**000000000000000000000*00*
37.lugemine**000000000000000000000*00*
38.kirjutamine**000000000000000000000*00*
39.plokk**000000000000000000000*00*
40.loop**000000000000000000000*00*
41.muutuja0000*0000000000000000000000
42.omistamine1**000000000000000000000*00*
43.loogilav**000000000000000000*00*0**
44.aritmav**0000**0000*******0*00*0**
45.tingimus000*0*0000000000000*0**0***
46.yksliige**0000****00*******0*00*0**
47.aritmav2**0000**0000*******0*00*0**
48.aritmav3**0000**0000*******0*00*0**
49.tegur**0000****00*******0*00*0**
50.yksliige4**0000****00*******0*00*0**
51.tegur5**0000****00*******0*00*0**
52.loogilav6**000000000000000000*00*0**
53.loogilav7**000000000000000000*00*0**
54.loogilav8**000000000000000000*00*0**
55.loogilav9**000000000000000000*00*0**
56.loogilav10**000000000000000000*00*0**
57.loogilav11**000000000000000000*00*0**
58.plokk100000000000000000000000*000
59.whiletingimus**000000000000000000000*0**
60.loop100000000000000000000000000*


Independent context

`programm' left context:
`programm' right context:

`programm12' left context:
`programm12' right context: #

`operaatorid' left context: # , ; , BEGIN
`operaatorid' right context: # , END

`operaator' left context: # , ; , : , BEGIN , DO , `tingimus'
`operaator' right context: # , ; , END , WHILE

`operaatorid13' left context: # , ; , BEGIN
`operaatorid13' right context: ;

`label' left context: # , ; , : , GOTO , BEGIN , DO , `tingimus'
`label' right context: # , ; , : , END , WHILE

`omistamine' left context: # , ; , : , BEGIN , DO , `tingimus'
`omistamine' right context: # , ; , END , WHILE

`iflause' left context: # , ; , : , BEGIN , DO , `tingimus'
`iflause' right context: # , ; , END , WHILE

`suunamine' left context: # , ; , : , BEGIN , DO , `tingimus'
`suunamine' right context: # , ; , END , WHILE

`lugemine' left context: # , ; , : , BEGIN , DO , `tingimus'
`lugemine' right context: # , ; , END , WHILE

`kirjutamine' left context: # , ; , : , BEGIN , DO , `tingimus'
`kirjutamine' right context: # , ; , END , WHILE

`plokk' left context: # , ; , : , BEGIN , DO , `tingimus'
`plokk' right context: # , ; , END , WHILE

`loop' left context: # , ; , : , BEGIN , DO , `tingimus'
`loop' right context: # , ; , END , WHILE

`muutuja' left context: # , ; , : , BEGIN , DO , `tingimus'
`muutuja' right context: :=

`omistamine1' left context: :=
`omistamine1' right context: # , ; , END , WHILE

`loogilav' left context: := , IF , WHILE
`loogilav' right context: # , ; , THEN , END , DO , WHILE

`aritmav' left context: := , ( , < , > , <= , >= , /= , = , IF , WHILE
`aritmav' right context: # , ; , + , - , ) , < , > , <= , >= , /= , = , THEN , END , DO , WHILE

`tingimus' left context: # , ; , : , BEGIN , DO , `tingimus'
`tingimus' right context: #i# , GOTO , IF , READ , WRITE , BEGIN , DO , WHILE

`yksliige' left context: := , + , - , ( , < , > , <= , >= , /= , = , IF , WHILE
`yksliige' right context: # , ; , + , - , * , / , ) , < , > , <= , >= , /= , = , THEN , END , DO , WHILE

`aritmav2' left context: +
`aritmav2' right context: # , ; , + , - , ) , < , > , <= , >= , /= , = , THEN , END , DO , WHILE

`aritmav3' left context: -
`aritmav3' right context: # , ; , + , - , ) , < , > , <= , >= , /= , = , THEN , END , DO , WHILE

`tegur' left context: := , + , - , * , / , ( , < , > , <= , >= , /= , = , IF , WHILE
`tegur' right context: # , ; , + , - , * , / , ) , < , > , <= , >= , /= , = , THEN , END , DO , WHILE

`yksliige4' left context: *
`yksliige4' right context: # , ; , + , - , * , / , ) , < , > , <= , >= , /= , = , THEN , END , DO , WHILE

`tegur5' left context: (
`tegur5' right context: # , ; , + , - , * , / , ) , < , > , <= , >= , /= , = , THEN , END , DO , WHILE

`loogilav6' left context: <
`loogilav6' right context: # , ; , THEN , END , DO , WHILE

`loogilav7' left context: >
`loogilav7' right context: # , ; , THEN , END , DO , WHILE

`loogilav8' left context: <=
`loogilav8' right context: # , ; , THEN , END , DO , WHILE

`loogilav9' left context: >=
`loogilav9' right context: # , ; , THEN , END , DO , WHILE

`loogilav10' left context: /=
`loogilav10' right context: # , ; , THEN , END , DO , WHILE

`loogilav11' left context: =
`loogilav11' right context: # , ; , THEN , END , DO , WHILE

`plokk1' left context: # , ; , : , BEGIN , DO , `tingimus'
`plokk1' right context: END

`whiletingimus' left context: # , ; , : , BEGIN , DO , `tingimus' , `loop1'
`whiletingimus' right context: # , ; , END , DO , WHILE

`loop1' left context: # , ; , : , BEGIN , DO , `tingimus'
`loop1' right context: WHILE


Equivalent definitions:
`label' —> #i# & `tegur' —> #i# & `muutuja' —> #i#
`label' left context: # , ; , : , GOTO , BEGIN , DO , `tingimus'
`label' right context: # , ; , : , END , WHILE

`tegur' left context: := , + , - , * , / , ( , < , > , <= , >= , /= , = , IF , WHILE
`tegur' right context: # , ; , + , - , * , / , ) , < , > , <= , >= , /= , = , THEN , END , DO , WHILE

`muutuja' left context: # , ; , : , BEGIN , DO , `tingimus'
`muutuja' right context: :=


The left context of `label' and `tegur' is different
The right context of `label' and `muutuja' is different
The left context of `tegur' and `muutuja' is different

Equivalent definitions:
`operaatorid' —> `operaator' & `operaatorid13' —> `operaator'
`operaatorid' left context: # , ; , BEGIN
`operaatorid' right context: # , END

`operaatorid13' left context: # , ; , BEGIN
`operaatorid13' right context: ;


The right context of `operaatorid' and `operaatorid13' is different

Equivalent definitions:
`loogilav6' —> `aritmav' & `omistamine1' —> `aritmav' & `loogilav9' —> `aritmav' & `loogilav8' —> `aritmav' & `loogilav7' —> `aritmav' & `loogilav11' —> `aritmav' & `loogilav10' —> `aritmav'
`loogilav6' left context: <
`loogilav6' right context: # , ; , THEN , END , DO , WHILE

`omistamine1' left context: :=
`omistamine1' right context: # , ; , END , WHILE

`loogilav9' left context: >=
`loogilav9' right context: # , ; , THEN , END , DO , WHILE

`loogilav8' left context: <=
`loogilav8' right context: # , ; , THEN , END , DO , WHILE

`loogilav7' left context: >
`loogilav7' right context: # , ; , THEN , END , DO , WHILE

`loogilav11' left context: =
`loogilav11' right context: # , ; , THEN , END , DO , WHILE

`loogilav10' left context: /=
`loogilav10' right context: # , ; , THEN , END , DO , WHILE


The left context of `loogilav6' and `omistamine1' is different
The left context of `loogilav6' and `loogilav9' is different
The left context of `loogilav6' and `loogilav8' is different
The left context of `loogilav6' and `loogilav7' is different
The left context of `loogilav6' and `loogilav11' is different
The left context of `loogilav6' and `loogilav10' is different
The left context of `omistamine1' and `loogilav9' is different
The left context of `omistamine1' and `loogilav8' is different
The left context of `omistamine1' and `loogilav7' is different
The left context of `omistamine1' and `loogilav11' is different
The left context of `omistamine1' and `loogilav10' is different
The left context of `loogilav9' and `loogilav8' is different
The left context of `loogilav9' and `loogilav7' is different
The left context of `loogilav9' and `loogilav11' is different
The left context of `loogilav9' and `loogilav10' is different
The left context of `loogilav8' and `loogilav7' is different
The left context of `loogilav8' and `loogilav11' is different
The left context of `loogilav8' and `loogilav10' is different
The left context of `loogilav7' and `loogilav11' is different
The left context of `loogilav7' and `loogilav10' is different
The left context of `loogilav11' and `loogilav10' is different

Equivalent definitions:
`aritmav' —> `yksliige' & `aritmav3' —> `yksliige' & `aritmav2' —> `yksliige'
`aritmav' left context: := , ( , < , > , <= , >= , /= , = , IF , WHILE
`aritmav' right context: # , ; , + , - , ) , < , > , <= , >= , /= , = , THEN , END , DO , WHILE

`aritmav3' left context: -
`aritmav3' right context: # , ; , + , - , ) , < , > , <= , >= , /= , = , THEN , END , DO , WHILE

`aritmav2' left context: +
`aritmav2' right context: # , ; , + , - , ) , < , > , <= , >= , /= , = , THEN , END , DO , WHILE


The left context of `aritmav' and `aritmav3' is different
The left context of `aritmav' and `aritmav2' is different
The left context of `aritmav3' and `aritmav2' is different

Equivalent definitions:
`yksliige' —> `tegur' & `yksliige4' —> `tegur'
`yksliige' left context: := , + , - , ( , < , > , <= , >= , /= , = , IF , WHILE
`yksliige' right context: # , ; , + , - , * , / , ) , < , > , <= , >= , /= , = , THEN , END , DO , WHILE

`yksliige4' left context: *
`yksliige4' right context: # , ; , + , - , * , / , ) , < , > , <= , >= , /= , = , THEN , END , DO , WHILE


The left context of `yksliige' and `yksliige4' is different

Grammar TRIM.grm is BRC(1|1)-reducible


Semantics

Semantics file is TRIM.sem
#i#=1
#c#=2
P14=15 $P14: `label' -> #i#
P15=10 $P15: `omistamine' -> `muutuja' := `omistamine1'
P20=16 $P20: `suunamine' -> GOTO `label'
P22=14 $P22: `aritmav' -> `aritmav' + `aritmav2'
P23=13 $P23: `aritmav' -> `aritmav' - `aritmav3'
P27=12 $P27: `yksliige' -> `yksliige' * `yksliige4'
P28=11 $P28: `yksliige' -> `yksliige' / `tegur'
P34=3 $P34: `loogilav' -> `aritmav' < `loogilav6'
P35=4 $P35: `loogilav' -> `aritmav' > `loogilav7'
P36=5 $P36: `loogilav' -> `aritmav' <= `loogilav8'
P37=6 $P37: `loogilav' -> `aritmav' >= `loogilav9'
P38=7 $P38: `loogilav' -> `aritmav' /= `loogilav10'
P39=8 $P39: `loogilav' -> `aritmav' = `loogilav11'
P46=18 $P46: `tingimus' -> IF `loogilav' THEN
P47=20 $P47: `lugemine' -> READ #i#
P48=21 $P48: `kirjutamine' -> WRITE #i#
P49=27 $P49: `plokk' -> `plokk1' END
P51=28 $P51: `loop' -> `whiletingimus' DO `operaator'
P52=28 $P52: `loop' -> `loop1' `whiletingimus'
P54=29 $P54: `whiletingimus' -> WHILE `loogilav'

Result tables


FileSize
TRIM.prm28
TRIM.pm3721
TRIM.t1220
TRIM.tt560
TRIM.ht3148
TRIM.sm332
TRIM.v3396
TRIM.lc3721
TRIM.rc3721

Look at result tables

Finish of CONSTRUCTOR Wed May 03 15:42:53 2006