LL(1)文法例题

📅 2026/7/15 23:45:28 👁️ 阅读次数 📝 编程学习
LL(1)文法例题

已知文法G(S)如下,回答以下问题:

S → A

A → B A'

A' → = A | ε

B → C B'

B' → + B | ε

C → (A) |i

(1) 计算每个非终结符的 FIRST 和 FOLLOW 集合

(2)证明文法是 LL (1) 的

(3)构造预测分析表

(4)构造递归下降分析程序

(5)按顺序写出对句子i+i进行预测分析时,分析栈的状态

4.递归下降分析程序

void S() {

A();

}

void A() {

B();

A1();

}

void A1() {

if (lookahead == '=') {

match('=');

A();

} else {

// A' → ε

return;

}

}

void B() {

C();

B1();

}

void B1() {

if (lookahead == '+') {

match('+');

B();

} else {

// B' → ε

return;

}

}

void C() {

if (lookahead == '(') {

match('(');

A();

match(')');

} else if (lookahead == 'i') {

match('i');

} else {

error();

}

}

void match(char t) {

if (lookahead == t) {

lookahead = nextToken();

} else {

error();

}

}

lookahead = nextToken();

S();

if (lookahead == '#') {

printf("分析成功");

} else {

error();

}