【问题标题】:Meaning of ECMAScript notation syntax?ECMAScript 符号语法的含义?
【发布时间】:2020-09-23 04:55:47
【问题描述】:

我对如何正确阅读 this syntax line 感到困惑。

  • 为什么IdentifierName 是用IdentifierName 定义的?
  • 为什么定义中间有一个换行

如何阅读这个符号?

语法

标识符名称 :: 标识符开始 IdentifierName IdentifierPart

【问题讨论】:

    标签: ecmascript-6 ecmascript-next


    【解决方案1】:

    这是一个递归定义,在语法符号中并不少见。

    IdentifierNameIdentifierStartIdentifierName IdentifierPart 组成。如果我们再次在第二种选择中扩展IdentifierName,我们会得到 ​​p>

    IdentifierStart IdentifierPart
    IdentifierName IdentifierPart IdentifierPart
    

    等等。

    以非正式的方式表达这一点:IdentifierNameIdentifierStart 后跟任意数量的IdentifierParts 组成。


    来自specifiction itself

    再举一个例子,句法定义:

    ArgumentList:
      AssignmentExpression
      ArgumentList,AssignmentExpression
    

    表示ArgumentList 可以表示单个AssignmentExpressionArgumentList,后跟逗号,再后跟AssignmentExpressionArgumentList的这个定义是递归的,也就是说,它是根据自身定义的。结果是ArgumentList 可以包含任何正数的参数,用逗号分隔,其中每个参数表达式都是一个AssignmentExpression。这种非终结符的递归定义很常见。

    【讨论】:

    • 你的意思是我们得到了 IdentifierStart IdentifierStart IdentifierName IdentifierPart IdentifierPart,对吧?
    • 没有。我可能写得不够清楚:IdentifierName IdentifierPart 扩展为 IdentifierStart IdentifierPart (IdentifierName -> IdentifierStart) 或 IdentifierName IdentifierPart IdentifierPart (IdentifierName -> IdentifierName IdentifierPart)。
    猜你喜欢
    • 1970-01-01
    • 2013-07-18
    • 2018-09-16
    • 1970-01-01
    • 2012-06-12
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    相关资源
    最近更新 更多