【解答】当采用自上而下的方式来构造其语法树时,如下:
S
/ | \
b A b 1 //(((aa)a)a)
/ \
( B 2 //((aa)a)a)
/|\
A a ) 4 //((aa)a)
/ \
( B 2 //(aa)a)
/|\
A a ) 4 //(aa)
/ \
( B 2 //aa)
/|\
A a ) 4 //a
|
a 3 //
这里题目采用的是自下而上的分析方式,则其输出序列为34242421
【例3.1】构造产生标识符的文法
【解答】
标识符有字母开头,有字母和数字组成的字母数字串。
(1)定义字母集: D--> a|b|c|...|z
(2)定义数字集: L--> 0|1|2|...|9
(3)定义字母或数字: T --> L|D
(4)定义字母数字串: S --> T|ST
(5)定义标识符: I --> L|LS
故产生的文法G[I]为:
G[I]=({0,1,...a,b,..z},{D,L,T,S,I},I,s)
s:
I --> L|LS
S --> T|ST
T --> L|D
D --> a|b|c|..|z
L --> 0|1|2|3|...|9
【例3.2】写一个文法使其语言是奇数集合,但不允许出现以0开头的奇数
【解答】
(1)定义最高位:F --> 1|2|3|...|9
(2)定义最低位:B --> 1|3|5|7|9
(3)定义中间部分:M --> 0|1|2|...|9
(4)定义非最低位:S --> F|FM
(5)定义非零开头的奇数: I --> S|SB
故产生的文法为:
G[I] = ({0,1,2,...9},{F,B,M,S,I},I,s)
s:
I --> S|SB
S --> F|FM
M --> 0|1|2|...|9
B --> 1|3|5|7|9
F --> 1|2|...|9
9、文法的分类
----------------------------------------------
(1)0型文法: a-->b,其中a 至少含有一个非终结符,识别的系统是图灵机。
(2)1型文法: aAb --> acb,上下文有关文法,A只有在上下文中才可以被替换。
(3)2型文法: A --> a 其中a是终结符
(4)3型文法: A --> a 或 A --> aB
【习题3.6】有文法G[S]: S→aAcB|Bd
A→AaB|c
B→bScA|b
(1) 试求句型aAaBcbbdcc和aAcbBdcc的句柄;
(2) 写出句子acabcbbdcc的最左推导过程。
【解答】
(1)构造其分析语法树
s
/ / \ \
a A c B
/|\ / | | \
A a B b S c A
/ \ |
B d c
|
b 所以句柄为AaB
s
/ / \ \
a A c B
/ / \ \
b S c A
/ \ |
B d c 所以句柄为Bd
(2)acabcbbdcc
S
/ / \ \
a A c B
/|\ \ \ \ \
A a B b S c A
| | /\ |
c b B d c
|
b
所以推导过程为:S aAcB aAaBcB acaBcB acabcB acabcbScA
acabcbBdcA acabcbbdcA acabcbbdcc
【习题3.7】对于文法G[S]: S→(L)|aS|a
L→L,S|S
(1) 画出句型(S,(a))的语法树;
(2) 写出上述句型的所有短语、直接短语、句柄、素短语和最左素短语。
【解答】
(1)
S
/ | \
( L )
/|\
L , S
| / | \
S ( L )
|
S
|
a
(2)短语:S,a,(a),S,(a),(S,(a))
直接短语:a,S
句柄: S
素短语:a
最左素短语:a
【例3.7】下面是LL(1)分析表,试对输入串aadl的分析过程。
a b l d #
A A->aA'
A' A'->ABl A'->e A'->e
B B ->dB'
B' B'->bB' B'->e
【解答】
符号栈 当前符号 输入串
#A a adl#
#A'a a adl#
#A' a dl#
#lBA a dl#
#lBA'a a dl#
#lBA' d l#
#lB d l#
#lB'd d l#
#lB' l #
#l 1 #
# #
【习题3.10】已知文法G[A]: A→aABl|a
B→Bb|d
(1) 试给出与G[A]等价的LL(1)文法G[A′];
(2) 构造G[A′]的LL(1)分析表;
(3) 给出输入串aadl#的分析过程。
【解答】
(3)符号栈 当前符号 输入串
#A a adl#
#A'a a adl#
#A' a dl#
#lBA a dl#
#lBA'a a dl#
#lBA' d l#
#lB d l#
#lB'd d l#
#lB' l #
#l 1 #
# #