Skip to content

Latest commit

 

History

History
45 lines (30 loc) · 3.44 KB

Program.md

File metadata and controls

45 lines (30 loc) · 3.44 KB

   Program :        **opt

   SourceElements :                   **

   SourceElement :        Statement         FunctionDeclaration

产生式 ** : opt 依照下面的步骤来解释执行:

  1. 若 ** 的指令序言(参考 14.1 章)中,包含严格模式指令, 或者满足 10.1.1 章节所描述的任何一个条件,则 ** 的代码就是一段严格模式代码,并对应性的,以严格模式或非严格模式,依照下面列出的步骤来解释执行代码。
  2. 若没有 ** 部分 , 则返回 (normal, empty, empty)。
  3. progCxt 为一个新的,如 10.4.1 章节所描述的,应用于全局代码的执行环境
  4. result 为解释执行 ** 的结果。
  5. 退出 progCxt 这个执行环境。
  6. 返回 result

产生式 ** : ** ** 依照下面的步骤来解释执行 :

  1. headResult 为解释执行 ** 的结果。
  2. headResult非常规性完结的,返回 headResult
  3. tailResult 为解释执行 ** 的结果。
  4. tailResult.valueempty,令 V = headResult.value,其他情况,令 V = tailResult.value
  5. 返回 (tailResult.type, V, tailResult.target)。

产生式 : ** : Statement 依照下面的步骤来解释执行:

  1. 返回解释执行 Statement 的结果。

产生式 : ** : FunctionDeclaration 依照下面的步骤来解释执行:

  1. 返回 (normal, empty, empty)。

指令序言和严格模式指令

一个指令序言,是那些从 ** 或 FunctionBody 的首个 ** 开始,到那些完全由一个字符串字面量后面跟一个分号,所构成的最长的 ExpressionStatement 序列。ExpressionStatement 序列中的每一个都是 StringLiteral 后面接分号,可以显式的插入,或者借助分号自动插入机制来插入。一个指令序言也可以是一个空的序列。

严格模式指令是一个 "use strict"'use strict'StringLiteral。一个严格模式指令不应该包含 EscapeSequenceLineContinuation

一个指令序言,可以不仅仅包含一个严格模式指令。然而,当这种情况出现的时候,ECMAScript 实现可以发出一个相关警告。