Start of CONSTRUCTOR for the Grammar TRINEW.grm Sat Apr 03 16:02:32 2004

Terminal alphabet

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


Nonterminal alphabet

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


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' -> `incdec'
P13: `incdec' -> ++ #i#
P14: `incdec' -> #i# ++
P15: `incdec' -> -- #i#
P16: `incdec' -> #i# --
P17: `label' -> #i#
P18: `omistamine' -> `muutuja' := `omistamine1'
P19: `omistamine' -> `muutuja' := `loogilav'
P20: `omistamine1' -> `aritmav'
P21: `muutuja' -> #i#
P22: `iflause' -> `tingimus' `operaator'
P23: `suunamine' -> GOTO `label'
P24: `aritmav' -> `yksliige'
P25: `aritmav' -> `aritmav' + `aritmav2'
P26: `aritmav' -> `aritmav' - `aritmav3'
P27: `aritmav2' -> `yksliige'
P28: `aritmav3' -> `yksliige'
P29: `yksliige' -> `tegur'
P30: `yksliige' -> `yksliige' * `yksliige4'
P31: `yksliige' -> `yksliige' / `tegur'
P32: `yksliige4' -> `tegur'
P33: `tegur' -> #i#
P34: `tegur' -> #c#
P35: `tegur' -> `incdec'
P36: `tegur' -> ( `tegur5'
P37: `tegur5' -> `aritmav' )
P38: `loogilav' -> `aritmav' < `loogilav6'
P39: `loogilav' -> `aritmav' > `loogilav7'
P40: `loogilav' -> `aritmav' <= `loogilav8'
P41: `loogilav' -> `aritmav' >= `loogilav9'
P42: `loogilav' -> `aritmav' /= `loogilav10'
P43: `loogilav' -> `aritmav' = `loogilav11'
P44: `loogilav6' -> `aritmav'
P45: `loogilav7' -> `aritmav'
P46: `loogilav8' -> `aritmav'
P47: `loogilav9' -> `aritmav'
P48: `loogilav10' -> `aritmav'
P49: `loogilav11' -> `aritmav'
P50: `tingimus' -> IF `loogilav' THEN
P51: `lugemine' -> READ #i#
P52: `kirjutamine' -> WRITE #i#
P53: `kirjutamine' -> WRITE `incdec'

Leftmost-set

Symbol123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
26.programm*0000000000000000000000000*000000000000000000000000000
27.programm12*00000000000000000000000000000000000000000000000000000
28.operaatorid000***0*0000000000000*0**000**********000*000000000000
29.operaator000***0*0000000000000*0**00000********000*000000000000
30.operaatorid13000***0*0000000000000*0**000*0********000*000000000000
31.label0000*0000000000000000000000000000000000000000000000000
32.omistamine0000*00000000000000000000000000000000*0000000000000000
33.iflause000000000000000000000*0000000000000000000*000000000000
34.suunamine0000000*0000000000000000000000000000000000000000000000
35.lugemine00000000000000000000000*000000000000000000000000000000
36.kirjutamine000000000000000000000000*00000000000000000000000000000
37.incdec000***000000000000000000000000000000000000000000000000
38.muutuja0000*0000000000000000000000000000000000000000000000000
39.omistamine1000***000000**0000000000000000000000*000*0*00*00000000
40.loogilav000***000000**0000000000000000000000*000*0*00*00000000
41.aritmav000***000000**0000000000000000000000*000*0*00*00000000
42.tingimus000000000000000000000*00000000000000000000000000000000
43.yksliige000***000000**0000000000000000000000*00000*00*00000000
44.aritmav2000***000000**0000000000000000000000*00000*00*00000000
45.aritmav3000***000000**0000000000000000000000*00000*00*00000000
46.tegur000***000000**0000000000000000000000*00000000000000000
47.yksliige4000***000000**0000000000000000000000*00000000*00000000
48.tegur5000***000000**0000000000000000000000*000*0*00*00000000
49.loogilav6000***000000**0000000000000000000000*000*0*00*00000000
50.loogilav7000***000000**0000000000000000000000*000*0*00*00000000
51.loogilav8000***000000**0000000000000000000000*000*0*00*00000000
52.loogilav9000***000000**0000000000000000000000*000*0*00*00000000
53.loogilav10000***000000**0000000000000000000000*000*0*00*00000000
54.loogilav11000***000000**0000000000000000000000*000*0*00*00000000

Rightmost-set

Symbol123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
26.programm*00000000000000000000000000000000000000000000000000000
27.programm12000***000000*0*000000000000**0*******0***0************
28.operaatorid000***000000*0*000000000000**0*******0***0************
29.operaator000***000000*0*0000000000000*0*******0***0************
30.operaatorid13000***000000*0*0000000000000*0*******0***0************
31.label0000*0000000000000000000000000000000000000000000000000
32.omistamine000***000000*0*000000000000000000000*0***0************
33.iflause000***000000*0*0000000000000*0*******0***0************
34.suunamine0000*0000000000000000000000000*00000000000000000000000
35.lugemine0000*0000000000000000000000000000000000000000000000000
36.kirjutamine000***000000000000000000000000000000*00000000000000000
37.incdec000***000000000000000000000000000000000000000000000000
38.muutuja0000*0000000000000000000000000000000000000000000000000
39.omistamine1000***000000*0*000000000000000000000*000*0******000000
40.loogilav000***000000*0*000000000000000000000*000*0************
41.aritmav000***000000*0*000000000000000000000*00000******000000
42.tingimus0000000000000000000000*0000000000000000000000000000000
43.yksliige000***000000*0*000000000000000000000*00000000***000000
44.aritmav2000***000000*0*000000000000000000000*00000*00***000000
45.aritmav3000***000000*0*000000000000000000000*00000*00***000000
46.tegur000***000000*0*000000000000000000000*0000000000*000000
47.yksliige4000***000000*0*000000000000000000000*00000000*0*000000
48.tegur500000000000000*000000000000000000000000000000000000000
49.loogilav6000***000000*0*000000000000000000000*000*0******000000
50.loogilav7000***000000*0*000000000000000000000*000*0******000000
51.loogilav8000***000000*0*000000000000000000000*000*0******000000
52.loogilav9000***000000*0*000000000000000000000*000*0******000000
53.loogilav10000***000000*0*000000000000000000000*000*0******000000
54.loogilav11000***000000*0*000000000000000000000*000*0******000000

Leftmost & rightmost sets

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

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

`operaatorid' leftmost set: `++' , `#i#' , `--' , `GOTO' , `IF' , `READ' , `WRITE' , `operaator' , `operaatorid13' , `label' , `omistamine' , `iflause' , `suunamine' , `lugemine' , `kirjutamine' , `incdec' , `muutuja' , `tingimus'
`operaatorid' rightmost set: ++ , #i# , -- , #c# , ) , operaatorid , operaator , label , omistamine , iflause , suunamine , lugemine , kirjutamine , incdec , omistamine1 , loogilav , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5 , loogilav6 , loogilav7 , loogilav8 , loogilav9 , loogilav10 , loogilav11

`operaator' leftmost set: `++' , `#i#' , `--' , `GOTO' , `IF' , `READ' , `WRITE' , `label' , `omistamine' , `iflause' , `suunamine' , `lugemine' , `kirjutamine' , `incdec' , `muutuja' , `tingimus'
`operaator' rightmost set: ++ , #i# , -- , #c# , ) , operaator , label , omistamine , iflause , suunamine , lugemine , kirjutamine , incdec , omistamine1 , loogilav , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5 , loogilav6 , loogilav7 , loogilav8 , loogilav9 , loogilav10 , loogilav11

`operaatorid13' leftmost set: `++' , `#i#' , `--' , `GOTO' , `IF' , `READ' , `WRITE' , `operaator' , `label' , `omistamine' , `iflause' , `suunamine' , `lugemine' , `kirjutamine' , `incdec' , `muutuja' , `tingimus'
`operaatorid13' rightmost set: ++ , #i# , -- , #c# , ) , operaator , label , omistamine , iflause , suunamine , lugemine , kirjutamine , incdec , omistamine1 , loogilav , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5 , loogilav6 , loogilav7 , loogilav8 , loogilav9 , loogilav10 , loogilav11

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

`omistamine' leftmost set: `#i#' , `muutuja'
`omistamine' rightmost set: ++ , #i# , -- , #c# , ) , incdec , 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# , ) , operaator , label , omistamine , iflause , suunamine , lugemine , kirjutamine , incdec , omistamine1 , loogilav , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5 , loogilav6 , loogilav7 , loogilav8 , loogilav9 , loogilav10 , loogilav11

`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# , -- , incdec

`incdec' leftmost set: `++' , `#i#' , `--'
`incdec' rightmost set: ++ , #i# , --

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Precedence matrix

Symbol123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
1.#000<<<0<0000000000000<0<<00=<<<<<<<<<<000<000000000000
2.;000<<<0<0000000000000<0<<00=<<<<<<<<<<000<000000000000
3.:000<<<0<0000000000000<0<<000=0<<<<<<<<000<000000000000
4.++>>00=000>>>>00>>>>>>>0>0000000000000000000000000000000
5.#i#>>>=0=>0>>>>00>>>>>>>0>0000000000000000000000000000000
6.-->>00=000>>>>00>>>>>>>0>0000000000000000000000000000000
7.:=000<<<000000<<0000000000000000000000<0==<0<00<00000000
8.GOTO0000<0000000000000000000000000=00000000000000000000000
9.+000<<<000000<<0000000000000000000000<00000<=0<00000000
10.-000<<<000000<<0000000000000000000000<00000<0=<00000000
11.*000<<<000000<<0000000000000000000000<00000000<=0000000
12./000<<<000000<<0000000000000000000000<00000000=00000000
13.#c#>>000000>>>>00>>>>>>>0>0000000000000000000000000000000
14.(000<<<000000<<0000000000000000000000<000<0<00<0=000000
15.)>>000000>>>>00>>>>>>>0>0000000000000000000000000000000
16.<000<<<000000<<0000000000000000000000<000<0<00<00=00000
17.>000<<<000000<<0000000000000000000000<000<0<00<000=0000
18.<=000<<<000000<<0000000000000000000000<000<0<00<0000=000
19.>=000<<<000000<<0000000000000000000000<000<0<00<00000=00
20./=000<<<000000<<0000000000000000000000<000<0<00<000000=0
21.=000<<<000000<<0000000000000000000000<000<0<00<0000000=
22.IF000<<<000000<<0000000000000000000000<00=<0<00<00000000
23.THEN000>>>0>0000000000000>0>>000>0>>>>>>>>000>000000000000
24.READ0000=0000000000000000000000000000000000000000000000000
25.WRITE000< 3<000000000000000000000000000000=00000000000000000
26.programm000000000000000000000000000000000000000000000000000000
27.programm12=00000000000000000000000000000000000000000000000000000
28.operaatorid>00000000000000000000000000000000000000000000000000000
29.operaator>>0000000000000000000000000000000000000000000000000000
30.operaatorid130=0000000000000000000000000000000000000000000000000000
31.label>>=000000000000000000000000000000000000000000000000000
32.omistamine>>0000000000000000000000000000000000000000000000000000
33.iflause>>0000000000000000000000000000000000000000000000000000
34.suunamine>>0000000000000000000000000000000000000000000000000000
35.lugemine>>0000000000000000000000000000000000000000000000000000
36.kirjutamine>>0000000000000000000000000000000000000000000000000000
37.incdec>>000000>>>>00>>>>>>>0>0000000000000000000000000000000
38.muutuja000000=00000000000000000000000000000000000000000000000
39.omistamine1>>0000000000000000000000000000000000000000000000000000
40.loogilav>>00000000000000000000=0000000000000000000000000000000
41.aritmav>>000000==0000=======0>0000000000000000000000000000000
42.tingimus000<<<0<0000000000000<0<<000=0<<<<<<<<000<000000000000
43.yksliige>>000000>>==00>>>>>>>0>0000000000000000000000000000000
44.aritmav2>>000000>>0000>>>>>>>0>0000000000000000000000000000000
45.aritmav3>>000000>>0000>>>>>>>0>0000000000000000000000000000000
46.tegur>>000000>>>>00>>>>>>>0>0000000000000000000000000000000
47.yksliige4>>000000>>>>00>>>>>>>0>0000000000000000000000000000000
48.tegur5>>000000>>>>00>>>>>>>0>0000000000000000000000000000000
49.loogilav6>>00000000000000000000>0000000000000000000000000000000
50.loogilav7>>00000000000000000000>0000000000000000000000000000000
51.loogilav8>>00000000000000000000>0000000000000000000000000000000
52.loogilav9>>00000000000000000000>0000000000000000000000000000000
53.loogilav10>>00000000000000000000>0000000000000000000000000000000
54.loogilav11>>00000000000000000000>0000000000000000000000000000000

The relationships of symbol #1 #:
<• ++<• #i#<• --<• GOTO<• IF<• READ<• WRITE=• `operaatorid'<• `operaator'<• `operaatorid13'<• `label'<• `omistamine'<• `iflause'<• `suunamine'<• `lugemine'<• `kirjutamine'<• `incdec'<• `muutuja'<• `tingimus'

The relationships of symbol #2 ;:
<• ++<• #i#<• --<• GOTO<• IF<• READ<• WRITE=• `operaatorid'<• `operaator'<• `operaatorid13'<• `label'<• `omistamine'<• `iflause'<• `suunamine'<• `lugemine'<• `kirjutamine'<• `incdec'<• `muutuja'<• `tingimus'

The relationships of symbol #3 ::
<• ++<• #i#<• --<• GOTO<• IF<• READ<• WRITE=• `operaator'<• `label'<• `omistamine'<• `iflause'<• `suunamine'<• `lugemine'<• `kirjutamine'<• `incdec'<• `muutuja'<• `tingimus'

The relationships of symbol #4 ++:
•> #•> ;=• #i#•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #5 #i#:
•> #•> ;•> :=• ++=• --•> :=•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #6 --:
•> #•> ;=• #i#•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #7 :=:
<• ++<• #i#<• --<• #c#<• (<• `incdec'=• `omistamine1'=• `loogilav'<• `aritmav'<• `yksliige'<• `tegur'

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

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

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

The relationships of symbol #11 *:
<• ++<• #i#<• --<• #c#<• (<• `incdec'<• `tegur'=• `yksliige4'

The relationships of symbol #12 /:
<• ++<• #i#<• --<• #c#<• (<• `incdec'=• `tegur'

The relationships of symbol #13 #c#:
•> #•> ;•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #14 (:
<• ++<• #i#<• --<• #c#<• (<• `incdec'<• `aritmav'<• `yksliige'<• `tegur'=• `tegur5'

The relationships of symbol #15 ):
•> #•> ;•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #16 <:
<• ++<• #i#<• --<• #c#<• (<• `incdec'<• `aritmav'<• `yksliige'<• `tegur'=• `loogilav6'

The relationships of symbol #17 >:
<• ++<• #i#<• --<• #c#<• (<• `incdec'<• `aritmav'<• `yksliige'<• `tegur'=• `loogilav7'

The relationships of symbol #18 <=:
<• ++<• #i#<• --<• #c#<• (<• `incdec'<• `aritmav'<• `yksliige'<• `tegur'=• `loogilav8'

The relationships of symbol #19 >=:
<• ++<• #i#<• --<• #c#<• (<• `incdec'<• `aritmav'<• `yksliige'<• `tegur'=• `loogilav9'

The relationships of symbol #20 /=:
<• ++<• #i#<• --<• #c#<• (<• `incdec'<• `aritmav'<• `yksliige'<• `tegur'=• `loogilav10'

The relationships of symbol #21 =:
<• ++<• #i#<• --<• #c#<• (<• `incdec'<• `aritmav'<• `yksliige'<• `tegur'=• `loogilav11'

The relationships of symbol #22 IF:
<• ++<• #i#<• --<• #c#<• (<• `incdec'=• `loogilav'<• `aritmav'<• `yksliige'<• `tegur'

The relationships of symbol #23 THEN:
•> ++•> #i#•> --•> GOTO•> IF•> READ•> WRITE•> `operaator'•> `label'•> `omistamine'•> `iflause'•> `suunamine'•> `lugemine'•> `kirjutamine'•> `incdec'•> `muutuja'•> `tingimus'

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

The relationships of symbol #25 WRITE:
<• ++<•=• #i#<• --=• `incdec'

The relationships of symbol #26 `programm':

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

The relationships of symbol #28 `operaatorid':
•> #

The relationships of symbol #29 `operaator':
•> #•> ;

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

The relationships of symbol #31 `label':
•> #•> ;=• :

The relationships of symbol #32 `omistamine':
•> #•> ;

The relationships of symbol #33 `iflause':
•> #•> ;

The relationships of symbol #34 `suunamine':
•> #•> ;

The relationships of symbol #35 `lugemine':
•> #•> ;

The relationships of symbol #36 `kirjutamine':
•> #•> ;

The relationships of symbol #37 `incdec':
•> #•> ;•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

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

The relationships of symbol #39 `omistamine1':
•> #•> ;

The relationships of symbol #40 `loogilav':
•> #•> ;=• THEN

The relationships of symbol #41 `aritmav':
•> #•> ;=• +=• -=• )=• <=• >=• <==• >==• /==• =•> THEN

The relationships of symbol #42 `tingimus':
<• ++<• #i#<• --<• GOTO<• IF<• READ<• WRITE=• `operaator'<• `label'<• `omistamine'<• `iflause'<• `suunamine'<• `lugemine'<• `kirjutamine'<• `incdec'<• `muutuja'<• `tingimus'

The relationships of symbol #43 `yksliige':
•> #•> ;•> +•> -=• *=• /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #44 `aritmav2':
•> #•> ;•> +•> -•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #45 `aritmav3':
•> #•> ;•> +•> -•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #46 `tegur':
•> #•> ;•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #47 `yksliige4':
•> #•> ;•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #48 `tegur5':
•> #•> ;•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #49 `loogilav6':
•> #•> ;•> THEN

The relationships of symbol #50 `loogilav7':
•> #•> ;•> THEN

The relationships of symbol #51 `loogilav8':
•> #•> ;•> THEN

The relationships of symbol #52 `loogilav9':
•> #•> ;•> THEN

The relationships of symbol #53 `loogilav10':
•> #•> ;•> THEN

The relationships of symbol #54 `loogilav11':
•> #•> ;•> THEN


Precedence varies


P2-conflict:
WRITE <•=• #i#
The source is the production P52: `kirjutamine' -> WRITE #i#
I'll add a new NT P54: `kirjutamine1' -> #i#
I'll change the production P52: `kirjutamine' -> WRITE `kirjutamine1'

Leftmost-set

Symbol12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
26.programm*0000000000000000000000000*0000000000000000000000000000
27.programm12*000000000000000000000000000000000000000000000000000000
28.operaatorid000***0*0000000000000*0**000**********000*0000000000000
29.operaator000***0*0000000000000*0**00000********000*0000000000000
30.operaatorid13000***0*0000000000000*0**000*0********000*0000000000000
31.label0000*00000000000000000000000000000000000000000000000000
32.omistamine0000*00000000000000000000000000000000*00000000000000000
33.iflause000000000000000000000*0000000000000000000*0000000000000
34.suunamine0000000*00000000000000000000000000000000000000000000000
35.lugemine00000000000000000000000*0000000000000000000000000000000
36.kirjutamine000000000000000000000000*000000000000000000000000000000
37.incdec000***0000000000000000000000000000000000000000000000000
38.muutuja0000*00000000000000000000000000000000000000000000000000
39.omistamine1000***000000**0000000000000000000000*000*0*00*000000000
40.loogilav000***000000**0000000000000000000000*000*0*00*000000000
41.aritmav000***000000**0000000000000000000000*000*0*00*000000000
42.tingimus000000000000000000000*000000000000000000000000000000000
43.yksliige000***000000**0000000000000000000000*00000*00*000000000
44.aritmav2000***000000**0000000000000000000000*00000*00*000000000
45.aritmav3000***000000**0000000000000000000000*00000*00*000000000
46.tegur000***000000**0000000000000000000000*000000000000000000
47.yksliige4000***000000**0000000000000000000000*00000000*000000000
48.tegur5000***000000**0000000000000000000000*000*0*00*000000000
49.loogilav6000***000000**0000000000000000000000*000*0*00*000000000
50.loogilav7000***000000**0000000000000000000000*000*0*00*000000000
51.loogilav8000***000000**0000000000000000000000*000*0*00*000000000
52.loogilav9000***000000**0000000000000000000000*000*0*00*000000000
53.loogilav10000***000000**0000000000000000000000*000*0*00*000000000
54.loogilav11000***000000**0000000000000000000000*000*0*00*000000000
55.kirjutamine10000*00000000000000000000000000000000000000000000000000

New grammar

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' -> `incdec'
P13: `incdec' -> ++ #i#
P14: `incdec' -> #i# ++
P15: `incdec' -> -- #i#
P16: `incdec' -> #i# --
P17: `label' -> #i#
P18: `omistamine' -> `muutuja' := `omistamine1'
P19: `omistamine' -> `muutuja' := `loogilav'
P20: `omistamine1' -> `aritmav'
P21: `muutuja' -> #i#
P22: `iflause' -> `tingimus' `operaator'
P23: `suunamine' -> GOTO `label'
P24: `aritmav' -> `yksliige'
P25: `aritmav' -> `aritmav' + `aritmav2'
P26: `aritmav' -> `aritmav' - `aritmav3'
P27: `aritmav2' -> `yksliige'
P28: `aritmav3' -> `yksliige'
P29: `yksliige' -> `tegur'
P30: `yksliige' -> `yksliige' * `yksliige4'
P31: `yksliige' -> `yksliige' / `tegur'
P32: `yksliige4' -> `tegur'
P33: `tegur' -> #i#
P34: `tegur' -> #c#
P35: `tegur' -> `incdec'
P36: `tegur' -> ( `tegur5'
P37: `tegur5' -> `aritmav' )
P38: `loogilav' -> `aritmav' < `loogilav6'
P39: `loogilav' -> `aritmav' > `loogilav7'
P40: `loogilav' -> `aritmav' <= `loogilav8'
P41: `loogilav' -> `aritmav' >= `loogilav9'
P42: `loogilav' -> `aritmav' /= `loogilav10'
P43: `loogilav' -> `aritmav' = `loogilav11'
P44: `loogilav6' -> `aritmav'
P45: `loogilav7' -> `aritmav'
P46: `loogilav8' -> `aritmav'
P47: `loogilav9' -> `aritmav'
P48: `loogilav10' -> `aritmav'
P49: `loogilav11' -> `aritmav'
P50: `tingimus' -> IF `loogilav' THEN
P51: `lugemine' -> READ #i#
P52: `kirjutamine' -> WRITE `kirjutamine1'
P53: `kirjutamine' -> WRITE `incdec'
P54: `kirjutamine1' -> #i#

Leftmost-set

Symbol12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
26.programm*0000000000000000000000000*0000000000000000000000000000
27.programm12*000000000000000000000000000000000000000000000000000000
28.operaatorid000***0*0000000000000*0**000**********000*0000000000000
29.operaator000***0*0000000000000*0**00000********000*0000000000000
30.operaatorid13000***0*0000000000000*0**000*0********000*0000000000000
31.label0000*00000000000000000000000000000000000000000000000000
32.omistamine0000*00000000000000000000000000000000*00000000000000000
33.iflause000000000000000000000*0000000000000000000*0000000000000
34.suunamine0000000*00000000000000000000000000000000000000000000000
35.lugemine00000000000000000000000*0000000000000000000000000000000
36.kirjutamine000000000000000000000000*000000000000000000000000000000
37.incdec000***0000000000000000000000000000000000000000000000000
38.muutuja0000*00000000000000000000000000000000000000000000000000
39.omistamine1000***000000**0000000000000000000000*000*0*00*000000000
40.loogilav000***000000**0000000000000000000000*000*0*00*000000000
41.aritmav000***000000**0000000000000000000000*000*0*00*000000000
42.tingimus000000000000000000000*000000000000000000000000000000000
43.yksliige000***000000**0000000000000000000000*00000*00*000000000
44.aritmav2000***000000**0000000000000000000000*00000*00*000000000
45.aritmav3000***000000**0000000000000000000000*00000*00*000000000
46.tegur000***000000**0000000000000000000000*000000000000000000
47.yksliige4000***000000**0000000000000000000000*00000000*000000000
48.tegur5000***000000**0000000000000000000000*000*0*00*000000000
49.loogilav6000***000000**0000000000000000000000*000*0*00*000000000
50.loogilav7000***000000**0000000000000000000000*000*0*00*000000000
51.loogilav8000***000000**0000000000000000000000*000*0*00*000000000
52.loogilav9000***000000**0000000000000000000000*000*0*00*000000000
53.loogilav10000***000000**0000000000000000000000*000*0*00*000000000
54.loogilav11000***000000**0000000000000000000000*000*0*00*000000000
55.kirjutamine10000*00000000000000000000000000000000000000000000000000

Rightmost-set

Symbol12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
26.programm*000000000000000000000000000000000000000000000000000000
27.programm12000***000000*0*000000000000**0*******0***0*************
28.operaatorid000***000000*0*000000000000**0*******0***0*************
29.operaator000***000000*0*0000000000000*0*******0***0*************
30.operaatorid13000***000000*0*0000000000000*0*******0***0*************
31.label0000*00000000000000000000000000000000000000000000000000
32.omistamine000***000000*0*000000000000000000000*0***0************0
33.iflause000***000000*0*0000000000000*0*******0***0*************
34.suunamine0000*0000000000000000000000000*000000000000000000000000
35.lugemine0000*00000000000000000000000000000000000000000000000000
36.kirjutamine000***000000000000000000000000000000*00000000000000000*
37.incdec000***0000000000000000000000000000000000000000000000000
38.muutuja0000*00000000000000000000000000000000000000000000000000
39.omistamine1000***000000*0*000000000000000000000*000*0******0000000
40.loogilav000***000000*0*000000000000000000000*000*0************0
41.aritmav000***000000*0*000000000000000000000*00000******0000000
42.tingimus0000000000000000000000*00000000000000000000000000000000
43.yksliige000***000000*0*000000000000000000000*00000000***0000000
44.aritmav2000***000000*0*000000000000000000000*00000*00***0000000
45.aritmav3000***000000*0*000000000000000000000*00000*00***0000000
46.tegur000***000000*0*000000000000000000000*0000000000*0000000
47.yksliige4000***000000*0*000000000000000000000*00000000*0*0000000
48.tegur500000000000000*0000000000000000000000000000000000000000
49.loogilav6000***000000*0*000000000000000000000*000*0******0000000
50.loogilav7000***000000*0*000000000000000000000*000*0******0000000
51.loogilav8000***000000*0*000000000000000000000*000*0******0000000
52.loogilav9000***000000*0*000000000000000000000*000*0******0000000
53.loogilav10000***000000*0*000000000000000000000*000*0******0000000
54.loogilav11000***000000*0*000000000000000000000*000*0******0000000
55.kirjutamine10000*00000000000000000000000000000000000000000000000000

Leftmost & rightmost sets

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

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

`operaatorid' leftmost set: `++' , `#i#' , `--' , `GOTO' , `IF' , `READ' , `WRITE' , `operaator' , `operaatorid13' , `label' , `omistamine' , `iflause' , `suunamine' , `lugemine' , `kirjutamine' , `incdec' , `muutuja' , `tingimus'
`operaatorid' rightmost set: ++ , #i# , -- , #c# , ) , operaatorid , operaator , label , omistamine , iflause , suunamine , lugemine , kirjutamine , incdec , omistamine1 , loogilav , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5 , loogilav6 , loogilav7 , loogilav8 , loogilav9 , loogilav10 , loogilav11 , kirjutamine1

`operaator' leftmost set: `++' , `#i#' , `--' , `GOTO' , `IF' , `READ' , `WRITE' , `label' , `omistamine' , `iflause' , `suunamine' , `lugemine' , `kirjutamine' , `incdec' , `muutuja' , `tingimus'
`operaator' rightmost set: ++ , #i# , -- , #c# , ) , operaator , label , omistamine , iflause , suunamine , lugemine , kirjutamine , incdec , omistamine1 , loogilav , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5 , loogilav6 , loogilav7 , loogilav8 , loogilav9 , loogilav10 , loogilav11 , kirjutamine1

`operaatorid13' leftmost set: `++' , `#i#' , `--' , `GOTO' , `IF' , `READ' , `WRITE' , `operaator' , `label' , `omistamine' , `iflause' , `suunamine' , `lugemine' , `kirjutamine' , `incdec' , `muutuja' , `tingimus'
`operaatorid13' rightmost set: ++ , #i# , -- , #c# , ) , operaator , label , omistamine , iflause , suunamine , lugemine , kirjutamine , incdec , omistamine1 , loogilav , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5 , loogilav6 , loogilav7 , loogilav8 , loogilav9 , loogilav10 , loogilav11 , kirjutamine1

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

`omistamine' leftmost set: `#i#' , `muutuja'
`omistamine' rightmost set: ++ , #i# , -- , #c# , ) , incdec , 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# , ) , operaator , label , omistamine , iflause , suunamine , lugemine , kirjutamine , incdec , omistamine1 , loogilav , aritmav , yksliige , aritmav2 , aritmav3 , tegur , yksliige4 , tegur5 , loogilav6 , loogilav7 , loogilav8 , loogilav9 , loogilav10 , loogilav11 , kirjutamine1

`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# , -- , incdec , kirjutamine1

`incdec' leftmost set: `++' , `#i#' , `--'
`incdec' rightmost set: ++ , #i# , --

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Precedence matrix

Symbol12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
1.#000<<<0<0000000000000<0<<00=<<<<<<<<<<000<0000000000000
2.;000<<<0<0000000000000<0<<00=<<<<<<<<<<000<0000000000000
3.:000<<<0<0000000000000<0<<000=0<<<<<<<<000<0000000000000
4.++>>00=000>>>>00>>>>>>>0>00000000000000000000000000000000
5.#i#>>>=0=>0>>>>00>>>>>>>0>00000000000000000000000000000000
6.-->>00=000>>>>00>>>>>>>0>00000000000000000000000000000000
7.:=000<<<000000<<0000000000000000000000<0==<0<00<000000000
8.GOTO0000<0000000000000000000000000=000000000000000000000000
9.+000<<<000000<<0000000000000000000000<00000<=0<000000000
10.-000<<<000000<<0000000000000000000000<00000<0=<000000000
11.*000<<<000000<<0000000000000000000000<00000000<=00000000
12./000<<<000000<<0000000000000000000000<00000000=000000000
13.#c#>>000000>>>>00>>>>>>>0>00000000000000000000000000000000
14.(000<<<000000<<0000000000000000000000<000<0<00<0=0000000
15.)>>000000>>>>00>>>>>>>0>00000000000000000000000000000000
16.<000<<<000000<<0000000000000000000000<000<0<00<00=000000
17.>000<<<000000<<0000000000000000000000<000<0<00<000=00000
18.<=000<<<000000<<0000000000000000000000<000<0<00<0000=0000
19.>=000<<<000000<<0000000000000000000000<000<0<00<00000=000
20./=000<<<000000<<0000000000000000000000<000<0<00<000000=00
21.=000<<<000000<<0000000000000000000000<000<0<00<0000000=0
22.IF000<<<000000<<0000000000000000000000<00=<0<00<000000000
23.THEN000>>>0>0000000000000>0>>000>0>>>>>>>>000>0000000000000
24.READ0000=00000000000000000000000000000000000000000000000000
25.WRITE000<<<000000000000000000000000000000=00000000000000000=
26.programm0000000000000000000000000000000000000000000000000000000
27.programm12=000000000000000000000000000000000000000000000000000000
28.operaatorid>000000000000000000000000000000000000000000000000000000
29.operaator>>00000000000000000000000000000000000000000000000000000
30.operaatorid130=00000000000000000000000000000000000000000000000000000
31.label>>=0000000000000000000000000000000000000000000000000000
32.omistamine>>00000000000000000000000000000000000000000000000000000
33.iflause>>00000000000000000000000000000000000000000000000000000
34.suunamine>>00000000000000000000000000000000000000000000000000000
35.lugemine>>00000000000000000000000000000000000000000000000000000
36.kirjutamine>>00000000000000000000000000000000000000000000000000000
37.incdec>>000000>>>>00>>>>>>>0>00000000000000000000000000000000
38.muutuja000000=000000000000000000000000000000000000000000000000
39.omistamine1>>00000000000000000000000000000000000000000000000000000
40.loogilav>>00000000000000000000=00000000000000000000000000000000
41.aritmav>>000000==0000=======0>00000000000000000000000000000000
42.tingimus000<<<0<0000000000000<0<<000=0<<<<<<<<000<0000000000000
43.yksliige>>000000>>==00>>>>>>>0>00000000000000000000000000000000
44.aritmav2>>000000>>0000>>>>>>>0>00000000000000000000000000000000
45.aritmav3>>000000>>0000>>>>>>>0>00000000000000000000000000000000
46.tegur>>000000>>>>00>>>>>>>0>00000000000000000000000000000000
47.yksliige4>>000000>>>>00>>>>>>>0>00000000000000000000000000000000
48.tegur5>>000000>>>>00>>>>>>>0>00000000000000000000000000000000
49.loogilav6>>00000000000000000000>00000000000000000000000000000000
50.loogilav7>>00000000000000000000>00000000000000000000000000000000
51.loogilav8>>00000000000000000000>00000000000000000000000000000000
52.loogilav9>>00000000000000000000>00000000000000000000000000000000
53.loogilav10>>00000000000000000000>00000000000000000000000000000000
54.loogilav11>>00000000000000000000>00000000000000000000000000000000
55.kirjutamine1>>00000000000000000000000000000000000000000000000000000

The relationships of symbol #1 #:
<• ++<• #i#<• --<• GOTO<• IF<• READ<• WRITE=• `operaatorid'<• `operaator'<• `operaatorid13'<• `label'<• `omistamine'<• `iflause'<• `suunamine'<• `lugemine'<• `kirjutamine'<• `incdec'<• `muutuja'<• `tingimus'

The relationships of symbol #2 ;:
<• ++<• #i#<• --<• GOTO<• IF<• READ<• WRITE=• `operaatorid'<• `operaator'<• `operaatorid13'<• `label'<• `omistamine'<• `iflause'<• `suunamine'<• `lugemine'<• `kirjutamine'<• `incdec'<• `muutuja'<• `tingimus'

The relationships of symbol #3 ::
<• ++<• #i#<• --<• GOTO<• IF<• READ<• WRITE=• `operaator'<• `label'<• `omistamine'<• `iflause'<• `suunamine'<• `lugemine'<• `kirjutamine'<• `incdec'<• `muutuja'<• `tingimus'

The relationships of symbol #4 ++:
•> #•> ;=• #i#•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #5 #i#:
•> #•> ;•> :=• ++=• --•> :=•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #6 --:
•> #•> ;=• #i#•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #7 :=:
<• ++<• #i#<• --<• #c#<• (<• `incdec'=• `omistamine1'=• `loogilav'<• `aritmav'<• `yksliige'<• `tegur'

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

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

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

The relationships of symbol #11 *:
<• ++<• #i#<• --<• #c#<• (<• `incdec'<• `tegur'=• `yksliige4'

The relationships of symbol #12 /:
<• ++<• #i#<• --<• #c#<• (<• `incdec'=• `tegur'

The relationships of symbol #13 #c#:
•> #•> ;•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #14 (:
<• ++<• #i#<• --<• #c#<• (<• `incdec'<• `aritmav'<• `yksliige'<• `tegur'=• `tegur5'

The relationships of symbol #15 ):
•> #•> ;•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #16 <:
<• ++<• #i#<• --<• #c#<• (<• `incdec'<• `aritmav'<• `yksliige'<• `tegur'=• `loogilav6'

The relationships of symbol #17 >:
<• ++<• #i#<• --<• #c#<• (<• `incdec'<• `aritmav'<• `yksliige'<• `tegur'=• `loogilav7'

The relationships of symbol #18 <=:
<• ++<• #i#<• --<• #c#<• (<• `incdec'<• `aritmav'<• `yksliige'<• `tegur'=• `loogilav8'

The relationships of symbol #19 >=:
<• ++<• #i#<• --<• #c#<• (<• `incdec'<• `aritmav'<• `yksliige'<• `tegur'=• `loogilav9'

The relationships of symbol #20 /=:
<• ++<• #i#<• --<• #c#<• (<• `incdec'<• `aritmav'<• `yksliige'<• `tegur'=• `loogilav10'

The relationships of symbol #21 =:
<• ++<• #i#<• --<• #c#<• (<• `incdec'<• `aritmav'<• `yksliige'<• `tegur'=• `loogilav11'

The relationships of symbol #22 IF:
<• ++<• #i#<• --<• #c#<• (<• `incdec'=• `loogilav'<• `aritmav'<• `yksliige'<• `tegur'

The relationships of symbol #23 THEN:
•> ++•> #i#•> --•> GOTO•> IF•> READ•> WRITE•> `operaator'•> `label'•> `omistamine'•> `iflause'•> `suunamine'•> `lugemine'•> `kirjutamine'•> `incdec'•> `muutuja'•> `tingimus'

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

The relationships of symbol #25 WRITE:
<• ++<• #i#<• --=• `incdec'=• `kirjutamine1'

The relationships of symbol #26 `programm':

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

The relationships of symbol #28 `operaatorid':
•> #

The relationships of symbol #29 `operaator':
•> #•> ;

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

The relationships of symbol #31 `label':
•> #•> ;=• :

The relationships of symbol #32 `omistamine':
•> #•> ;

The relationships of symbol #33 `iflause':
•> #•> ;

The relationships of symbol #34 `suunamine':
•> #•> ;

The relationships of symbol #35 `lugemine':
•> #•> ;

The relationships of symbol #36 `kirjutamine':
•> #•> ;

The relationships of symbol #37 `incdec':
•> #•> ;•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

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

The relationships of symbol #39 `omistamine1':
•> #•> ;

The relationships of symbol #40 `loogilav':
•> #•> ;=• THEN

The relationships of symbol #41 `aritmav':
•> #•> ;=• +=• -=• )=• <=• >=• <==• >==• /==• =•> THEN

The relationships of symbol #42 `tingimus':
<• ++<• #i#<• --<• GOTO<• IF<• READ<• WRITE=• `operaator'<• `label'<• `omistamine'<• `iflause'<• `suunamine'<• `lugemine'<• `kirjutamine'<• `incdec'<• `muutuja'<• `tingimus'

The relationships of symbol #43 `yksliige':
•> #•> ;•> +•> -=• *=• /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #44 `aritmav2':
•> #•> ;•> +•> -•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #45 `aritmav3':
•> #•> ;•> +•> -•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #46 `tegur':
•> #•> ;•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #47 `yksliige4':
•> #•> ;•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #48 `tegur5':
•> #•> ;•> +•> -•> *•> /•> )•> <•> >•> <=•> >=•> /=•> =•> THEN

The relationships of symbol #49 `loogilav6':
•> #•> ;•> THEN

The relationships of symbol #50 `loogilav7':
•> #•> ;•> THEN

The relationships of symbol #51 `loogilav8':
•> #•> ;•> THEN

The relationships of symbol #52 `loogilav9':
•> #•> ;•> THEN

The relationships of symbol #53 `loogilav10':
•> #•> ;•> THEN

The relationships of symbol #54 `loogilav11':
•> #•> ;•> THEN

The relationships of symbol #55 `kirjutamine1':
•> #•> ;


Grammar TRINEW.grm is a precedence grammar

Grammar TRINEW.grm is not invertible


Left Context


Symbol12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
26.programm0000000000000000000000000000000000000000000000000000000
27.programm120000000000000000000000000000000000000000000000000000000
28.operaatorid**00000000000000000000000000000000000000000000000000000
29.operaator***00000000000000000000000000000000000000*0000000000000
30.operaatorid13**00000000000000000000000000000000000000000000000000000
31.label***0000*000000000000000000000000000000000*0000000000000
32.omistamine***00000000000000000000000000000000000000*0000000000000
33.iflause***00000000000000000000000000000000000000*0000000000000
34.suunamine***00000000000000000000000000000000000000*0000000000000
35.lugemine***00000000000000000000000000000000000000*0000000000000
36.kirjutamine***00000000000000000000000000000000000000*0000000000000
37.incdec***000*0****0*0*******00*0000000000000000*0000000000000
38.muutuja***00000000000000000000000000000000000000*0000000000000
39.omistamine1000000*000000000000000000000000000000000000000000000000
40.loogilav000000*00000000000000*000000000000000000000000000000000
41.aritmav000000*000000*0*******000000000000000000000000000000000
42.tingimus***00000000000000000000000000000000000000*0000000000000
43.yksliige000000*0**000*0*******000000000000000000000000000000000
44.aritmav200000000*0000000000000000000000000000000000000000000000
45.aritmav3000000000*000000000000000000000000000000000000000000000
46.tegur000000*0****0*0*******000000000000000000000000000000000
47.yksliige40000000000*00000000000000000000000000000000000000000000
48.tegur50000000000000*00000000000000000000000000000000000000000
49.loogilav6000000000000000*000000000000000000000000000000000000000
50.loogilav70000000000000000*00000000000000000000000000000000000000
51.loogilav800000000000000000*0000000000000000000000000000000000000
52.loogilav9000000000000000000*000000000000000000000000000000000000
53.loogilav100000000000000000000*00000000000000000000000000000000000
54.loogilav1100000000000000000000*0000000000000000000000000000000000
55.kirjutamine1000000000000000000000000*000000000000000000000000000000

Right Context


Symbol12345678910111213141516171819202122232425
26.programm0000000000000000000000000
27.programm12*000000000000000000000000
28.operaatorid*000000000000000000000000
29.operaator**00000000000000000000000
30.operaatorid130*00000000000000000000000
31.label***0000000000000000000000
32.omistamine**00000000000000000000000
33.iflause**00000000000000000000000
34.suunamine**00000000000000000000000
35.lugemine**00000000000000000000000
36.kirjutamine**00000000000000000000000
37.incdec**000000****00*******0*00
38.muutuja000000*000000000000000000
39.omistamine1**00000000000000000000000
40.loogilav**00000000000000000000*00
41.aritmav**000000**0000*******0*00
42.tingimus000***0*0000000000000*0**
43.yksliige**000000****00*******0*00
44.aritmav2**000000**0000*******0*00
45.aritmav3**000000**0000*******0*00
46.tegur**000000****00*******0*00
47.yksliige4**000000****00*******0*00
48.tegur5**000000****00*******0*00
49.loogilav6**00000000000000000000*00
50.loogilav7**00000000000000000000*00
51.loogilav8**00000000000000000000*00
52.loogilav9**00000000000000000000*00
53.loogilav10**00000000000000000000*00
54.loogilav11**00000000000000000000*00
55.kirjutamine1**00000000000000000000000


Independent context

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

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

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

`operaator' left context: # , ; , : , `tingimus'
`operaator' right context: # , ;

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

`label' left context: # , ; , : , GOTO , `tingimus'
`label' right context: # , ; , :

`omistamine' left context: # , ; , : , `tingimus'
`omistamine' right context: # , ;

`iflause' left context: # , ; , : , `tingimus'
`iflause' right context: # , ;

`suunamine' left context: # , ; , : , `tingimus'
`suunamine' right context: # , ;

`lugemine' left context: # , ; , : , `tingimus'
`lugemine' right context: # , ;

`kirjutamine' left context: # , ; , : , `tingimus'
`kirjutamine' right context: # , ;

`incdec' left context: # , ; , : , := , + , - , * , / , ( , < , > , <= , >= , /= , = , IF , WRITE , `tingimus'
`incdec' right context: # , ; , + , - , * , / , ) , < , > , <= , >= , /= , = , THEN

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

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

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

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

`tingimus' left context: # , ; , : , `tingimus'
`tingimus' right context: ++ , #i# , -- , GOTO , IF , READ , WRITE

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

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

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

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

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

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

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

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

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

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

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

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

`kirjutamine1' left context: WRITE
`kirjutamine1' right context: # , ;


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

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

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

`kirjutamine1' left context: WRITE
`kirjutamine1' right context: # , ;


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

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

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


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

Equivalent definitions:
`operaator' —> `incdec' & `tegur' —> `incdec'
`operaator' left context: # , ; , : , `tingimus'
`operaator' right context: # , ;

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


The left context of `operaator' and `tegur' 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

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

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

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

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

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

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


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
`aritmav' right context: # , ; , + , - , ) , < , > , <= , >= , /= , = , THEN

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

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


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
`yksliige' right context: # , ; , + , - , * , / , ) , < , > , <= , >= , /= , = , THEN

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


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

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


Semantics

Semantics file is TRINEW.sem
#=1
;=2
:=3
++=4
#i#=5
--=6
:==7
GOTO=8
+=9
-=10
*=11
/=12
#c#=13
(=14
)=15
<=16
>=17
<==18
>==19
/==20
==21
IF=22
THEN=23
READ=24
WRITE=25
P1=26 $P 1: `programm' -> `programm12' #
P2=27 $P 2: `programm12' -> # `operaatorid'
P3=28 $P 3: `operaatorid' -> `operaator'
P4=29 $P 4: `operaatorid' -> `operaatorid13' ; `operaatorid'
P5=30 $P 5: `operaatorid13' -> `operaator'
P6=31 $P 6: `operaator' -> `label' : `operaator'
P7=32 $P 7: `operaator' -> `omistamine'
P8=33 $P 8: `operaator' -> `iflause'
P9=34 $P 9: `operaator' -> `suunamine'
P10=35 $P10: `operaator' -> `lugemine'
P11=36 $P11: `operaator' -> `kirjutamine'
P12=37 $P12: `operaator' -> `incdec'
P13=38 $P13: `incdec' -> ++ #i#
P14=39 $P14: `incdec' -> #i# ++
P15=40 $P15: `incdec' -> -- #i#
P16=41 $P16: `incdec' -> #i# --
P17=42 $P17: `label' -> #i#
P18=43 $P18: `omistamine' -> `muutuja' := `omistamine1'
P19=44 $P19: `omistamine' -> `muutuja' := `loogilav'
P20=45 $P20: `omistamine1' -> `aritmav'
P21=46 $P21: `muutuja' -> #i#
P22=47 $P22: `iflause' -> `tingimus' `operaator'
P23=48 $P23: `suunamine' -> GOTO `label'
P24=49 $P24: `aritmav' -> `yksliige'
P25=50 $P25: `aritmav' -> `aritmav' + `aritmav2'
P26=51 $P26: `aritmav' -> `aritmav' - `aritmav3'
P27=52 $P27: `aritmav2' -> `yksliige'
P28=53 $P28: `aritmav3' -> `yksliige'
P29=54 $P29: `yksliige' -> `tegur'
P30=55 $P30: `yksliige' -> `yksliige' * `yksliige4'
P31=56 $P31: `yksliige' -> `yksliige' / `tegur'
P32=57 $P32: `yksliige4' -> `tegur'
P33=58 $P33: `tegur' -> #i#
P34=59 $P34: `tegur' -> #c#
P35=60 $P35: `tegur' -> `incdec'
P36=61 $P36: `tegur' -> ( `tegur5'
P37=62 $P37: `tegur5' -> `aritmav' )
P38=63 $P38: `loogilav' -> `aritmav' < `loogilav6'
P39=64 $P39: `loogilav' -> `aritmav' > `loogilav7'
P40=65 $P40: `loogilav' -> `aritmav' <= `loogilav8'
P41=66 $P41: `loogilav' -> `aritmav' >= `loogilav9'
P42=67 $P42: `loogilav' -> `aritmav' /= `loogilav10'
P43=68 $P43: `loogilav' -> `aritmav' = `loogilav11'
P44=69 $P44: `loogilav6' -> `aritmav'
P45=70 $P45: `loogilav7' -> `aritmav'
P46=71 $P46: `loogilav8' -> `aritmav'
P47=72 $P47: `loogilav9' -> `aritmav'
P48=73 $P48: `loogilav10' -> `aritmav'
P49=74 $P49: `loogilav11' -> `aritmav'
P50=75 $P50: `tingimus' -> IF `loogilav' THEN
P51=76 $P51: `lugemine' -> READ #i#
P52=77 $P52: `kirjutamine' -> WRITE `kirjutamine1'
P53=78 $P53: `kirjutamine' -> WRITE `incdec'
P54=79 $P54: `kirjutamine1' -> #i#

Result tables


FileSize
TRINEW.prm28
TRINEW.pm3136
TRINEW.t1120
TRINEW.tt520
TRINEW.ht3140
TRINEW.sm324
TRINEW.v3228
TRINEW.lc3136
TRINEW.rc3136

Look at result tables

Finish of CONSTRUCTOR Sat Apr 03 16:02:32 2004