语法:
Program :
SourceElementsopt
SourceElements :
SourceElement
SourceElements SourceElement
SourceElement :
Statement
FunctionDeclaration
语义:
- 产生式 Program : SourceElementsopt 依照下面的步骤来解释执行 :
- 若 SourceElements 的指令序言 ( 参考 14.1 章 ) 中 , 包含严格模式指令 , 或者满足 10.1.1 章节所描述的任何一个条件 . 则 Program 的代码 . 就是一段严格模式代码 . 并对应性的 , 以严格模式或非严格模式 , 依照下面列出的步骤来解释执行代码 .
- 若没有 SourceElements 部分 , 则返回 (normal, empty, empty).
- 令 progCxt 为一个新的 , 如 10.4.1 章节所描述的 , 应用于全局代码的执行环境 .
- 令 result 为解释执行 SourceElements 的结果 .
- 退出 progCxt 这个执行环境 .
- 返回 result.
- 产生式 SourceElements : SourceElements SourceElement 依照下面的步骤来解释执行 :
- 令 headResult 为解释执行 SourceElements 的结果 .
- 若 headResult 是非常规性完结的 , 返回 headResult.
- 令 tailResult 为解释执行 SourceElement 的结果 .
- 若 tailResult.value 为 empty, 令 V = headResult.value, 其他情况 , 另 V = tailResult.value.
- 返回 (tailResult.type, V, tailResult.target).
- 产生式 : SourceElement : Statement 依照下面的步骤来解释执行 :
- 返回解释执行 Statement 的结果 .
产生式 : SourceElement : FunctionDeclaration 依照下面的步骤来解释执行 :
- 返回 (normal, empty, empty)
14.1 指令序言和严格模式指令
一个指令序言 , 是那些从 Program 或 FunctionBody 的首个 SourceElement 开始,到那些完全由一个字符串字面量后面跟一个分号 , 所构成的最长的 . 那一组 ExpressionStatement 序列中的每一个 . 字符串字面量后面的分号 , 可以显式的插入 , 或者借助分号自动插入机制来插入 . 一个指令序言 , 也可以是一个空的序列 .
严格模式指令是一个 "use strict" 或 ‘use strict‘ 的字符串字面量 . 一个严格模式指令中 , 不应该包含 EscapeSequence 或 LineContinuation.
一个指令序言 , 可以不仅仅包含一个严格模式指令 . 然而 , 当这种情况出现的时候 ,ECMAScript 实现 , 可以发出一个相关警告 .
时间: 2024-10-07 08:18:49