【问题标题】:Can someone give a simple but non-toy example of a context-sensitive grammar? [closed]有人可以举一个上下文相关语法的简单但非玩具示例吗? [关闭]
【发布时间】:2012-12-15 07:06:57
【问题描述】:

我正在尝试理解上下文相关的语法,并且我理解为什么语言喜欢

  1. {ww | w 是一个字符串}
  2. {an bn cn | a,b,c 是符号}

不是上下文无关的,但我想知道类似于无类型 lambda 演算的语言是否对上下文敏感。我想看一个简单但非玩具的示例(我考虑上面的玩具示例),上下文相关语法的示例,对于某些生产规则,例如,判断是否有一些符号字符串当前在范围内(例如,在生成函数体时)。上下文相关的语法是否足够强大,可以使未定义/未声明/未绑定的变量成为语法(而不是语义)错误?

【问题讨论】:

标签: grammar automata computation-theory language-theory context-sensitive-grammar


【解决方案1】:

是的,上下文相关语法 (CSG) 足够强大,可以检查未定义/未声明/未绑定的变量,但不幸的是,我们不知道任何有效的算法来解析 CSG 字符串。

上下文相关语言的一个真实例子是 C 编程语言。像先声明变量然后再使用它们这样的特性使 C 语言成为 context-sensitive language (CSL)。 (我不知道无类型的 lambda 演算)。

因为我们不知道 CSL(或 CSG)的任何线性解析算法。这就是编译器设计中的原因,我们使用 CFG(及其解析算法)进行语法检查,因为我们知道解析 CFG 的有效算法(如果它是受限形式)。编译器首先解析上下文无关的特征,然后以有问题的方式处理上下文相关的特征(例如,检查符号表中是否已定义任何使用的变量。否则,它会产生错误)。

natural-language processing (NLP) 中也使用了上下文相关语法。大多数自然语言都是上下文相关语言的例子。 (我不确定Sanskrit 语言)。

我会尝试用一个但简单的例子来解释它(这只是一个想法,你可以完善它):

NOUN     -->  { BlueBomber, Grijesh, I, We}
TENSE    -->  { am, was, is, were}
VERB     -->  { going, eating, working}

SENTENCE --> <NOUN> <TENSE> <VERB>

现在,使用这个语法,我们可以生成一些正确的语句,但也有一些是错误的。例如,

SENTENCE --> <NOUN>   <TENSE>   <VERB>
             Grijesh    is       working       [Correct statement]

但是

             Grijesh    am       working       [wrong statement]

原因: 的值取决于 值(例如,I &lt;TENSE&gt; --&gt; I am),因此语法不会生成正确的英语语句。

实际上我们无法为完整的英语编写上下文无关的语法!

您可能已经注意到,任何自然语言翻译器或语法检查器都无法正常工作(尝试使用长语句)。因为这个问题属于上下文相关的解析算法。


参考:您可以观看Dr. Arun Kumar's lectures在一些讲座中,他准确地解释了你感兴趣的内容。

【讨论】:

  • 感谢您提供的信息,这无疑会对其他对同一主题感兴趣的人有所帮助,但这仅与我要问的问题部分相关。我并不关心解析由 CSG 生成的字符串,而是看一个简单的——甚至是愚蠢的——正式的 CSG 示例,它生成格式良好的抽象(函数体内没有未绑定的变量)。我可以想象一个 CSG 生成正确的“英语”字符串,因为单个符号可以指导主语/动词的一致性,但对于抽象,变量通常由多个符号组成。
  • @BlueBomber :谢谢我一定会回答你,它在印度的夜晚..N 新年快乐! :)
  • @BlueBomber ask your question here ..我会自己试试 ..你可以标记移动问题
  • 看来我只能这样做有限的次数,根据(this)[meta.scicomp.stackexchange.com/questions/156/…,我应该删除这个问题并在更合适的地方重新发布......跨度>
  • @BlueBomber 我已标记为转移,您也可以这样做。
猜你喜欢
  • 2010-12-17
  • 2016-01-23
  • 1970-01-01
  • 1970-01-01
  • 2021-09-02
  • 1970-01-01
  • 2012-10-25
  • 2017-11-26
  • 1970-01-01
相关资源
最近更新 更多