【问题标题】:BNF grammar for a palindrome回文的 BNF 语法
【发布时间】:2015-06-21 05:56:42
【问题描述】:

我需要关于非扩展 BNF 语法的帮助:

  • Σ = {a,b}

  • L = {ω ɛ Σ^* |使得 w 等于 ω}

  • 的倒数

例如,字符串 aba、bab 和 ababa 在语言中,但字符串 ababab 不是。

我不确定这是否是一个解决方案,但这是我在网上找到的,我想知道我是否朝着正确的方向前进:

<palindrome> ::= a <palindrome> a | b <palindrome> b |
                 c <palindrome> c | d <palindrome> d | 
                 e <palindrome> e | ...
                                  | z <palindrome> z
<palindrome> ::= <letter>
<letter>     ::= a | b | c | ... | y | z

【问题讨论】:

  • @arkascha 这不是作业问题。这是我在下周参加考试之前尝试解决的练习题之一。
  • @arkascha 这就是答案 - ::= a a | b b | c c | d d | e e | ... | z z ::= ::= a |乙 | c | ... |是 | z
  • @arkascha 将不胜感激,即使你能指导我一点。这里的问题是我试图找到可能的信息来解决这个问题并且不知道如何解决这个问题。我发布了一个可能的解决方案,想知道您是否可以告诉我这是否正确?
  • @arkascha 是 w 代表字符串,开头应该是左大括号 { 并以右大括号 } 结尾。总和将是 sigma
  • 西格玛?看不出来……

标签: bnf ebnf


【解决方案1】:

至少你必须包含偶数个字符的单词,所以:

<palindrome> ::= a | b | aa | bb | a<palindrome>a | b<palindrome>b

【讨论】:

  • 我听到了,所以如果你能引导我完成正确的做法是什么?
  • 这就是为什么我询问“任意但固定”的表达方式。在谷歌上找不到。该死,太早了:-) 寻找一个表达式来表示第一行中的“a”出现在符号之前和之后,其中“a”可以是任意但固定的字符。但是,定义了一个字符。这将节省我觉得不对劲的枚举。
  • 你能告诉我这是否是正确的解决方案 - aabb a aba bbaa b aab aabaa aa bbb baa
  • 问题是我对这个概念知之甚少。
  • 我可能会选择&lt;palindrome&gt; ::= &lt;letter&gt; | &lt;empty&gt;,其中空表示没有字母。但它的定义并不明确——EBNF 的优势之一。请注意,您不需要允许使用双字母;这由 a &lt;palindrome&gt; a&lt;palindrome&gt; := &lt;empty&gt; 等规则处理。
猜你喜欢
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-17
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
相关资源
最近更新 更多