gpt4 book ai didi

javascript - `AssignmentExpression`如何从EcmaScript语法中的 `Statement`导出

转载 作者:行者123 更新时间:2023-12-04 03:03:31 26 4
gpt4 key购买 nike

假设我有以下 JS 代码部分:

const v = 3;

据我了解,它可以解析为 AssignmentExpression :
AssignmentExpression :
LeftHandSideExpression = AssignmentExpression

现在我想知道它是如何从 Statement 派生出来的。 ?一种可能的路线是:
Statement -> ExpressionStatement -> Expression -> AssignmentExpression

但我不确定。这是对的吗?

这是我找到它的方法:
AssignmentExpression是部分 Expression :
Expression :
AssignmentExpression
Expression, AssignmentExpression

然后 ExpressionExpressionStatement 的一部分是
ExpressionStatement:

[lookahead ∉ { {, function, ..., let [ }] Expression;

然后 ExpressionStatementStatement 的一部分:
Statement :
ExpressionStatement

最佳答案

const v = 3;是一个声明,而不是一个赋值。有趣的是声明不是 Statement s,但可以出现在 StatementList s。所以你不能推导出const v = 3;来自 Statement ,但您可以从 StatementList .因此,如果您的脚本仅包含 const v = 3; ,完整的推导将是:

            Script
|
ScriptBody
|
StatementList
|
StatementListItem
|
Declaration
|
LexicalDeclaration
/ | \
LetOrConst BindingList ';'
| |
'const' LexicalBinding
/ \
BindingIdentifier Initializer
| |
Identifier AssignmentExpression
| |
IdentifierName ...
| |
'v' '5'

实际分配只是 v = 5; .那将通过 ExpressionStatement以及来自 Statement 的推导看起来像这样:
                     Statement
|
ExpressionStatement
/ \
Expression ';'
|
AssignmentExpression
/ | \
LeftHandSideExpression '=' AssignmentExpression
| |
NewExpression ...
| |
MemberExpression '5'
|
PrimaryExpression
|
IdentifierReference
|
Identifier
|
IdentifierName
|
'v'

关于javascript - `AssignmentExpression`如何从EcmaScript语法中的 `Statement`导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46745654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com