对于给定文法:
exp->exp1
exp1->exp2 | exp5
exp5->exp1 (“<” | “>” | “==”) exp2
exp2->exp3 | exp6
exp6->exp2 (“+” | “-“) exp3
exp3->exp4 | exp7
exp7->exp3(“*” | “/”) exp4
exp4->”(“ exp “)”
生成ε-Parser得:
1 ε- Parser:
2 Start:28
3 X: Type From To
4 (: 0 0 1(finial)
5 ): 0 2 3(finial)
6 ε: 2 1(finial) 0
7 ε: 2 1(finial) 2
8 *: 0 4 5(finial)
9 /: 0 6 7(finial)
10 ε: 2 8 4
11 ε: 2 5(finial) 9(finial)
12 ε: 2 8 6
13 ε: 2 7(finial) 9(finial)
14 ε: 2 3(finial) 8
15 ε: 2 9(finial) 8
16 ε: 2 10 0
17 ε: 2 3(finial) 11(finial)
18 ε: 2 10 0
19 ε: 2 9(finial) 11(finial)
20 +: 0 12 13(finial)
21 -: 0 14 15(finial)
22 ε: 2 16 12
23 ε: 2 13(finial) 17(finial)
24 ε: 2 16 14
25 ε: 2 15(finial) 17(finial)
26 ε: 2 11(finial) 16
27 ε: 2 17(finial) 16
28 ε: 2 18 10
29 ε: 2 11(finial) 19(finial)
30 ε: 2 18 10
31 ε: 2 17(finial) 19(finial)
32 <: 0 20 21(finial)
33 >: 0 22 23(finial)
34 ==: 1 24 25(finial)
35 ε: 2 26 20
36 ε: 2 21(finial) 27(finial)
37 ε: 2 26 22
38 ε: 2 23(finial) 27(finial)
39 ε: 2 26 24
40 ε: 2 25(finial) 27(finial)
41 ε: 2 19(finial) 26
42 ε: 2 27(finial) 26
43 ε: 2 28 18
44 ε: 2 19(finial) 29(finial)
45 ε: 2 28 18
46 ε: 2 27(finial) 29(finial)
缺点:必须手动生成文法树
下一步是去除ε边
posted on 2010-07-09 17:45
lwch 阅读(372)
评论(0) 编辑 收藏 引用 所属分类:
NScript