Konsolidierte Grammatik
Lexikalische Grammatik
lexical-unit:
lexical-elementsopt
lexical-elements:
lexical-element lexical-elementsopt
lexical-element:
whitespace
token
Kommentar
Leerzeichen
Leerzeichen:
Beliebiges Zeichen der Unicode-Klasse „Zs“
Horizontales Tabstoppzeichen (U+0009
)
Vertikales Tabstoppzeichen (U+000B
)
Seitenvorschubzeichen (U+000C
)
Wagenrücklaufzeichen (U+000D
), gefolgt von einem Zeilenvorschubzeichen (U+000A
) new-line-character
Neue-Zeile-Zeichen:
Wagenrücklaufzeichen (U+000D
)
Zeilenvorschubzeichen (U+000A
)
Zeilenumbruchzeichen (U+0085
)
Zeilentrennzeichen (U+2028
)
Absatztrennzeichen (U+2029
)
Comment
comment:
single-line-comment
delimited-comment
single-line-comment:
//
Einzeilige Kommentarzeichen
single-line-comment-characters:
single-line-comment-character single-line-comment-charactersopt
single-line-comment-character:
Beliebiges Unicode-Zeichen mit Ausnahme eines new-line-character
delimited-comment:
/*
Durch Trennzeichen getrenntes Kommentartext-Sternchen /
delimited-comment-text:
delimited-comment-section delimited-comment-textopt
delimited-comment-section:
/
asterisksopt not-slash-or-asterisk
Sternchen:
*
Sternchen- und Sternchen-Opt
not-slash-or-asterisk:
Beliebiges Unicode-Zeichen mit Ausnahme von *
oder /
Token
token:
Bezeichner
Schlüsselwort (keyword)
literal
operator-or-punctuator
Escapezeichensequenzen
Escapezeichensequenz:
#(
Escapesequenzliste )
escape-sequence-list:
single-escape-sequence
escape-sequence-list ,
single-escape-sequence-sequence
single-escape-sequence:
long-unicode-escape-sequence
short-unicode-escape-sequence
control-character-escape-sequence
escape-escape
long-unicode-escape-sequence:
hex-digit hex-digit hex-digit hex-digit hex-digit hex-digit hex-digit hex-digit
short-unicode-escape-sequence:
hex-digit hex-digit hex-digit hex-digit
control-character-escape-sequence:
control-character
Steuerzeichen:
cr
lf
tab
Escape-Escape:
#
Literale
literal:
logical-literal
number-literal
text-literal
null-literal
verbatim-literal
logical-literal:
true
false
number-literal:
decimal-number-literal
hexadecimal-number-literal
decimal-digits:
decimal-digit decimal-digitsopt
decimal-digit: einer der folgenden Werte
0 1 2 3 4 5 6 7 8 9
Hexadezimalliteral:
0x
Hexadezimiert
0X
Hexadezimiert
hex-digits:
hex-digit hex-digitsopt
hex-digit: einer der folgenden Werte
0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
decimal-number-literal:
Dezimalstellende.
Dezimalziffern-Exponent-Part-Opt
.
Dezimalstellen-Exponent-Part-Opt
decimal-digits exponent-partopt
exponent-part:
e
dezimale Dezimalziffern signieren
E
dezimale Dezimalziffern signieren
Vorzeichen: einer der folgenden Werte
+ -
Textliteral:
"
textliteral-charactersopt "
text-literal-characters:
text-literal-character text-literal-charactersopt
text-literal-character:
single-text-character
character-escape-sequence
double-quote-escape-sequence
single-text-character:
Beliebiges Zeichen außer "
(U+0022
) oder #
(U+0023
), gefolgt von (
(U+0028
)
Escapesequenz mit doppelten Anführungszeichen:
""
(U+0022
, U+0022
)
NULL-Literal:
null
Verbatim-Literal:
#!"
textliteral-charactersopt "
Bezeichner
identifier:
regular-identifier
quoted-identifier
regular-identifier:
available-identifier
available-identifier dot-character regular-identifier
available-identifier:
Ein keyword-or-identifier, der kein keyword ist
keyword-or-identifier:
letter-character
underscore-character
identifier-start-character identifier-part-characters
identifier-start-character:
letter-character
underscore-character
identifier-part-characters:
identifier-part-character identifier-part-charactersopt
identifier-part-character:
letter-character
decimal-digit-character
underscore-character
connecting-character
combining-character
formatting-character
generalized-identifier:
generalized-identifier-part
generalized-identifier nur durch Leerzeichen getrennt (U+0020
) generalized-identifier-part
generalized-identifier-part:
generalized-identifier-segment
decimal-digit-character generalized-identifier-segment
generalized-identifier-segment:
keyword-or-identifier
keyword-or-identifier dot-character keyword-or-identifier
dot-character:
.
(U+002E
)
Unterstrichzeichen:
_
(U+005F
)
Buchstabe:_
Ein Unicode-Zeichen der Klassen „Lu“, „Ll“, „Lt“, „Lm“, „Lo“ oder „Nl“
Kombinationszeichen:
Ein Unicode-Zeichen der Klassen „Mn“ oder „Mc“
Dezimalziffer:
Ein Unicode-Zeichen der Klasse „Nd“
Verbindungszeichen:
Ein Unicode-Zeichen der Klasse „Pc“
Formatierungszeichen:
Ein Unicode-Zeichen der Klasse „Cf“
Bezeichner in Anführungszeichen:
#"
textliteral-charactersopt "
Schlüsselwörter und vordefinierte Bezeichner
Vordefinierte Bezeichner und Schlüsselwörter können nicht neu definiert werden. Ein Bezeichner in Anführungszeichen kann verwendet werden, um Bezeichner zu behandeln, die andernfalls mit vordefinierten Bezeichnern oder Schlüsselwörtern kollidieren würden.
Schlüsselwort: einer der folgenden Werte and as each else error false if in is let meta not null or otherwise
section shared then true try type #binary #date #datetime
#datetimezone #duration #infinity #nan #sections #shared #table #time
Operatoren und Trennzeichen
operator-or-punctuator: one of
, ; = < <= > >= <> + - * / & ( ) [ ] { } @ ? ?? => .. ...
Syntaktische Grammatik
Dokumente
document:
section-document
expression-document
Abschnittsdokumente
section-document:
section
section:
literal-attributesoptsection
section-name;
section-members opt
section-name:
Bezeichner
section-members:
section-member section-membersopt
section-member:
literal-attributesopt sharedopt section-member-name =
expression ;
section-member-name:
identifier
Ausdrucksdokumente
Ausdrücke
expression-document:
expression
expression:
logical-or-expression
each-expression
function-expression
let-expression
if-expression
error-raising-expression
error-handling-expression
Logische Ausdrücke
logical-or-expression:
logical-and-expression
logischer und ausdruckslogischer or
Oder-Ausdruck
logical-and-expression:
is-expression
Logischer Ausdruck und Ausdruckand
Is-Ausdruck
is-expression:
as-expression
is-expression is
nullable-primitive-type
nullable-primitive-type:
nullable
opt primitive-type
As-Ausdruck
as-expression:
equality-expression
as-Ausdruck as
Primitiver Typ, der Nullwerte zulässt
Gleichheitsausdruck
equality-expression:
relational-expression
Relationaler Ausdruck =
Gleichheitsausdruck
Relationaler Ausdruck <>
Gleichheitsausdruck
Relationaler Ausdruck
relational-expression:
additive-expression
Additiver Ausdruck <
Relationaler Ausdruck
Additiver Ausdruck >
Relationaler Ausdruck
Additiver Ausdruck <=
Relationaler Ausdruck
Additiver Ausdruck >=
Relationaler Ausdruck
Arithmetische Ausdrücke
additive-expression:
multiplicative-expression
Additivausdruck mit multiplizierten Ausdrücken+
Additivausdruck mit multiplizierten Ausdrücken-
Multipliktiver Ausdruck &
_additive-Ausdruck
multiplicative-expression:
metadata-expression
Multipliktiver Metadatenausdruck*
Multipliktiver Metadatenausdruck/
Metadatenausdruck
metadata-expression:
unary-expression
Unärer Ausdruck meta
Unärer Ausdruck
Unärer Ausdruck
unary-expression:
type-expression
+
unärer-Ausdruck
-
unärer-Ausdruck
not
unärer-Ausdruck
Primärer Ausdruck
primary-expression:
literal-expression
list-expression
record-expression
identifier-expression
section-access-expression
parenthesized-expression
field-access-expression
item-access-expression
invoke-expression
not-implemented-expression
Literalausdruck
literal-expression:
literal
Bezeichnerausdruck
identifier-expression:
identifier-reference
identifier-reference:
exclusive-identifier-reference
inclusive-identifier-reference
exclusive-identifier-reference:
Bezeichner
inclusive-identifier-reference:
@
Bezeichner
Abschnittszugriffsausdruck
section-access-expression:
Bezeichner !
Ausdruck in Klammern
Ausdruck in Klammern:
(
Ausdruck )
Nicht implementierter Ausdruck
Nicht implementierter Ausdruck:
...
Aufrufausdruck
invoke-expression:
Argumentliste für primärer Ausdruck(
)
argument-list:
expression
Ausdrucksargumentliste,
Listenausdruck
Listenausdruck:
{
Elementlisten-Opt }
item-list:
item
Elementelementliste,
item:
expression
Ausdruck..
Datensatzausdruck
Datensatzausdruck:
[
Feldlisten-Opt ]
field-list:
Feld
Feldfeldliste,
field:
Feldnameausdruck=
field-name:
generalized-identifier
quoted-identifier
Elementzugriffsausdruck
item-access-expression:
item-selection
optional-item-selection
Elementauswahl:
Elementauswahl des primären Ausdrucks{
}
optional-item-selection:
Primärer Ausdruck {
Elementauswahl } ?
item-selector:
expression
Feldzugriffsausdrücke
field-access-expression:
field-selection
implicit-target-field-selection
Projektion (projection)
implicit-target-projection
field-selection:
primary-expression field-selector
field-selector:
required-field-selector
optional-field-selector
required-field-selector:
[
Feldname ]
optionaler Feldselektor:
[
Feldname ] ?
implicit-target-field-selection:
field-selector
projection:
primary-expression required-projection
primary-expression optional-projection
required-projection:_
[
Erforderliche Selektorliste ]
optionale Projektion:
[
Erforderliche Selektorliste ] ?
required-selector-list:
required-field-selector
Required-field-selector ,
required-selector-list
implicit-target-projection:
required-projection
optional-projection
Funktionsausdruck
Funktionsausdruck:
(
parameter-listopt)
return-typeopt=>
function-body
function-body:
expression
parameter-list:
fixed-parameter-list
fixed-parameter-list ,
optional-parameter-list
optional-parameter-list
fixed-parameter-list:
parameter
parameter ,
fixed-parameter-list
parameter:
parameter-name parameter-typeopt
parameter-name:
identifier
primitive-parameter-type:
primitive-assertion
return-type:
primitive-assertion
primitive-assertion:
as
nullable-primitiver Typ
optional-parameter-list:
optional-parameter
optional-parameter ,
optional-parameter-list
optional-parameter:
optional
Parameter
Each-Ausdruck
each-Ausdruck:
each
jeder Ausdruckstext
each-expression-body:
function-body
Let-Ausdruck
Let-Ausdruck:
let
Ausdruck der Variablenlistein
variable-list:
-Variable
Variable ,
Variable-Liste
variable:
Ausdruck mit variablem Namen=
variable-name:
identifier
if-Ausdruck
if-Ausdruck:
if
if-conditionthen
true-expression false-expressionelse
if-condition:
expression
true-expression:
expression
false-expression:
expression
Typausdruck
type-expression:
primary-expression
type
Primärtyp
Typ:
primary-expression
primary-type
primary-type:
primitive-type
record-type
list-type
function-type
table-type
nullable-type
primitive-type: einer der folgenden Werte
any anynonnull binary date datetime datetimezone duration function
list logical none null number record table text time type
Datensatztyp:
[
Open-Record-Marker ]
[
Field-specification-listopt ]
[
field-specification-list ,
open-record-marker ]
field-specification-list:
field-specification
Feldspezifikationsfeld-Spezifikationsliste,
field-specification:
optional
opt field-name field-type-specificationopt
field-type-specification:
=
Feldtyp
field-type:
Typ
open-record-marker:
...
Listentyp:
{
Elementtyp }
item-type:
Typ
function-type:
function (
Rückgabetyp der Parameterspezifikationsliste)
parameter-specification-list:
required-parameter-specification-list
required-parameter-specification-list ,
optional-parameter-specification-list
optional-parameter-specification-list
required-parameter-specification-list:
required-parameter-specification
required-parameter-specification ,
required-parameter-specification-specification-list
required-parameter-specification:
parameter-specification
optional-parameter-specification-list:
optional-parameter-specification
optional-parameter-specification ,
optional-parameter-specification-list
optional-parameter-specification:
optional
Parameterspezifikation
parameter-specification:
parameter-name parameter-type
parameter-type:
assertion
assertion:
as
Art
table-type:
table
Zeilentyp
row-type:
[
Field-specification-listopt ]
Nullable-Typ:
nullable
Art
Fehlerauslösender Ausdruck
Fehlerauslösender Ausdruck:
error
expression_
Fehlerbehandlungsausdruck
Fehlerbehandlungsausdruck:
try
Fehlerhandlerfür geschützten Ausdruck
protected-expression:
expression
Fehlerhandler:
Otherwise-Klausel
Catch-Klausel
otherwise-Klausel:
otherwise
Standardausdruck
Standardausdruck:
expression
Catch-Klausel:
catch
Catch-Funktion
Catch-Funktion:
(
Parametername-Opt-Funktionstext)
=>
Literalattribute
literal-attributes:
record-literal
record-literal:
[
literal-field-listopt ]
literal-field-list:
literal-field
literal-field-literal-field-list ,
literal-field:
feldname =
any-literal
list-literal:
{
literal-item-listopt }
literal-item-list:
any-literal
any-literal-literal-item-list ,
any-literal:
record-literal
list-literal
logical-literal
number-literal
text-literal
null-literal