Start of CONSTRUCTOR for the Grammar G41.grm Sat Apr 03 15:54:14 2004

Terminal alphabet

# 1 = #
# 2 = a
# 3 = b
# 4 = 1
# 5 = 0


Nonterminal alphabet

# 6 = `T'
# 7 = `S'
# 8 = `A'
# 9 = `B'
#10 = `C'
#11 = `D'


Productions

P 1: `T' -> # `S' #
P 2: `S' -> a `A'
P 3: `S' -> b `B'
P 4: `A' -> `C' `A' 1
P 5: `A' -> 0 1
P 6: `B' -> `D' `B' 1 1
P 7: `B' -> 0 1 1
P 8: `C' -> 0
P 9: `D' -> 0

Leftmost-set

Symbol#ab10TSABCD
6.T*0000000000
7.S0**00000000
8.A0000*0000*0
9.B0000*00000*
10.C0000*000000
11.D0000*000000

Rightmost-set

Symbol#ab10TSABCD
6.T*0000000000
7.S000*000**00
8.A000*0000000
9.B000*0000000
10.C0000*000000
11.D0000*000000

Leftmost & rightmost sets

`T' leftmost set: `#'
`T' rightmost set: #

`S' leftmost set: `a' , `b'
`S' rightmost set: 1 , A , B

`A' leftmost set: `0' , `C'
`A' rightmost set: 1

`B' leftmost set: `0' , `D'
`B' rightmost set: 1

`C' leftmost set: `0'
`C' rightmost set: 0

`D' leftmost set: `0'
`D' rightmost set: 0


Precedence matrix

Symbol#ab10TSABCD
1.#0<<000=0000
2.a0000<00=0<0
3.b0000<000=0<
4.1>00 50000000
5.0000=>00>>>>
6.T00000000000
7.S=0000000000
8.A>00=0000000
9.B>00=0000000
10.C0000<00=0<0
11.D0000<000=0<

The relationships of symbol #1 #:
<• a<• b=• `S'

The relationships of symbol #2 a:
<• 0=• `A'<• `C'

The relationships of symbol #3 b:
<• 0=• `B'<• `D'

The relationships of symbol #4 1:
•> #=••> 1

The relationships of symbol #5 0:
=• 1•> 0•> `A'•> `B'•> `C'•> `D'

The relationships of symbol #6 `T':

The relationships of symbol #7 `S':
=• #

The relationships of symbol #8 `A':
•> #=• 1

The relationships of symbol #9 `B':
•> #=• 1

The relationships of symbol #10 `C':
<• 0=• `A'<• `C'

The relationships of symbol #11 `D':
<• 0=• `B'<• `D'


Precedence varies


P1-conflict:
1 =••> 1
The source is the production P 7: `B' -> 0 1 1
I'll add a new NT P10: `B1' -> 0 1
I'll change the production P 7: `B' -> `B1' 1
The source is the production P 6: `B' -> `D' `B' 1 1
I'll add a new NT P11: `B2' -> `D' `B' 1
I'll change the production P 6: `B' -> `B2' 1

New grammar

P 1: `T' -> # `S' #
P 2: `S' -> a `A'
P 3: `S' -> b `B'
P 4: `A' -> `C' `A' 1
P 5: `A' -> 0 1
P 6: `B' -> `B2' 1
P 7: `B' -> `B1' 1
P 8: `C' -> 0
P 9: `D' -> 0
P10: `B1' -> 0 1
P11: `B2' -> `D' `B' 1

Leftmost-set

Symbol#ab10TSABCDB1B2
6.T*000000000000
7.S0**0000000000
8.A0000*0000*000
9.B0000*00000***
10.C0000*00000000
11.D0000*00000000
12.B10000*00000000
13.B20000*00000*00

Rightmost-set

Symbol#ab10TSABCDB1B2
6.T*000000000000
7.S000*000**0000
8.A000*000000000
9.B000*000000000
10.C0000*00000000
11.D0000*00000000
12.B1000*000000000
13.B2000*000000000

Leftmost & rightmost sets

`T' leftmost set: `#'
`T' rightmost set: #

`S' leftmost set: `a' , `b'
`S' rightmost set: 1 , A , B

`A' leftmost set: `0' , `C'
`A' rightmost set: 1

`B' leftmost set: `0' , `D' , `B1' , `B2'
`B' rightmost set: 1

`C' leftmost set: `0'
`C' rightmost set: 0

`D' leftmost set: `0'
`D' rightmost set: 0

`B1' leftmost set: `0'
`B1' rightmost set: 1

`B2' leftmost set: `0' , `D'
`B2' rightmost set: 1


Precedence matrix

Symbol#ab10TSABCDB1B2
1.#0<<000=000000
2.a0000<00=0<000
3.b0000<000=0<<<
4.1>00>000000000
5.0000=>00>>>>>>
6.T0000000000000
7.S=000000000000
8.A>00=000000000
9.B>00=000000000
10.C0000<00=0<000
11.D0000<000=0<<<
12.B1000=000000000
13.B2000=000000000

The relationships of symbol #1 #:
<• a<• b=• `S'

The relationships of symbol #2 a:
<• 0=• `A'<• `C'

The relationships of symbol #3 b:
<• 0=• `B'<• `D'<• `B1'<• `B2'

The relationships of symbol #4 1:
•> #•> 1

The relationships of symbol #5 0:
=• 1•> 0•> `A'•> `B'•> `C'•> `D'•> `B1'•> `B2'

The relationships of symbol #6 `T':

The relationships of symbol #7 `S':
=• #

The relationships of symbol #8 `A':
•> #=• 1

The relationships of symbol #9 `B':
•> #=• 1

The relationships of symbol #10 `C':
<• 0=• `A'<• `C'

The relationships of symbol #11 `D':
<• 0=• `B'<• `D'<• `B1'<• `B2'

The relationships of symbol #12 `B1':
=• 1

The relationships of symbol #13 `B2':
=• 1


Grammar G41.grm is a precedence grammar

Grammar G41.grm is not invertible


Left Context


Symbol#ab10TSABCDB1B2
6.T0000000000000
7.S*000000000000
8.A0*0000000*000
9.B00*0000000*00
10.C0*0000000*000
11.D00*0000000*00
12.B100*0000000*00
13.B200*0000000*00

Right Context


Symbol#ab10
6.T00000
7.S*0000
8.A*00*0
9.B*00*0
10.C0000*
11.D0000*
12.B1000*0
13.B2000*0


Independent context

`T' left context:
`T' right context:

`S' left context: #
`S' right context: #

`A' left context: a , `C'
`A' right context: # , 1

`B' left context: b , `D'
`B' right context: # , 1

`C' left context: a , `C'
`C' right context: 0

`D' left context: b , `D'
`D' right context: 0

`B1' left context: b , `D'
`B1' right context: 1

`B2' left context: b , `D'
`B2' right context: 1


Equivalent definitions:
`A' —> 0 1 & `B1' —> 0 1
`A' left context: a , `C'
`A' right context: # , 1

`B1' left context: b , `D'
`B1' right context: 1


The left context of `A' and `B1' is different

Equivalent definitions:
`C' —> 0 & `D' —> 0
`C' left context: a , `C'
`C' right context: 0

`D' left context: b , `D'
`D' right context: 0


The left context of `C' and `D' is different

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


Semantics

Semantics file is G41.sem
#=1
a=2
b=3
1=4
0=5
P1=6 $P 1: `T' -> # `S' #
P2=7 $P 2: `S' -> a `A'
P3=8 $P 3: `S' -> b `B'
P4=9 $P 4: `A' -> `C' `A' 1
P5=10 $P 5: `A' -> 0 1
P6=11 $P 6: `B' -> `B2' 1
P7=12 $P 7: `B' -> `B1' 1
P8=13 $P 8: `C' -> 0
P9=14 $P 9: `D' -> 0
P10=15 $P10: `B1' -> 0 1
P11=16 $P11: `B2' -> `D' `B' 1

Result tables


FileSize
G41.prm28
G41.pm196
G41.t280
G41.tt120
G41.ht1468
G41.sm72
G41.v728
G41.lc196
G41.rc196

Look at result tables

Finish of CONSTRUCTOR Sat Apr 03 15:54:14 2004