2017-08-28 68 views
1

Context free grammar定义的四个组成部分开始symbol`:是'目标symbol`同样的事情在`上下文无关文法

  • 一组非终端(V)的...

  • 一组令牌,称为终端码元(Σ)的...

  • 一组生产(P)的...

  • 其中一个非终端被指定为开始符号(S);从 开始生产。

The EcmaScript specification没有提到开始符号,而是提到了目标符号

从由单一的杰出 非终结的句子开始,被称为目标符号,给定的上下文无关语法 指定语言,即,可能由重复 替换序列中的非终端与非终端为左侧的生产的右侧的可能的 终端符号序列(可能无限)。

从这个定义我也许可以得出结论:这一目标符号实际上是一个开始符号只是一个名称,但goal symbol名称使用,因为有不同的起始符号“类别”:

在几种情况下,词汇输入 元素的识别对消耗输入元素的句法语法上下文敏感。这要求词汇语法的多个目标符号为 。

那么目标符号是CFG上下文中的开始符号的另一个名称?

+0

什么是接近的选票的原因是什么? –

+0

可能是因为它超出了常见的SO回答者的知识吗? ;) –

+0

@Jonasw,是的,我仍然希望有人了解该级别的EcmaScript –

回答

1

你引用的只是CFG的一个定义 - 还有其他的定义。例如,从here

一个语法是4元组:

  1. 一组终端符号(即,语言的有效“字”)。
  2. 一组非终端符号(即语言的“词性”)。
  3. 一套规则被称为生产它可以将每个非终端转换成一个终端序列。
  4. 开始符号目标符号,非端以产生(例如,在英国:把“句子”)。

从我粗略的网络搜索,似乎在讨论解析器当术语“目标符号”更常用。我猜这是因为有自下而上的解析器,例如LR-parsers,其中算法没有开始与目标符号。

顺便说一句,从ECMAScript的规范的特定段落似乎从Java Language Specification字面拷贝 - 这样你就可以对他们的指责什么:-)

+0

感谢您的确认! _似乎从字面上从Java语言规范复制 - 这也是我注意到的。 @Pointy建议我开始看Java规范,并注意到完整的段落类似于单词。 –