ecmascript-6 - ECMAScript 符号语法的含义?
问题描述
我对如何正确阅读此语法行感到困惑。
- 为什么
IdentifierName
用 定义IdentifierName
? - 为什么定义中间有一个新行?
如何阅读这个符号?
句法
标识符名称 :: 标识符开始 IdentifierName IdentifierPart
解决方案
这是一个递归定义,在语法符号中并不少见。
IdentifierName
由IdentifierStart
或组成IdentifierName IdentifierPart
。如果我们IdentifierName
再次扩展第二种选择,我们会得到
IdentifierStart IdentifierPart
IdentifierName IdentifierPart IdentifierPart
等等。
用一种非正式的方式来表达这一点:IdentifierName
由 组成,IdentifierStart
后跟任意数量的IdentifierPart
s。
从规范本身:
再举一个例子,句法定义:
ArgumentList: AssignmentExpression ArgumentList,AssignmentExpression
声明 an
ArgumentList
可以表示单个AssignmentExpression
或一个ArgumentList
,后跟一个逗号,然后是一个AssignmentExpression
. 这个定义ArgumentList
是递归的,也就是说,它是根据自身定义的。结果是 anArgumentList
可以包含任何正数的参数,用逗号分隔,其中每个参数表达式都是一个AssignmentExpression
. 这种非终结符的递归定义很常见。
推荐阅读
- typescript - 如何编写具有可选未知属性名称但已知属性类型以及命名和类型化属性的类型
- python-3.x - 如何在softmax层之前向keras vgg16添加计算(例如log和sqrt root)
- node.js - 如何在无论如何都被调用的链末尾添加快速中间件(OK/FAIL 响应)?
- excel - 如何使用具有多个参考号的 INDEX 和 AGGREGATE
- wordpress - 我无法连接到网络服务器
- flutter - Flutter:向文本字段中输入的用户电话号码添加连字符和括号
- c# - 澄清 `.dll.refresh` 文件、源代码管理和构建 asp.net 网站项目
- java - 无法从 Java 将布尔首选项存储到 Windows 10 注册表,而整数和字符串已正确存储
- c++ - 什么可能导致在不同角度获得完全相同的三角函数输出
- python - 退出定义中的循环