任何可以生成的语言LL1语法都是常规的。真假

时间:2014-04-03 22:36:27

标签: context-free-grammar regular-language compiler-construction

我正在阅读有关语法的内容,我有一个问题是LL(1)语法生成的每种语言都是常规的吗?我知道LL(1)语法可以生成每种常规语言。

1 个答案:

答案 0 :(得分:1)

没有。例如,采用以下语法:

E  ->  TE' | T
E' -> +TE' | -TE' | T
T  ->  FT' | F
T' -> *FT' | /FT' | F
F  ->  cte | (E)

这是众所周知的算术表达式语法,用LL(1)形式编写。它也是一种众所周知的非常规语言,因为它包含Dick语言(平衡括号)。这当然不是这种语言不规则的正式证明,但使用抽取引理证明并不是很困难,而且应该很容易在网上找到。