These are cases where a grammar production has an optional (?) element on the
right-hand side, and a syntax-directed operation defines a rule for that
production without the optional part.
For example, the production Foo : Bar Baz? has two alternatives:
Foo : Bar Baz and Foo : Bar. When an SDO is defined on Foo : Bar, it
handles the "optional element absent" case.
100 total SDO cases across 36 productions.
SDO rule: FunctionExpression : function ( FormalParameters ) { FunctionBody }
| SDO | Link |
|---|---|
| HasName | sec-static-semantics-hasname |
| NamedEvaluation | sec-runtime-semantics-namedevaluation |
| InstantiateOrdinaryFunctionExpression | sec-runtime-semantics-instantiateordinaryfunctionexpression |
SDO rule: GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
| SDO | Link |
|---|---|
| HasName | sec-static-semantics-hasname |
| NamedEvaluation | sec-runtime-semantics-namedevaluation |
| InstantiateGeneratorFunctionExpression | sec-runtime-semantics-instantiategeneratorfunctionexpression |
AsyncGeneratorExpression : async function * BindingIdentifier? ( FormalParameters ) { AsyncGeneratorBody }
SDO rule: AsyncGeneratorExpression : async function * ( FormalParameters ) { AsyncGeneratorBody }
| SDO | Link |
|---|---|
| HasName | sec-static-semantics-hasname |
| NamedEvaluation | sec-runtime-semantics-namedevaluation |
| InstantiateAsyncGeneratorFunctionExpression | sec-runtime-semantics-instantiateasyncgeneratorfunctionexpression |
AsyncFunctionExpression : async function BindingIdentifier? ( FormalParameters ) { AsyncFunctionBody }
SDO rule: AsyncFunctionExpression : async function ( FormalParameters ) { AsyncFunctionBody }
| SDO | Link |
|---|---|
| HasName | sec-static-semantics-hasname |
| NamedEvaluation | sec-runtime-semantics-namedevaluation |
| InstantiateAsyncFunctionExpression | sec-runtime-semantics-instantiateasyncfunctionexpression |
SDO rule: ClassExpression : class ClassTail
| SDO | Link |
|---|---|
| HasName | sec-static-semantics-hasname |
| NamedEvaluation | sec-runtime-semantics-namedevaluation |
| Evaluation | sec-class-definitions-runtime-semantics-evaluation |
SDO rule: Block : { }
| SDO | Link |
|---|---|
| ContainsDuplicateLabels | sec-static-semantics-containsduplicatelabels |
| ContainsUndefinedBreakTarget | sec-static-semantics-containsundefinedbreaktarget |
| ContainsUndefinedContinueTarget | sec-static-semantics-containsundefinedcontinuetarget |
| Evaluation | sec-block-runtime-semantics-evaluation |
| HasCallInTailPosition | sec-static-semantics-hascallintailposition |
| LexicallyDeclaredNames | sec-static-semantics-lexicallydeclarednames |
| VarDeclaredNames | sec-static-semantics-vardeclarednames |
| VarScopedDeclarations | sec-static-semantics-varscopeddeclarations |
SDO rule: CaseBlock : { }
| SDO | Link |
|---|---|
| CaseBlockEvaluation | sec-runtime-semantics-caseblockevaluation |
| ContainsDuplicateLabels | sec-static-semantics-containsduplicatelabels |
| ContainsUndefinedBreakTarget | sec-static-semantics-containsundefinedbreaktarget |
| ContainsUndefinedContinueTarget | sec-static-semantics-containsundefinedcontinuetarget |
| HasCallInTailPosition | sec-static-semantics-hascallintailposition |
| LexicallyDeclaredNames | sec-static-semantics-lexicallydeclarednames |
| LexicallyScopedDeclarations | sec-static-semantics-lexicallyscopeddeclarations |
| VarDeclaredNames | sec-static-semantics-vardeclarednames |
| VarScopedDeclarations | sec-static-semantics-varscopeddeclarations |
SDO rule: CaseClause : case Expression :
| SDO | Link |
|---|---|
| Evaluation | sec-switch-statement-runtime-semantics-evaluation |
SDO rule: DefaultClause : default :
| SDO | Link |
|---|---|
| Evaluation | sec-switch-statement-runtime-semantics-evaluation |
SDO rule: FunctionStatementList : [empty]
| SDO | Link |
|---|---|
| ContainsDuplicateLabels | sec-static-semantics-containsduplicatelabels |
| ContainsUndefinedBreakTarget | sec-static-semantics-containsundefinedbreaktarget |
| ContainsUndefinedContinueTarget | sec-static-semantics-containsundefinedcontinuetarget |
| Evaluation | sec-function-definitions-runtime-semantics-evaluation |
| HasCallInTailPosition | sec-static-semantics-hascallintailposition |
| LexicallyDeclaredNames | sec-static-semantics-lexicallydeclarednames |
| LexicallyScopedDeclarations | sec-static-semantics-lexicallyscopeddeclarations |
| VarDeclaredNames | sec-static-semantics-vardeclarednames |
| VarScopedDeclarations | sec-static-semantics-varscopeddeclarations |
SDO rule: ClassStaticBlockStatementList : [empty]
| SDO | Link |
|---|---|
| ContainsDuplicateLabels | sec-static-semantics-containsduplicatelabels |
| ContainsUndefinedBreakTarget | sec-static-semantics-containsundefinedbreaktarget |
| ContainsUndefinedContinueTarget | sec-static-semantics-containsundefinedcontinuetarget |
| Evaluation | sec-class-definitions-runtime-semantics-evaluation |
| LexicallyDeclaredNames | sec-static-semantics-lexicallydeclarednames |
| LexicallyScopedDeclarations | sec-static-semantics-lexicallyscopeddeclarations |
| VarDeclaredNames | sec-static-semantics-vardeclarednames |
| VarScopedDeclarations | sec-static-semantics-varscopeddeclarations |
SDO rule: Script : [empty]
| SDO | Link |
|---|---|
| Evaluation | sec-script-semantics-runtime-semantics-evaluation |
| LexicallyDeclaredNames | sec-static-semantics-lexicallydeclarednames |
| LexicallyScopedDeclarations | sec-static-semantics-lexicallyscopeddeclarations |
| VarDeclaredNames | sec-static-semantics-vardeclarednames |
| VarScopedDeclarations | sec-static-semantics-varscopeddeclarations |
SDO rule: Module : [empty]
| SDO | Link |
|---|---|
| Evaluation | sec-module-semantics-runtime-semantics-evaluation |
| ExportEntries | sec-static-semantics-exportentries |
| ImportEntries | sec-static-semantics-importentries |
| LexicallyScopedDeclarations | sec-static-semantics-lexicallyscopeddeclarations |
| ModuleRequests | sec-static-semantics-modulerequests |
| VarScopedDeclarations | sec-static-semantics-varscopeddeclarations |
SDO rule: VariableDeclaration : BindingIdentifier
| SDO | Link |
|---|---|
| Evaluation | sec-variable-statement-runtime-semantics-evaluation |
SDO rule: LexicalBinding : BindingIdentifier
| SDO | Link |
|---|---|
| Evaluation | sec-let-and-const-declarations-runtime-semantics-evaluation |
SDO rule: SingleNameBinding : BindingIdentifier
| SDO | Link |
|---|---|
| ContainsExpression | sec-static-semantics-containsexpression |
| HasInitializer | sec-static-semantics-hasinitializer |
| IsSimpleParameterList | sec-static-semantics-issimpleparameterlist |
SDO rule: BindingElement : BindingPattern
| SDO | Link |
|---|---|
| HasInitializer | sec-static-semantics-hasinitializer |
| IsSimpleParameterList | sec-static-semantics-issimpleparameterlist |
SDO rule: AssignmentElisionElement : AssignmentElement
| SDO | Link |
|---|---|
| IteratorDestructuringAssignmentEvaluation | sec-runtime-semantics-iteratordestructuringassignmentevaluation |
Multiple SDO rules with different combinations of optionals omitted:
ArrayBindingPattern : [ ] (both Elision and BindingRestElement absent)
| SDO | Link |
|---|---|
| IteratorBindingInitialization | sec-runtime-semantics-iteratorbindinginitialization |
ArrayBindingPattern : [ Elision ] (BindingRestElement absent)
| SDO | Link |
|---|---|
| BoundNames | sec-static-semantics-boundnames |
| ContainsExpression | sec-static-semantics-containsexpression |
| IteratorBindingInitialization | sec-runtime-semantics-iteratorbindinginitialization |
ArrayBindingPattern : [ BindingElementList , Elision ] (BindingRestElement absent)
| SDO | Link |
|---|---|
| BoundNames | sec-static-semantics-boundnames |
| ContainsExpression | sec-static-semantics-containsexpression |
| IteratorBindingInitialization | sec-runtime-semantics-iteratorbindinginitialization |
ArrayAssignmentPattern : [ ] (both absent)
| SDO | Link |
|---|---|
| DestructuringAssignmentEvaluation | sec-runtime-semantics-destructuringassignmentevaluation |
ArrayAssignmentPattern : [ Elision ] (AssignmentRestElement absent)
| SDO | Link |
|---|---|
| DestructuringAssignmentEvaluation | sec-runtime-semantics-destructuringassignmentevaluation |
SDO rule: ObjectBindingPattern : { BindingPropertyList , }
| SDO | Link |
|---|---|
| BindingInitialization | sec-runtime-semantics-bindinginitialization |
SDO rule: ObjectAssignmentPattern : { AssignmentPropertyList , }
| SDO | Link |
|---|---|
| DestructuringAssignmentEvaluation | sec-runtime-semantics-destructuringassignmentevaluation |
SDO rule: ImportDeclaration : import ImportClause FromClause ;
| SDO | Link |
|---|---|
| ModuleRequests | sec-static-semantics-modulerequests |
SDO rule: ImportDeclaration : import ModuleSpecifier ;
| SDO | Link |
|---|---|
| ModuleRequests | sec-static-semantics-modulerequests |
SDO rule: ExportDeclaration : export ExportFromClause FromClause ;
| SDO | Link |
|---|---|
| IsConstantDeclaration | sec-static-semantics-isconstantdeclaration |
| ModuleRequests | sec-static-semantics-modulerequests |
SDO rule: StringLiteral :: " "
| SDO | Link |
|---|---|
| SV | sec-static-semantics-sv |
SDO rule: StringLiteral :: ' '
| SDO | Link |
|---|---|
| SV | sec-static-semantics-sv |
SDO rule: NoSubstitutionTemplate ::
| SDO | Link |
|---|---|
| TV | sec-static-semantics-tv |
| TRV | sec-static-semantics-trv |
SDO rule: TemplateHead :: ${
| SDO | Link |
|---|---|
| TV | sec-static-semantics-tv |
| TRV | sec-static-semantics-trv |
SDO rule: TemplateMiddle :: } ${
| SDO | Link |
|---|---|
| TV | sec-static-semantics-tv |
| TRV | sec-static-semantics-trv |
SDO rule: TemplateTail :: }
| SDO | Link |
|---|---|
| TV | sec-static-semantics-tv |
| TRV | sec-static-semantics-trv |
Multiple SDO rules with different optionals omitted:
DecimalLiteral : DecimalIntegerLiteral . DecimalDigits (ExponentPart absent)
| SDO | Link |
|---|---|
| IdentifierCodePoint | sec-identifiercodepoint |
DecimalLiteral : DecimalIntegerLiteral . ExponentPart (DecimalDigits absent)
| SDO | Link |
|---|---|
| IdentifierCodePoint | sec-identifiercodepoint |
SDO rule: DecimalLiteral : . DecimalDigits
| SDO | Link |
|---|---|
| IdentifierCodePoint | sec-identifiercodepoint |
SDO rule: DecimalBigIntegerLiteral : NonZeroDigit BigIntLiteralSuffix
| SDO | Link |
|---|---|
| NumericValue | sec-numericvalue |
SDO rule: DecimalEscape : NonZeroDigit
| SDO | Link |
|---|---|
| CapturingGroupNumber | sec-patterns-static-semantics-capturing-group-number |