一:由文法G1构造LR(1)部分分析表:
1.列出4个项目集I0,I1,I2,I3;(如下图)
2.填写LR(1)分析表的状态0,1,2的action和goto表的内容.(如下图)
G1: (0) S→T
(1) T→T(T)
(2) T→ε
┌──────┐ ┌──┐ ┌──┐ ┌──┐
│I0:S→·T,# │ T │I1: │ ( │I2: │ T │I3: │
│ │ -→│ │-→ │ │-→ │ │
└──────┘ └──┘ └──┘ └──┘
┌──┬────────┬───┐
│ │ action │ goto │
│状态├──┬──┬──┼───┤
│ │ ( │ ) │ # │ T │
├──┼──┼──┼──┼───┤
│ 0 │ │ │ │ │
├──┼──┼──┼──┼───┤
│ 1 │ │ │ │ │
├──┼──┼──┼──┼───┤
│ 2 │ │ │ │ │
├──┼──┴──┴──┼───┤
│ │ │ │
│... │ ... │ ... │
│ │ │ │
└──┴────────┴───┘
二:已知文法G2,请用类pascal语言写出它的递归下降分析程序.
G2: A→[B
B→X]|BA
X→Xa|Xb|a|b
三:已知文法G3,要求:
1.写出各非终极符的首终极符集合和尾终极符集合;
2.填写opt表:
│ + │ * │ @ │ ↑ │ i │ # │
──┼──┼──┼──┼──┼──┼──┤
+ │ │ │ │ │ │ │
──┼──┼──┼──┼──┼──┼──┤
* │ │ │ │ │ │ │
──┼──┼──┼──┼──┼──┼──┤
@ │ │ │ │ │ │ │
──┼──┼──┼──┼──┼──┼──┤
↑ │ │ │ │ │ │ │
──┼──┼──┼──┼──┼──┼──┤
i │ │ │ │ │ │ │
──┼──┼──┼──┼──┼──┼──┤
# │ │ │ │ │ │ │
──┼──┼──┼──┼──┼──┼──┤
│ │ │ │ │ │ │
G3: E→E+T|T|@T
T→T*F|F
F→p↑F|P
p→i
四:请写出产生下列语言的文法.
1. L1={a^ib^j|i>j>=1}
2. L2={ω1|ω1∈{0,1}*&ω1中包含0,1个数相等的任意串}
3. L3={ω2|ω2∈{a,b}*&ω2中a之后必定跟b}
4. L4={ω3+ω3|ω3∈{0,1}*}
五:简要回答问题.
1.对编译程序而言,模块,遍,子程序这三个概念的主要区别?
2.静态存储分配与动态存储分配的主要区别?
3.何谓自适应线性表?
六:翻译如下布尔表达式成四元式序列,结果留待填的真假链的四元式序号.
A∧B-C