使无上下文语法更简单(更漂亮)

时间:2011-11-20 04:31:56

标签: context-free-grammar chomsky-normal-form

我正在与CFG合作,每当我为特定语言编写规则时,我的CFG最终会令人厌恶。它最终成为一行:

S->tooooooo much stuff

我知道把东西放到正常形式的chomsky中会使它格式正确,而且事情会更漂亮但是我想知道是否有任何想法要记住这些看起来不那么混乱。

即,郎:

a^n b^m, where n >= m

我的CFG(总计):

S -> Sa|Sab|Sba|aS|aSb|abS|bSa|baS|ε

任何人都可以帮助我养成坏习惯吗?

1 个答案:

答案 0 :(得分:1)

您真的需要使用CFG来描述这种简单的语言吗?只计算a和b的数据要容易得多。

但假设这只是一个例子......

实际解析器中的CFG通常将每行分成一个生产,并以合理的方式对它们进行分组。

S -> a b S
   | b a S
   | a S
   | a S b
   | b S a
   | ε