ecmascript 产品中的混乱
confusion in ecmascript productions
我最近对 ecma262 规范中的产品感到困惑。
根据我的假设有一些作品可以是其他作品。
例如,声明
Statement 可以是 Block 也可以是 IfStatement.
我的困惑始于看起来像那样的算法
a. Let stmtCompletion be the result of evaluating the first Statement.
评估声明?这是什么意思?
如果一个语句,例如,是一个IfStatement,它会转到14.6 The if Statement 14.6 .2 运行时语义:评估
?
我很困惑,因为有些作品有 RS: Evaluation,比如 IfStatement,有些则没有 RS:评估如声明、声明等...
If a Statement, for example, is an IfStatement will it go to the 14.6 The if Statement 14.6.2 Runtime Semantics: Evaluation
?
是的。
I'm mostly confused because there are productions that have their RS: Evaluation like IfStatement and some don't have the RS: Evaluation like Statement,Declaration, etc...
What does it mean?
这(在最近的规范修订版中)甚至在 §5.2.2 Syntax-Directed Operations 中进行了解释。特别是,
除非另有明确规定,否则所有链产生式都有一个隐式定义,用于每个可能应用于该产生式左侧非终结符的操作。隐式定义只是将具有相同参数(如果有)的相同操作重新应用于链产生式唯一的右侧非终结符,然后 returns 结果。例如,假设某些算法具有以下形式的步骤:“Return 评估 Block
的结果”,并且有一个产生式:
Block : { StatementList }
但求值操作并未将算法与该产生式相关联。在这种情况下,求值操作隐式包含以下形式的关联:
运行时语义:求值
Block : { StatementList }
- Return 计算结果
StatementList
.
因此,由于 Statement
production 没有“运行时语义:求值”,它获得隐式语义,将简单地求值相应的语句类型。
我最近对 ecma262 规范中的产品感到困惑。
根据我的假设有一些作品可以是其他作品。
例如,声明
Statement 可以是 Block 也可以是 IfStatement.
我的困惑始于看起来像那样的算法
a. Let stmtCompletion be the result of evaluating the first Statement.
评估声明?这是什么意思?
如果一个语句,例如,是一个IfStatement,它会转到14.6 The if Statement 14.6 .2 运行时语义:评估 ?
我很困惑,因为有些作品有 RS: Evaluation,比如 IfStatement,有些则没有 RS:评估如声明、声明等...
If a Statement, for example, is an IfStatement will it go to the 14.6 The if Statement 14.6.2 Runtime Semantics: Evaluation ?
是的。
I'm mostly confused because there are productions that have their RS: Evaluation like IfStatement and some don't have the RS: Evaluation like Statement,Declaration, etc...
What does it mean?
这(在最近的规范修订版中)甚至在 §5.2.2 Syntax-Directed Operations 中进行了解释。特别是,
除非另有明确规定,否则所有链产生式都有一个隐式定义,用于每个可能应用于该产生式左侧非终结符的操作。隐式定义只是将具有相同参数(如果有)的相同操作重新应用于链产生式唯一的右侧非终结符,然后 returns 结果。例如,假设某些算法具有以下形式的步骤:“Return 评估 Block
的结果”,并且有一个产生式:
Block : { StatementList }
但求值操作并未将算法与该产生式相关联。在这种情况下,求值操作隐式包含以下形式的关联:
运行时语义:求值
Block : { StatementList }
- Return 计算结果
StatementList
.
因此,由于 Statement
production 没有“运行时语义:求值”,它获得隐式语义,将简单地求值相应的语句类型。