【问题标题】:Grammar to Regular Expression [closed]语法到正则表达式[关闭]
【发布时间】:2014-02-21 17:25:42
【问题描述】:

找到接受给定语法的相同语言的正则表达式的过程步骤是什么?

  • S --> b | AA
  • A --> aA |艾伯 | ε

【问题讨论】:

  • 如果你想得到答案,我认为你将不得不更彻底地解释你想要做什么。你还尝试过什么?什么不适合你?你需要表现出你的一些努力。没有人会为您编写代码。
  • 这不是编程问题,而是计算机科学:cs.stackchange.com
  • 请不要将答案用作问题。您可以将此信息编辑到您的问题中。

标签: context-free-grammar regular-language left-recursion automata-theory


【解决方案1】:

我正在写一些试图理解的东西(希望它会有所帮助):

  1. 根据S --> b,字符串'b'是语法语言中的字符串。

  2. 使用A 的产生式A --> aA | &,我们可以生成:“A 后跟任意数量的as”,或者在 RE 中:a*A(* 因为 epsilon)

  3. 同样,使用A ---> Abb | &,我们可以生成“任意数量的bbs 后跟A”,或者在RE:A(bb)*(* 因为epsilon)

  4. 使用A使用2和3可以生成:a*(bb)*

  5. 请注意,变量最终必须转换为终端,因此 A 可以转换为 abb&

  6. 从 4 开始,使用 AA 我们可以生成:a*(bb)*a(bb)*

所以语法生成的语言是b + a*(bb)*a(bb)*

对于程序阅读这个答案:Constructing an equivalent Regular Grammar from a Regular Expression我从RE解释到语法,我觉得这个答案会帮助你更好地理解。

【讨论】:

  • 1.OK 2.A 后面是任意数量的a? 3.它是 A 后跟任意数量的 bb s? 4.它会是一个A(bb) 吗? 5.OK 6.OK 我可以开始使用与上面的文法 G 等价的文法 G1 并且没有 ϵ-产生式吗?我的意思是 S -->b|AA|A ; A-->aA|Abb|a|bb 。哪个是最好和最简单的程序?您在第一个答案中是否有这些规则适用于语法的文档?
  • @Whando 首先了解我链接的答案,然后只有我可以提供帮助。
  • 我学会了。您发布的规则足以找到任何语法的解决方案(正则表达式)吗?我可以简化语法以避免 ϵ-产生式,还是不建议这样做?谢谢
  • ... ... ) 适用于任何常规(左或右)语法。
  • @Whando 我可以在@周末回答你...只要阅读这个链接的答案和链接到那个答案的答案。
【解决方案2】:

语法:

  • S --> AS|a
  • A --> SA|b

    1. 根据 S --> a,字符串 a 是语法语言。
    2. 根据 A --> b,字符串 b 是语法语言。
    3. 使用 A --> SA,我们可以生成 A-->SA ; A-->SSA ; A-->SSSA ; ...
    4. 使用 S --> AS,我们可以生成 S-->AS ; S-->原子吸收光谱法; S-->AAAS ; ...

我怎样才能得到正则表达式,这个语法的解决方案?


这些规则有用吗?

  • x=yx+t 解是 y*t
  • x=xy+t 解是 ty*

S=AS+a;A=SA+b

S=A*a ; A=S*b


从 A=SA+b 和 S=AS+a

  • 我得到 A=S*b 和 S=S*bS+a
  • 所以我得到 S=(S*b)*a
  • S=(a*b)*a

正确的@GrijeshChauhan ??

【讨论】:

  • According to A --> b, string b is in language of grammar.,只有语法语言的字符串可以考虑使用S起始变量生成的字符串.当然'b' 可以使用A 生成,但b 不是语法语言的一部分。语法语言中最小的字符串是a。第二小的可以是babb
  • @GrijeshChauhan ...我犯了一个错误,你是对的,来自非终结符 A 的字符串 'b' 不是由公理 S 语法生成的语言的一部分。---Is S= (ab)*a 生成与此语法相同的语言的正则表达式解决方案?为了确保找到正确的正则表达式,我必须生成多少个递归句型?(例如 S=Aa;A=Sb --- S=(Sb) *a --- S=((Aa)*b)*a --- S=(((Sb)*a)*b)*a .)
猜你喜欢
  • 1970-01-01
  • 2017-11-13
  • 1970-01-01
  • 2012-04-08
  • 2021-06-29
  • 2015-04-27
  • 2016-04-12
  • 1970-01-01
相关资源
最近更新 更多