Konsolidierte GrammatikConsolidated Grammar

Lexikalische GrammatikLexical grammar

Lexikalische Einheit:
      lexikalische Elementeopt
lexikalische Elemente:
      lexikalisches Element lexikalische Elementeopt
lexikalisches Element:
      Leerzeichen
      Tokenkommentar
lexical-unit:
      lexical-elementsopt
lexical-elements:
      lexical-element lexical-elementsopt
lexical-element:
      whitespace
      token comment

LeerzeichenWhite space

Leerzeichen:whitespace:
      Beliebiges Zeichen der Unicode-Klasse „Zs“      Any character with Unicode class Zs
      Horizontales Tabstoppzeichen (U+0009)      Horizontal tab character (U+0009)
      Vertikales Tabstoppzeichen (U+000B)      Vertical tab character (U+000B)
      Seitenvorschubzeichen (U+000C)      Form feed character (U+000C)
      Wagenrücklaufzeichen (U+000D), gefolgt von einem Zeilenvorschubzeichen (U+000A)       Zeilenumbruchzeichen
Zeilenumbruchzeichen:
      Carriage return character (U+000D) followed by line feed character (U+000A)       new-line-character
new-line-character:

      Wagenrücklaufzeichen (U+000D)      Carriage return character (U+000D)
      Zeilenvorschubzeichen (U+000A)      Line feed character (U+000A)
      Zeilenumbruchzeichen (U+0085)      Next line character (U+0085)
      Zeilentrennzeichen (U+2028)      Line separator character (U+2028)
      Absatztrennzeichen (U+2029)      Paragraph separator character (U+2029)

KommentierenComment

Kommentar:
      Einzeilenkommentar
      Trennzeichenkommentar

Einzeilenkommentar:
comment:
      single-line-comment
      delimited-comment

single-line-comment:

      // Einzeilenkommentarzeichenopt
Einzeilenkommentarzeichen:
      Einzeilenkommentarzeichen Einzeilenkommentarzeichenopt
Einzeilenkommentarzeichen:
      // single-line-comment-charactersopt
single-line-comment-characters:
      single-line-comment-character single-line-comment-charactersopt
single-line-comment-character:

      Beliebiges Unicode-Zeichen mit Ausnahme von Zeilenumbruchzeichen
durch Trennzeichen getrennter Kommentar:
      Any Unicode character except a new-line-character
delimited-comment:

      /* Text des durch Trennzeichen getrennten Kommentarsopt Sternchen /      /* delimited-comment-textopt asterisks /
Text des durch Trennzeichen getrennten Kommentars:
      Abschnitt des durch Trennzeichen getrennten Kommentars Text des durch Trennzeichen getrennten Kommentarsopt
Abschnitt des durch Trennzeichen getrennten Kommentars:
delimited-comment-text:
      delimited-comment-section delimited-comment-textopt
delimited-comment-section:

      /      /
      Sternchenopt kein Schrägstrich oder Sternchen
Sternchen:
      asterisksopt not-slash-or-asterisk
asterisks:

      * Sternchenopt
kein Schrägstrich oder Sternchen:
      * asterisksopt
not-slash-or-asterisk:

      Beliebiges Unicode-Zeichen mit Ausnahme von * oder /      Any Unicode character except * or /

TokenTokens

Token:
      Bezeichner
      Schlüsselwort
      Literal
      Operator oder Trennzeichen
token:
      identifier
      keyword
      literal
      operator-or-punctuator

EscapezeichensequenzenCharacter escape sequences

Escapezeichensequenz:character-escape-sequence:
      #( Escapesequenzliste )      #( escape-sequence-list )
Escapesequenzliste:
      Einzelescapesequenz
      Escapesequenzliste
, Einzelescapesequenz
Einzelescapesequenz:
      lange Unicode-Escapesequenz
      kurze Unicode-Escapesequenz
      Steuerzeichenescapesequenz
      Escape-Escape
lange Unicode-Escapesequenz:
      Hexziffer Hexziffer Hexziffer Hexziffer Hexziffer Hexziffer Hexziffer Hexziffer
kurze Unicode-Escapesequenz:
      Hexziffer Hexziffer Hexziffer Hexziffer
Steuerzeichenescapesequenz:
      Steuerzeichen
Steuerzeichen:
escape-sequence-list:
      single-escape-sequence
      escape-sequence-list
, single-escape-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
control-character:

      cr      cr
      lf      lf
      tab      tab
Escape-Escape:escape-escape:
      #      #

LiteraleLiterals

Literal:
      Zahlenliteral
      Textliteral
      Textliteral
      NULL-Literal
      Verbatim-Literal
logisches Literal:
      true
      false
Zahlenliteral:
      Dezimalliteral
      Hexadezimalliteral
Dezimalziffern:
      Dezimalziffer Dezimalziffernopt
Dezimalziffer:
eine von
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:
one of

      0 1 2 3 4 5 6 7 8 9      0 1 2 3 4 5 6 7 8 9
Hexadezimalliteral:hexadecimal-number-literal:
      0x Hexziffern      0x hex-digits
      0X Hexziffern
Hexziffern:
      Hexziffer Hexziffernopt
Hexziffer:
eine von
      0X hex-digits
hex-digits:
      hex-digit hex-digitsopt
hex-digit:
one of

      0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f      0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
Dezimalliteral:
      Dezimalziffern
. Dezimalzifferexponentopt
decimal-number-literal:
      decimal-digits
. decimal-digits exponent-partopt

      . Dezimalzifferexponentopt
      Dezimalzifferexponentopt
Exponent:
      . decimal-digits exponent-partopt
      decimal-digits exponent-partopt
exponent-part:

      e Vorzeichenopt Dezimalziffern      e signopt decimal-digits
      E Vorzeichenopt Dezimalziffern
Vorzeichen:
one of
      E signopt decimal-digits
sign:
one of

      + -      + -
Textliteral:text-literal:
      " Textliteralzeichenopt "      " text-literal-charactersopt "
Textliteralzeichen:
      Textliteralzeichen Textliteralzeichenopt
Textliteralzeichen:
      Einzeltextzeichen
      Zeichenescapesequenz
      Escapesequenz mit doppelten Anführungszeichen
Einzeltextzeichen:
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)      Any character except " (U+0022) or # (U+0023) followed by ( (U+0028)
Escapesequenz mit doppelten Anführungszeichen:double-quote-escape-sequence:
      "" (U+0022, U+0022)      "" (U+0022, U+0022)
NULL-Literal:null-literal:
      null      null
Verbatim-Literal:verbatim-literal:
      #!" Textliteralzeichenopt "      #!" text-literal-charactersopt "

BezeichnerIdentifiers

Bezeichner:
      regulärer Bezeichner
      Bezeichner in Anführungszeichen
regulärer Bezeichner:
      verfügbarer Bezeichner
      verfügbarer Bezeichner Punktzeichen regulärer Bezeichner
verfügbarer Bezeichner:
identifier:
      regular-identifier
      quoted-identifier
regular-identifier:
      available-identifier
      available-identifier dot-character regular-identifier
available-identifier:

      Ein Schlüsselwort oder Bezeichner, das/der kein Schlüsselwort
ist Schlüsselwort oder Bezeichner:
      Buchstabe
      Unterstrich
      Bezeichnerstartzeichen Bezeichnerteilzeichen
Bezeichnerstartzeichen:
      Buchstabe
      Unterstrich
Bezeichnerteilzeichen:
      Bezeichnerteilzeichen Bezeichnerteilzeichenopt
Bezeichnerteilzeichen:
      Buchstabe
      Dezimalziffer
      Unterstrich
      Verbindungszeichen
      Kombinationszeichen
      Formatierungszeichen
generalisierter Bezeichner:
      generalisierter Bezeichnerteil
      generalisierter Bezeichner
nur durch Leerzeichen getrennt (U+0020) generalisierter Bezeichnerteil
generalisierter Bezeichnerteil:
      generalisiertes Bezeichnersegment
      Dezimalziffer generalisiertes Bezeichnersegment
generalisiertes Bezeichnersegment:
      Schlüsselwort oder Bezeichner
      Schlüsselwort oder Bezeichner Punkt Schlüsselwort oder Bezeichner
Punkt:
      A keyword-or-identifier that is not a keyword
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
separated only by blanks (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)      . (U+002E)
Unterstrichzeichen:underscore-character:
      _ (U+005F)      _ (U+005F)
Buchstabe:letter-character:
      Ein Unicode-Zeichen der Klassen „Lu“, „Ll“, „Lt“, „Lm“, „Lo“ oder „Nl“      A Unicode character of classes Lu, Ll, Lt, Lm, Lo, or Nl
Kombinationszeichen:combining-character:
      Ein Unicode-Zeichen der Klassen „Mn“ oder „Mc“      A Unicode character of classes Mn or Mc
Dezimalziffer:decimal-digit-character:
      Ein Unicode-Zeichen der Klasse „Nd“      A Unicode character of the class Nd
Verbindungszeichen:connecting-character:
      Ein Unicode-Zeichen der Klasse „Pc“      A Unicode character of the class Pc
Formatierungszeichen:formatting-character:
      Ein Unicode-Zeichen der Klasse „Cf“      A Unicode character of the class Cf
Bezeichner in Anführungszeichen:quoted-identifier:
      #" Textliteralzeichenopt "      #" text-literal-charactersopt "

Schlüsselwörter und vordefinierte BezeichnerKeywords and predefined identifiers

Vordefinierte Bezeichner und Schlüsselwörter können nicht neu definiert werden.Predefined identifiers and keywords cannot be redefined. Ein Bezeichner in Anführungszeichen kann verwendet werden, um Bezeichner zu behandeln, die andernfalls mit vordefinierten Bezeichnern oder Schlüsselwörtern kollidieren würden.A quoted identifier can be used to handle identifiers that would otherwise collide with predefined identifiers or keywords.

Schlüsselwort: one ofkeyword: one of
      and as each else error false if in is let meta not null or otherwise      and as each else error false if in is let meta not null or otherwise
      section shared then true try type #binary #date #datetime      section shared then true try type #binary #date #datetime
      #datetimezone #duration #infinity #nan #sections #shared #table #time      #datetimezone #duration #infinity #nan #sections #shared #table #time

Operatoren und TrennzeichenOperators and punctuators

Operator oder Trennzeichen: one ofoperator-or-punctuator: one of
      , ; = < <= > >= <> + - * / & ( ) [ ] { } @ ? => .. ...      , ; = < <= > >= <> + - * / & ( ) [ ] { } @ ? => .. ...

Syntaktische GrammatikSyntactic grammar

DokumenteDocuments

Dokument:
      Abschnittsdokument
      Ausdrucksdokument
document:
      section-document
      expression-document

AbschnittsdokumenteSection Documents

Abschnittsdokument:
      Abschnitt
Abschnitt:
      Literalattributeopt
section Abschnittsname ; Abschnittsmemberopt
Abschnittsname:
      Bezeichner
Abschnittsmember:
      Abschnittsmember Abschnittsmemberopt
Abschnittsmember:
      Literalattributeopt freigegebenopt Abschnittsmembername
= Ausdruck ;
section-document:
      section
section:
      literal-attributesopt
section section-name ; section-membersopt
section-name:
      identifier
section-members:
      section-member section-membersopt
section-member:
      literal-attributesopt sharedopt section-member-name
= expression ;

Abschnittsmembername:
      Bezeichner
section-member-name:
      identifier

AusdrucksdokumenteExpression Documents

AusdrückeExpressions

Ausdrucksdokument:
      Ausdruck
Ausdruck:
      logischer OR-Ausdruck
      each-Ausdruck
      function-Ausdruck
      let-Ausdruck
      if-Ausdruck
      fehlerauslösender Ausdruck
      Fehlerbehandlungsausdruck
expression-document:
      expression
expression:
      logical-or-expression
      each-expression
      function-expression
      let-expression
      if-expression
      error-raising-expression
      error-handling-expression

Logische AusdrückeLogical expressions

logischer OR-Ausdruck:
      logischer AND-Ausdruck
      logischer AND-Ausdruck
or logischer OR-Ausdruck
logischer AND-Ausdruck:
      is-Ausdruck
      logischer AND-Ausdruck
and is-Ausdruck
logical-or-expression:
      logical-and-expression
      logical-and-expression
or logical-or-expression
logical-and-expression:
      is-expression
      logical-and-expression
and is-expression

Is-AusdruckIs expression

is-Ausdruck:
      as-Ausdruck
      is-Ausdruck
is primitiver Nullable-Typ
primitiver Nullable-Typ:
is-expression:
      as-expression
      is-expression
is nullable-primitive-type
nullable-primitive-type:

      nullableopt primitiver Typ      nullableopt primitive-type

As-AusdruckAs expression

as-Ausdruck:
      Gleichheitsausdruck
      as-Ausdruck
as primitiver Nullable-Typ
as-expression:
      equality-expression
      as-expression
as nullable-primitive-type

GleichheitsausdruckEquality expression

Gleichheitsausdruck:
      relationaler Ausdruck
      relationaler Ausdruck
= Gleichheitsausdruck
      relationaler Ausdruck
<> Gleichheitsausdruck
equality-expression:
      relational-expression
      relational-expression
= equality-expression
      relational-expression
<> equality-expression

Relationaler AusdruckRelational expression

relationaler Ausdruck:
      additiver Ausdruck
      additiver Ausdruck
< relationaler Ausdruck
      additiver Ausdruck
> relationaler Ausdruck
      additiver Ausdruck
<= relationaler Ausdruck
      additiver Ausdruck
>= relationaler Ausdruck
relational-expression:
      additive-expression
      additive-expression
< relational-expression
      additive-expression
> relational-expression
      additive-expression
<= relational-expression
      additive-expression
>= relational-expression

Arithmetische AusdrückeArithmetic expressions

additiver Ausdruck:
      multiplikativer Ausdruck
      multiplikativer Ausdruck
+ additiver Ausdruck
      multiplikativer Ausdruck
- additiver Ausdruck
      multiplikativer Ausdruck
& _additiver Ausdruck
additive-expression:
      multiplicative-expression
      multiplicative-expression
+ additive-expression
      multiplicative-expression
- additive-expression
      multiplicative-expression
& _additive-expression

multiplikativer Ausdruck:
      Metadatenausdruck
      Metadatenausdruck
* multiplikativer Ausdruck
      Metadatenausdruck
/ multiplikativer Ausdruck
multiplicative-expression:
      metadata-expression
      metadata-expression
* multiplicative-expression
      metadata-expression
/ multiplicative-expression

MetadatenausdruckMetadata expression

Metadatenausdruck:
      unärer Ausdruck
      unärer Ausdruck
meta unärer Ausdruck
metadata-expression:
      unary-expression
      unary-expression
meta unary-expression

Unärer AusdruckUnary expression

unärer Ausdruck:
      Typausdruck
unary-expression:
      type-expression

      + unärer Ausdruck      + unary-expression
      - unärer Ausdruck      - unary-expression
      not unärer Ausdruck      not unary-expression

Primärer AusdruckPrimary expression

Primärer Ausdruck:
      Literalausdruck
      Listenausdruck
      Datensatzausdruck
      Bezeichnerausdruck
      Abschnittszugriffsausdruck
      Ausdruck in Klammern
      Feldzugriffsausdruck
      Elementzugriffsausdruck
      Aufrufausdruck
      nicht implementierter 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

LiteralausdruckLiteral expression

Literalausdruck:
      Literal
literal-expression:
      literal

BezeichnerausdruckIdentifier expression

Bezeichnerausdruck:
      Bezeichnerverweis
Bezeichnerverweis:
      Exklusivbezeichnerverweis
      Inklusivbezeichnerverweis
Exklusivbezeichnerverweis:
      Bezeichner
Inklusivbezeichnerverweis:
identifier-expression:
      identifier-reference
identifier-reference:
      exclusive-identifier-reference
      inclusive-identifier-reference
exclusive-identifier-reference:
      identifier
inclusive-identifier-reference:

      @ Bezeichner      @ identifier

AbschnittszugriffsausdruckSection-access expression

Abschnittzugriffsausdruck:
      Bezeichner
! Bezeichner
section-access-expression:
      identifier
! identifier

Ausdruck in KlammernParenthesized expression

Ausdruck in Klammern:parenthesized-expression:
      ( Ausdruck )      ( expression )

Nicht implementierter AusdruckNot-implemented expression

Nicht implementierter Ausdruck:not-implemented-expression:
      ...      ...

AufrufausdruckInvoke expression

Aufrufausdruck:
      primärer Ausdruck
( Argumentlisteopt )
invoke-expression:
      primary-expression
( argument-listopt )

Argumentliste:
      Ausdruck
      Ausdruck
, Argumentliste
argument-list:
      expression
      expression
, argument-list

ListenausdruckList expression

Listenausdruck:list-expression:
      { Elementlisteopt }      { item-listopt }
Elementliste:
      Element
      Element
, Elementliste
Element:
      Ausdruck
      Ausdruck
.. Ausdruck
item-list:
      item
      item
, item-list
item:
      expression
      expression
.. expression

DatensatzausdruckRecord expression

Datensatzausdruck:record-expression:
      [ Felderlisteopt ]      [ field-listopt ]
Felderliste:
      Feld
      Feld
, Felderliste
Feld:
      Feldname
= Ausdruck
Feldname:
      generalisierter Bezeichner
      Bezeichner in Anführungszeichen
field-list:
      field
      field
, field-list
field:
      field-name
= expression
field-name:
      generalized-identifier
      quoted-identifier

ElementzugriffsausdruckItem access expression

Elementzugriffsausdruck:
      Elementauswahl
      optionale Elementauswahl
Elementauswahl:
      primärer Ausdruck
{ Elementselektor }
item-access-expression:
      item-selection
      optional-item-selection
item-selection:
      primary-expression
{ item-selector }

optionale Elementauswahl:
      primärer Ausdruck
{ Elementselektor } ?
optional-item-selection:
      primary-expression
{ item-selector } ?

item-selector:
      expression
item-selector:
      expression

FeldzugriffsausdrückeField access expressions

Feldzugriffsausdruck:
      Feldauswahl
      implizite Zielfeldauswahl
      Projektion
      implizite Zielprojektion
Feldauswahl:
      primärer Ausdruck Feldselektor
Feldselektor:
      erforderlicher Feldselektor
      optionaler Feldselektor
erforderlicher Feldselektor:
field-access-expression:
      field-selection
      implicit-target-field-selection
      projection
      implicit-target-projection
field-selection:
      primary-expression field-selector
field-selector:
      required-field-selector
      optional-field-selector
required-field-selector:

      [ Feldname ]      [ field-name ]
optionaler Feldselektor:optional-field-selector:
      [ Feldname ] ?      [ field-name ] ?
Feldname:
      generalisierter Bezeichner
      Bezeichner mit Anführungszeichen
implizite Zielfeldauswahl:
       Feldselektor
Projektion:
      primärer Ausdruck erforderliche Projektion
      primärer Ausdruck optionale Projektion
erforderliche Projektion:
field-name:
      generalized-identifier
      quoted-identifier
implicit-target-field-selection:
      field-selector
projection:
      primary-expression required-projection
      primary-expression optional-projection
required-projection:

      [ erforderliche Selektorliste ]      [ required-selector-list ]
optionale Projektion:optional-projection:
      [ erforderliche Selektorliste ] ?      [ required-selector-list ] ?
erforderliche Selektorliste:
      erforderlicher Feldselektor
      erforderlicher Feldselektor
, erforderliche Selektorliste
implizite Zielprojektion:
      erforderliche Projektion
      optionale Projektion
required-selector-list:
      required-field-selector
      required-field-selector
, required-selector-list
implicit-target-projection:
      required-projection
      optional-projection

FunktionsausdruckFunction expression

Funktionsausdruck:function-expression:
      ( Parameterlisteopt ) Rückgabetypopt => Funktionstext
Funktionstext:
      Ausdruck
Parameterliste:
      unveränderliche Parameterliste
      unveränderliche Parameterliste
, optionale Parameterliste
      optionale Parameterliste
unveränderliche Parameterliste:
      Parameter
      Parameter
, unveränderliche Parameterliste
Parameter:
      Parametername Parametertypopt
Parametername:
      Bezeichner
Parametertyp:
      Assertion
Rückgabetyp:
      Assertion
Assertion:
      ( 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
parameter-type:
      assertion
return-type:
      assertion
assertion:

      as nullable-Primitivtyp
optionale Parameterliste:
      optionaler Parameter
      optionaler Parameter
, optionale Parameterliste
optionaler Parameter:
      as nullable-primitive-type
optional-parameter-list:
      optional-parameter
      optional-parameter
, optional-parameter-list
optional-parameter:

      optional Parameter      optional parameter

Each-AusdruckEach expression

each-Ausdruck:each-expression:
      each each-Ausdruckstext
each-Ausdruckstext:
      Funktionstext
      each each-expression-body
each-expression-body:
      function-body

Let-AusdruckLet expression

Let-Ausdruck:let-expression:
      let Variablenliste in Ausdruck
Variablenliste:
      Variable
      Variable
, Variablenliste
Variable:
      Variablenname
= Ausdruck
Variablenname:
      Bezeichner
      let variable-list in expression
variable-list:
      variable
      variable
, variable-list
variable:
      variable-name
= expression
variable-name:
      identifier

if-AusdruckIf expression

if-Ausdruck:if-expression:
      if if-Bedingung then TRUE-Ausdruck else FALSE-Ausdruck
if-Bedingung:
      Ausdruck
TRUE-Ausdruck:
      Ausdruck
FALSE-Ausdruck:
      Ausdruck
      if if-condition then true-expression else false-expression
if-condition:
      expression
true-expression:
      expression
false-expression:
      expression

TypausdruckType expression

Typausdruck:
      primärer Ausdruck
type-expression:
      primary-expression

      type primärer Typ
Typ:
      Ausdruck in Klammern
      primärer Typ
primärer Typ:
      primitiver Typ
      Datensatztyp
      Listentyp
      Funktionstyp
      Tabellentyp
      Nullable-Typ
primitiver Typ:
one of
      type primary-type
type:
      parenthesized-expression
      primary-type
primary-type:
      primitive-type
      record-type
      list-type
      function-type
      table-type
      nullable-type
primitive-type:
one of

      any anynonnull binary date datetime datetimezone duration function      any anynonnull binary date datetime datetimezone duration function
      list logical none null number record table text type      list logical none null number record table text type
Datensatztyp: record-type:
      [ Kennzeichnung für offene Datensätze ]      [ open-record-marker ]
      [ Feldspezifikationslisteopt ]      [ field-specification-listopt ]
      [ Feldspezifikationsliste , Kennzeichnung für offene Datensätze ]      [ field-specification-list , open-record-marker ]
Feldspezifikationsliste:
      Feldspezifikation
      Feldspezifikation
, Feldspezifikationsliste
Feldspezifikation:
field-specification-list:
      field-specification
      field-specification
, field-specification-list
field-specification:

      optionalopt Feldname Feldtypspezifikationopt
Feldtypspezifikation:
      optionalopt field-name field-type-specificationopt
field-type-specification:

      = Feldtyp
Feldtyp:
      Typ
Kennzeichnung für offene Datensätze:
      = field-type
field-type:
      type
open-record-marker:

      ...      ...
Listentyp:list-type:
      { Elementtyp }      { item-type }
Elementtyp:
      Typ
Funktionstyp:
item-type:
      type
function-type:

      function ( Parameterspezifikationslisteopt ) Rückgabetyp
Parameterspezifikationsliste:
      Liste erforderlicher Parameterspezifikationen
      Liste erforderlicher Parameterspezifikationen
, Liste optionaler Parameterspezifikationen
      Liste optionaler Parameterspezifikationen
Liste erforderlicher Parameterspezifikationen:
      erforderliche Parameterspezifikation
      erforderliche Parameterspezifikation
, Liste erforderlicher Parameterspezifikationen
erforderliche Parameterspezifikation:
      Parameterspezifikation
Liste optionaler Parameterspezifikationen:
      optionale Parameterspezifikation
      optionale Parameterspezifikation
, Liste optionaler Parameterspezifikationen
optionale Parameterspezifikation:
      function ( parameter-specification-listopt ) return-type
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-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
Parameterspezifikation:
      Parametername Parametertyp
Tabellentyp:
      optional parameter-specification
parameter-specification:
      parameter-name parameter-type
table-type:

      table Zeilentyp
Zeilentyp:
      table row-type
row-type:

      [ Feldspezifikationsliste ]      [ field-specification-list ]
Nullable-Typ:nullable-type:
      nullable Typ      nullable type

Fehlerauslösender AusdruckError raising expression

Fehlerauslösender Ausdruck:error-raising-expression:
      error Ausdruck_      error expression_

FehlerbehandlungsausdruckError handling expression

Fehlerbehandlungsausdruck:error-handling-expression:
      try geschützter Ausdruck otherwise-Klauselopt
geschützter Ausdruck:
      Ausdruck
otherwise-Klausel:
      try protected-expression otherwise-clauseopt
protected-expression:
      expression
otherwise-clause:

      otherwise Standardausdruck
Standardausdruck:
      Ausdruck
      otherwise default-expression
default-expression:
      expression

LiteralattributeLiteral Attributes

Literalattribute:
      Datensatzliteral
Datensatzliteral:
literal-attributes:
      record-literal
record-literal:

      [ Literalfeldlisteopt ]      [ literal-field-listopt ]
Literalfeldliste:
      Literalfeld
      Literalfeld
, Literalfeldliste
Literalfeld:
      Feldname
= beliebiges Literal
Listenliteral:
literal-field-list:
      literal-field
      literal-field
, literal-field-list
literal-field:
      field-name
= any-literal
list-literal:

      { Literalelementlisteopt }      { literal-item-listopt }
Literalelementliste:
      beliebiges Literal
      beliebiges Literal
, Literalelementliste
beliebiges Literal
      Datensatzliteral
      Listenliteral
      logisches Literal
      Zahlenliteral
      Textliteral
      NULL-Literal
literal-item-list:
      any-literal
      any-literal
, literal-item-list
any-literal:
      record-literal
      list-literal
      logical-literal
      number-literal
      text-literal
      null-literal