我最近对 ecma262 规范的制作感到困惑。
有些作品是基于我的假设,也可以是其他作品。
例如,陈述
陈述可以是一个Block它也可以是一个如果语句.
我的困惑始于看起来像这样的算法
A。令 stmtCompletion 为评估第一个的结果陈述.
评估声明?这是什么意思?
if a 陈述,例如,是一个如果语句它会去14.6 if 语句 14.6.2 运行时语义:求值 https://tc39.es/ecma262/#sec-if-statement-runtime-semantics-evaluation ?
我最困惑的是因为有些作品有自己的RS:评估 like 如果语句有些没有RS:评估 like 陈述,宣言, etc...
If a 陈述,例如,是一个如果语句它会去14.6 if 语句 14.6.2 运行时语义:求值 https://tc39.es/ecma262/#sec-if-statement-runtime-semantics-evaluation?
Yes.
我最困惑的是因为有些作品有自己的RS:评估 like 如果语句有些没有RS:评估 like 陈述,宣言, etc...
这是什么意思?
(在最近的规范修订中)甚至在§5.2.2 语法导向的操作 https://tc39.es/ecma262/#sec-algorithm-conventions-syntax-directed-operations。尤其,
除非另有明确指定,否则所有链产生式对于可能应用于该产生式左侧非终结符的每个操作都有隐式定义。隐式定义只是将具有相同参数(如果有)的相同操作重新应用于链产生式的唯一右侧非终结符,然后返回结果。例如,假设某个算法具有以下形式的步骤:“返回评估的结果Block
”并且有一个产生式:
Block : { StatementList }
但求值操作并不将算法与该产生式关联起来。在这种情况下,求值操作隐式包含以下形式的关联:
运行时语义:评估
Block : { StatementList }
- 返回评估结果
StatementList
.
因此,由于没有“运行时语义:评估”Statement生产 https://tc39.es/ecma262/#prod-Statement,它获得隐式语义,将简单地评估相应的语句类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)