Start of CONSTRUCTOR for the Grammar TRI.grm Sat Apr 03 16:00:06 2004

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


Nonterminal alphabet

#24 = `programm'
#25 = `programm12'
#26 = `operaatorid'
#27 = `operaator'
#28 = `operaatorid13'
#29 = `label'
#30 = `omistamine'
#31 = `iflause'
#32 = `suunamine'
#33 = `lugemine'
#34 = `kirjutamine'
#35 = `muutuja'
#36 = `omistamine1'
#37 = `loogilav'
#38 = `aritmav'
#39 = `tingimus'
#40 = `yksliige'
#41 = `aritmav2'
#42 = `aritmav3'
#43 = `tegur'
#44 = `yksliige4'
#45 = `tegur5'
#46 = `loogilav6'
#47 = `loogilav7'
#48 = `loogilav8'
#49 = `loogilav9'
#50 = `loogilav10'
#51 = `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: `label' -> #i#
P13: `omistamine' -> `muutuja' := `omistamine1'
P14: `omistamine' -> `muutuja' := `loogilav'
P15: `omistamine1' -> `aritmav'
P16: `muutuja' -> #i#
P17: `iflause' -> `tingimus' `operaator'
P18: `suunamine' -> GOTO `label'
P19: `aritmav' -> `yksliige'
P20: `aritmav' -> `aritmav' + `aritmav2'
P21: `aritmav' -> `aritmav' - `aritmav3'
P22: `aritmav2' -> `yksliige'
P23: `aritmav3' -> `yksliige'
P24: `yksliige' -> `tegur'
P25: `yksliige' -> `yksliige' * `yksliige4'
P26: `yksliige' -> `yksliige' / `tegur'
P27: `yksliige4' -> `tegur'
P28: `tegur' -> #i#
P29: `tegur' -> #c#
P30: `tegur' -> ( `tegur5'
P31: `tegur5' -> `aritmav' )
P32: `loogilav' -> `aritmav' < `loogilav6'
P33: `loogilav' -> `aritmav' > `loogilav7'
P34: `loogilav' -> `aritmav' <= `loogilav8'
P35: `loogilav' -> `aritmav' >= `loogilav9'
P36: `loogilav' -> `aritmav' /= `loogilav10'
P37: `loogilav' -> `aritmav' = `loogilav11'
P38: `loogilav6' -> `aritmav'
P39: `loogilav7' -> `aritmav'
P40: `loogilav8' -> `aritmav'
P41: `loogilav9' -> `aritmav'
P42: `loogilav10' -> `aritmav'
P43: `loogilav11' -> `aritmav'
P44: `tingimus' -> IF `loogilav' THEN
P45: `lugemine' -> READ #i#
P46: `kirjutamine' -> WRITE #i#

Leftmost-set

Symbol123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
24.programm*00000000000000000000000*00000000000000000000000000
25.programm12*00000000000000000000000000000000000000000000000000
26.operaatorid000*0*0000000000000*0**000*********000*000000000000
27.operaator000*0*0000000000000*0**00000*******000*000000000000
28.operaatorid13000*0*0000000000000*0**000*0*******000*000000000000
29.label000*00000000000000000000000000000000000000000000000
30.omistamine000*000000000000000000000000000000*0000000000000000
31.iflause0000000000000000000*000000000000000000*000000000000
32.suunamine00000*000000000000000000000000000000000000000000000
33.lugemine000000000000000000000*00000000000000000000000000000
34.kirjutamine0000000000000000000000*0000000000000000000000000000
35.muutuja000*00000000000000000000000000000000000000000000000
36.omistamine1000*000000**0000000000000000000000000*0*00*00000000
37.loogilav000*000000**0000000000000000000000000*0*00*00000000
38.aritmav000*000000**0000000000000000000000000*0*00*00000000
39.tingimus0000000000000000000*0000000000000000000000000000000
40.yksliige000*000000**000000000000000000000000000*00*00000000
41.aritmav2000*000000**000000000000000000000000000*00*00000000
42.aritmav3000*000000**000000000000000000000000000*00*00000000
43.tegur000*000000**000000000000000000000000000000000000000
44.yksliige4000*000000**000000000000000000000000000000*00000000
45.tegur5000*000000**0000000000000000000000000*0*00*00000000
46.loogilav6000*000000**0000000000000000000000000*0*00*00000000
47.loogilav7000*000000**0000000000000000000000000*0*00*00000000
48.loogilav8000*000000**0000000000000000000000000*0*00*00000000
49.loogilav9000*000000**0000000000000000000000000*0*00*00000000
50.loogilav10000*000000**0000000000000000000000000*0*00*00000000
51.loogilav11000*000000**0000000000000000000000000*0*00*00000000

Rightmost-set

Symbol123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
24.programm*00000000000000000000000000000000000000000000000000
25.programm12000*000000*0*000000000000**0******0***0************
26.operaatorid000*000000*0*000000000000**0******0***0************
27.operaator000*000000*0*0000000000000*0******0***0************
28.operaatorid13000*000000*0*0000000000000*0******0***0************
29.label000*00000000000000000000000000000000000000000000000
30.omistamine000*000000*0*0000000000000000000000***0************
31.iflause000*000000*0*0000000000000*0******0***0************
32.suunamine000*000000000000000000000000*0000000000000000000000
33.lugemine000*00000000000000000000000000000000000000000000000
34.kirjutamine000*00000000000000000000000000000000000000000000000
35.muutuja000*00000000000000000000000000000000000000000000000
36.omistamine1000*000000*0*000000000000000000000000*0******000000
37.loogilav000*000000*0*000000000000000000000000*0************
38.aritmav000*000000*0*00000000000000000000000000******000000
39.tingimus00000000000000000000*000000000000000000000000000000
40.yksliige000*000000*0*00000000000000000000000000000***000000
41.aritmav2000*000000*0*00000000000000000000000000*00***000000
42.aritmav3000*000000*0*00000000000000000000000000*00***000000
43.tegur000*000000*0*0000000000000000000000000000000*000000
44.yksliige4000*000000*0*00000000000000000000000000000*0*000000
45.tegur5000000000000*00000000000000000000000000000000000000
46.loogilav6000*000000*0*000000000000000000000000*0******000000
47.loogilav7000*000000*0*000000000000000000000000*0******000000
48.loogilav8000*000000*0*000000000000000000000000*0******000000
49.loogilav9000*000000*0*000000000000000000000000*0******000000
50.loogilav10000*000000*0*000000000000000000000000*0******000000
51.loogilav11000*000000*0*000000000000000000000000*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 , 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' , `muutuja' , `tingimus'
`operaatorid' rightmost set: #i# , #c# , ) , operaatorid , operaator , label , omistamine , iflause , suunamine , lugemine , kirjutamine , 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' , `muutuja' , `tingimus'
`operaator' rightmost set: #i# , #c# , ) , operaator , label , omistamine , iflause , suunamine , lugemine , kirjutamine , 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' , `muutuja' , `tingimus'
`operaatorid13' rightmost set: #i# , #c# , ) , operaator , label , omistamine , iflause , suunamine , lugemine , kirjutamine , 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# , ) , 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 , 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#

`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


Precedence matrix

Symbol123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
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.#i#>>>0>0>>>>00>>>>>>>0>000000000000000000000000000000
5.:=000<000000<<00000000000000000000000==<0<00<00000000
6.GOTO000<000000000000000000000000=0000000000000000000000
7.+000<000000<<000000000000000000000000000<=0<00000000
8.-000<000000<<000000000000000000000000000<0=<00000000
9.*000<000000<<000000000000000000000000000000<=0000000
10./000<000000<<000000000000000000000000000000=00000000
11.#c#>>0000>>>>00>>>>>>>0>000000000000000000000000000000
12.(000<000000<<0000000000000000000000000<0<00<0=000000
13.)>>0000>>>>00>>>>>>>0>000000000000000000000000000000
14.<000<000000<<0000000000000000000000000<0<00<00=00000
15.>000<000000<<0000000000000000000000000<0<00<000=0000
16.<=000<000000<<0000000000000000000000000<0<00<0000=000
17.>=000<000000<<0000000000000000000000000<0<00<00000=00
18./=000<000000<<0000000000000000000000000<0<00<000000=0
19.=000<000000<<0000000000000000000000000<0<00<0000000=
20.IF000<000000<<000000000000000000000000=<0<00<00000000
21.THEN000>0>0000000000000>0>>000>0>>>>>>>000>000000000000
22.READ000=00000000000000000000000000000000000000000000000
23.WRITE000=00000000000000000000000000000000000000000000000
24.programm000000000000000000000000000000000000000000000000000
25.programm12=00000000000000000000000000000000000000000000000000
26.operaatorid>00000000000000000000000000000000000000000000000000
27.operaator>>0000000000000000000000000000000000000000000000000
28.operaatorid130=0000000000000000000000000000000000000000000000000
29.label>>=000000000000000000000000000000000000000000000000
30.omistamine>>0000000000000000000000000000000000000000000000000
31.iflause>>0000000000000000000000000000000000000000000000000
32.suunamine>>0000000000000000000000000000000000000000000000000
33.lugemine>>0000000000000000000000000000000000000000000000000
34.kirjutamine>>0000000000000000000000000000000000000000000000000
35.muutuja0000=0000000000000000000000000000000000000000000000
36.omistamine1>>0000000000000000000000000000000000000000000000000
37.loogilav>>000000000000000000=000000000000000000000000000000
38.aritmav>>0000==0000=======0>000000000000000000000000000000
39.tingimus000<0<0000000000000<0<<000=0<<<<<<<000<000000000000
40.yksliige>>0000>>==00>>>>>>>0>000000000000000000000000000000
41.aritmav2>>0000>>0000>>>>>>>0>000000000000000000000000000000
42.aritmav3>>0000>>0000>>>>>>>0>000000000000000000000000000000
43.tegur>>0000>>>>00>>>>>>>0>000000000000000000000000000000
44.yksliige4>>0000>>>>00>>>>>>>0>000000000000000000000000000000
45.tegur5>>0000>>>>00>>>>>>>0>000000000000000000000000000000
46.loogilav6>>000000000000000000>000000000000000000000000000000
47.loogilav7>>000000000000000000>000000000000000000000000000000
48.loogilav8>>000000000000000000>000000000000000000000000000000
49.loogilav9>>000000000000000000>000000000000000000000000000000
50.loogilav10>>000000000000000000>000000000000000000000000000000
51.loogilav11>>000000000000000000>000000000000000000000000000000

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

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

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

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

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

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

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

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•> `operaator'•> `label'•> `omistamine'•> `iflause'•> `suunamine'•> `lugemine'•> `kirjutamine'•> `muutuja'•> `tingimus'

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

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

The relationships of symbol #24 `programm':

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Grammar TRI.grm is a precedence grammar

Grammar TRI.grm is not invertible


Left Context


Symbol123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
24.programm000000000000000000000000000000000000000000000000000
25.programm12000000000000000000000000000000000000000000000000000
26.operaatorid**0000000000000000000000000000000000000000000000000
27.operaator***00000000000000000000000000000000000*000000000000
28.operaatorid13**0000000000000000000000000000000000000000000000000
29.label***00*00000000000000000000000000000000*000000000000
30.omistamine***00000000000000000000000000000000000*000000000000
31.iflause***00000000000000000000000000000000000*000000000000
32.suunamine***00000000000000000000000000000000000*000000000000
33.lugemine***00000000000000000000000000000000000*000000000000
34.kirjutamine***00000000000000000000000000000000000*000000000000
35.muutuja***00000000000000000000000000000000000*000000000000
36.omistamine10000*0000000000000000000000000000000000000000000000
37.loogilav0000*00000000000000*0000000000000000000000000000000
38.aritmav0000*000000*0*******0000000000000000000000000000000
39.tingimus***00000000000000000000000000000000000*000000000000
40.yksliige0000*0**000*0*******0000000000000000000000000000000
41.aritmav2000000*00000000000000000000000000000000000000000000
42.aritmav30000000*0000000000000000000000000000000000000000000
43.tegur0000*0****0*0*******0000000000000000000000000000000
44.yksliige400000000*000000000000000000000000000000000000000000
45.tegur500000000000*000000000000000000000000000000000000000
46.loogilav60000000000000*0000000000000000000000000000000000000
47.loogilav700000000000000*000000000000000000000000000000000000
48.loogilav8000000000000000*00000000000000000000000000000000000
49.loogilav90000000000000000*0000000000000000000000000000000000
50.loogilav1000000000000000000*000000000000000000000000000000000
51.loogilav11000000000000000000*00000000000000000000000000000000

Right Context


Symbol1234567891011121314151617181920212223
24.programm00000000000000000000000
25.programm12*0000000000000000000000
26.operaatorid*0000000000000000000000
27.operaator**000000000000000000000
28.operaatorid130*000000000000000000000
29.label***00000000000000000000
30.omistamine**000000000000000000000
31.iflause**000000000000000000000
32.suunamine**000000000000000000000
33.lugemine**000000000000000000000
34.kirjutamine**000000000000000000000
35.muutuja0000*000000000000000000
36.omistamine1**000000000000000000000
37.loogilav**000000000000000000*00
38.aritmav**0000**0000*******0*00
39.tingimus000*0*0000000000000*0**
40.yksliige**0000****00*******0*00
41.aritmav2**0000**0000*******0*00
42.aritmav3**0000**0000*******0*00
43.tegur**0000****00*******0*00
44.yksliige4**0000****00*******0*00
45.tegur5**0000****00*******0*00
46.loogilav6**000000000000000000*00
47.loogilav7**000000000000000000*00
48.loogilav8**000000000000000000*00
49.loogilav9**000000000000000000*00
50.loogilav10**000000000000000000*00
51.loogilav11**000000000000000000*00


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: # , ;

`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


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

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

`muutuja' left context: # , ; , : , `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: # , ;
`operaatorid' right context: #

`operaatorid13' left context: # , ;
`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

`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 TRI.grm is BRC(1|1)-reducible


Semantics

Semantics file is TRI.sem
#i#=1
#c#=2
P12=15 $P12: `label' -> #i#
P13=10 $P13: `omistamine' -> `muutuja' := `omistamine1'
P18=16 $P18: `suunamine' -> GOTO `label'
P20=14 $P20: `aritmav' -> `aritmav' + `aritmav2'
P21=13 $P21: `aritmav' -> `aritmav' - `aritmav3'
P25=12 $P25: `yksliige' -> `yksliige' * `yksliige4'
P26=11 $P26: `yksliige' -> `yksliige' / `tegur'
P32=3 $P32: `loogilav' -> `aritmav' < `loogilav6'
P33=4 $P33: `loogilav' -> `aritmav' > `loogilav7'
P34=5 $P34: `loogilav' -> `aritmav' <= `loogilav8'
P35=6 $P35: `loogilav' -> `aritmav' >= `loogilav9'
P36=7 $P36: `loogilav' -> `aritmav' /= `loogilav10'
P37=8 $P37: `loogilav' -> `aritmav' = `loogilav11'
P44=18 $P44: `tingimus' -> IF `loogilav' THEN
P45=20 $P45: `lugemine' -> READ #i#
P46=21 $P46: `kirjutamine' -> WRITE #i#

Result tables


FileSize
TRI.prm28
TRI.pm2704
TRI.t1040
TRI.tt480
TRI.ht2832
TRI.sm284
TRI.v2888
TRI.lc2704
TRI.rc2704

Look at result tables

Finish of CONSTRUCTOR Sat Apr 03 16:00:07 2004