【问题标题】:Defining a language in EBNF在 EBNF 中定义语言
【发布时间】:2009-04-05 23:17:00
【问题描述】:

给出由字符 abc 组成的语言 L 的 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

【问题讨论】:

  • 请自己做功课。
  • 为什么?你不喜欢帮助学生?
  • 我们这里不人家作业,但我们愿意提供帮助。 John 让我们了解了他在哪里卡住了,因此可以掌握在不给他解决方案的情况下什么样的建议会有所帮助......

标签: grammar bnf ebnf


【解决方案1】:

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

X -> aXa
  -> bXb

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

Y -> cY2
Y2 -> ccY2

我遗漏了一些关键的部分,但希望这可以帮助您入门。

【讨论】:

  • 谢谢,我看到奇数的 c 是如何工作的,但我对 X 生产如何反转字符串有点困惑。
  • 如果您尝试使用 X 规则生成一些字符串,这可能会有所帮助 - 从 a 或 b 的某种组合开始,看看您最终会得到什么
  • 我认为语法只是让我感到困惑; X -> aXa 似乎是左递归的,你将如何从中得到 -> bXb?
  • 语法对我来说意味着 X 是 aXa 或 bXb,递归
  • 啊,我知道它现在是如何工作的了。非常感谢您的帮助:)
【解决方案2】:
  • 尝试从中间向外构建前两个部分
  • 您可以通过仅从一项开始并添加 N*2 附加项(对于整数 N)来强制重复奇数次。这应该会建议如何强制使用偶数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多