正式语法可以生成其他语法吗?

时间:2016-03-01 19:23:31

标签: computer-science grammar pushdown-automaton

我在计算类的模型中,我们只是涵盖了正式的语法。 正如我们所定义的那样,正式语法是:

  • 一些终端符号
  • 一些非终结符号
  • 起始符号
  • 一些制作规则

鉴于语法生成字符串,你可能会选择一种会产生另一种语法的语法。几分钟的搜索似乎在这方面没有多少讨论。我的问题主要是:

  • 这是计算机科学中一个有趣的问题吗?
  • 你能通过生成生成它们的语法来压缩语法,还是复杂性不可简化?

2 个答案:

答案 0 :(得分:0)

有许多形式主义 - 例如BNF符号 - 描述语法,它们本身可以用无语境语法中的字符串表示。

但我不确定这是你在想什么。语法(通常)不存在表示单个字符串;相反,语法描述了一组(通常是无限的)字符串,而没有归结为任何语义。

"命名"的性质意味着无法用无上下文语法捕获像BNF(或者很好的任何编程语言)这样的形式主义的语义。关联"名称"在一个字符串中出现相同的" name"是典型的上下文敏感。

因此,存在一个CFL,它是所有语法(具有给定字母表)的表示集,但绝大多数表示不与有用甚至有意义的语法相对应。在典型的派生字符串中,生产右侧的符号实际上不会出现在任何规则的左侧,并且要求它们不能用CFG表示。

答案 1 :(得分:0)

产生另一种语法的语法问题很有趣,它有一个名称和一些文献 - 请参阅https://en.wikipedia.org/wiki/Two-level_grammar及其中的链接。

是的,你当然可以实现压缩,因为生成的语法可能实际上是无限的。

相关问题