5.1.3 The Numeric String Grammar
A second grammar is used for translating strings into numeric
values. This grammar is similar to the part of the lexical grammar
having to do with numeric literals and has as its terminal symbols
the characters of the Unicode character set. This grammar appears
in 9.3.1.
Productions of the numeric string grammar are distinguished by
having three colons ":::" as punctuation.
5.1.4 The Syntactic Grammar
The syntactic grammar for ECMAScript is given in clauses 11, 12,
13 and 14. This grammar has ECMAScript tokens defined by the
lexical grammar as its terminal symbols (5.1.2). It defines a set
of productions, starting from the goal symbol Program, that
describe how sequences of tokens can form syntactically correct
ECMAScript programs.
When a stream of Unicode characters is to be parsed as an
ECMAScript program, it is first converted to a stream of input
elements by repeated application of the lexical grammar; this
stream of input elements is then parsed by a single application of
the syntax grammar. The program is syntactically in error if the
tokens in the stream of input elements cannot be parsed as a single
instance of the goal nonterminal Program, with no tokens left
over.
Productions of the syntactic grammar are distinguished by having
just one colon ":" as punctuation. The syntactic grammar as
presented in sections 0, 0, 0 and 0 is actually not a complete
account of which token sequences are accepted as correct ECMAScript
programs. Certain additional token sequences are also accepted,
namely, those that would be described by the grammar if only
semicolons were added to the sequence in certain places (such as
before line terminator characters). Furthermore, certain token
sequences that are described by the grammar are not considered
acceptable if a terminator character appears in certain "awkward"
places.