编译原理——语法分析题目解析
上下文无关文法怎么求?
题目1:3.5按指定类型,给出语言的文法。
(1)的上下文无关文法;
(2) 字母表Z={a,b}上的、同时只有奇数个a和奇数个b的所有串的集合的正规文法;
(3) 由相同个数a和b组成句子的无二义文法。
解:
(1)题目给出的意思是,有i个a, j 个b, b的个数永远比a多。对题目要求进行拆解分析:
有 i 个a, j 个 b——S-> aSb
b 比 a 多 ,那说明 S 在推导的时候必须要有1个b ——S -> Sb | b
最后的结果就是:
(2) 先画出输入串的DFA图:
- 可以想一下,输入a , b 的情况无非4种,每种情况我们用一个非终结符来表示:
- S——偶数个a , 偶数个b(也是开始状态)
- A——奇数个a,偶数个b