在EBNF中定义语言

时间:2009-04-05 23:17:01

标签: grammar bnf ebnf

为由Lab字符组成的语言c提供EBNF规范,使语言中的句子具有

L : sqsR

-s   is a string of any combination of the characters a and b
-sR  is that same string s reversed
-q   is an  odd number of c's followed by either an odd number of b's
     or an even number of a’s.

到目前为止我所拥有的:

L -> S
S -> {a}{b}Q
Q -> 

如果这是正确的,我仍然不确定如何从Q生成,以及如何反向代表S

2 个答案:

答案 0 :(得分:2)

这是一个字符串,以相同的字符串开头和结尾,但相反:

X -> aXa
  -> bXb

这是一个奇数c的字符串:

Y -> cY2
Y2 -> ccY2

我遗漏了一些关键部分,但希望这可以让你开始。

答案 1 :(得分:1)

  • 尝试从中间构建前两部分
  • 您可以通过从一个项目开始并添加N * 2个附加项目(对于整数N)来强制执行奇数次重复。这应该建议如何强制使用偶数