编译原理(一)

下列正则表达式定义了什么语言(用尽可能简短的自然语言描述)

b*(ab*ab*)*

由 a 和 b 构成的字符串,a 出现了偶数次。

c*a(a|c)*b(a|b|c)*|c*b(b|c)*a(a|b|c)*

由 a、b 和 c 构成的字符串,a 和 b 都至少出现一次。

设字母表 $\sum=\lbrace a,b\rbrace $,用正则表达式(只使用 $a$,$b$,$\varepsilon$,$\vert$,*,$+$,$?$)描述下列语言

注意:关于子串(substring)和子序列(subsequence)的区别可以参考课本第 119 页方框中的内容。

不包含子串 ab 的所有字符串

b*a*

不包含子串 abb 的所有字符串

b*(ab?)*

不包含子序列 abb 的所有字符串

b*a*b?a*