Share via


Geconsolideerde grammatica

Lexicale grammatica

lexicale eenheid:
      kies voor lexicale elementen
lexicale elementen:
      lexical-element lexical-elementsopt
lexical-element:
      spatie
      token
      Commentaar

Witruimte

Whitespace:
      Elk teken met Unicode-klasse Zs
      Horizontaal tabteken (U+0009)
      Verticaal tabteken (U+000B)
      Formulierfeedteken (U+000C)
      Regelterugloopteken (U+000D) gevolgd door regelinvoerteken (U+000A) new-line-character
new-line-character:

      Regelterugloopteken (U+000D)
      Teken voor regelinvoer (U+000A)
      Volgend regelteken (U+0085)
      Teken voor regelscheidingsteken (U+2028)
      Alineascheidingsteken (U+2029)

Opmerking

Commentaar:
      opmerking met één regel
      met scheidingstekens gescheiden opmerking

opmerking met één regel:
      //Opt voor één regel-opmerking-tekens
tekens met één regel opmerking:
      opt-tekens voor één regel-opmerking-tekenmet één regel
teken met één regel opmerking:

      Unicode-tekens behalve een nieuw regelteken
met scheidingstekens gescheiden opmerking:

      /*sterretjes met scheidingstekens voor tekst met scheidingstekens/
tekst met scheidingstekens:
      opt voor tekst met scheidingstekens in secties met scheidingstekens
sectie met scheidingstekens:

      /
      sterretjes kiezen voor not-slash-or-asterisk
Sterretjes:

      *sterretjeskiezen
not-slash-or-asterisk:

      Unicode-tekens behalve * of /

Tokens

Token:
      id
      Trefwoord
      Letterlijke
      operator-or-punctuator

Escapereeksen voor tekens

character-escape-sequence:
      #(escape-sequence-list)
escape-sequence-list:
      een escape-reeks
      escape-sequence-list
,single-escape-sequence
een escape-reeks:
      lange unicode-escape-reeks
      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
      lf
      tab
escape-escape:
      #

Letterlijke waarden

Letterlijke:
      logische letterlijke waarde
      getal-letterlijke waarde
      letterlijke tekst
      null-letterlijke waarde
      letterlijke letterlijke verbatim
logische letterlijke waarde:
      true
      false
aantal-letterlijke waarden:
      decimaal-getal-letterlijk
      hexadecimale-getal-letterlijke
decimale cijfers:
      kies voordecimale cijfers
decimal-digit:
een van
      0 1 2 3 4 5 6 7 8 9
hexadecimale-getal-letterlijke waarde:
      0xhex-digits
      0Xhex-digits
hex-digits:
      hex-digit hex-digitsopt
hex-digit:
een van
      0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
decimaal-getal-letterlijk:
      decimal-digits
.decimal-digits exponent-partopt
      .exponent-part-optvoor decimale cijfers
      exponent-part-optvoor decimale cijfers
exponent-part:

      etekenkiezen voor decimale cijfers
      Etekenkiezen voor decimale cijfers
teken:
een van
      + -
letterlijke tekst:
      "opt voor tekst-letterlijke tekens"
letterlijke tekst:
      tekst-letterlijk-teken-letterlijk-tekenskiezen
tekst-letterlijk-teken:
      één tekstteken
      teken-escape-reeks
      double-quote-escape-sequence
enkel tekstteken:

      Elk teken behalve " (U+0022) of # (U+0023) gevolgd door ( (U+0028)
double-quote-escape-sequence:
      "" (U+0022, U+0022)
null-literal:
      null
letterlijke verbatim:
      #!"opt voor tekst-letterlijke tekens"

Identifiers

Id:
      regular-identifier
      id tussen aan/ uit
regular-identifier:
      beschikbare id
      available-identifier dot-character regular-identifier
beschikbare id:

      Een trefwoord of id die geen trefwoord is
trefwoord of id:
      letterteken
      onderstrepingsteken
      identifier-start-character identifier-part-characters
id-beginteken:
      letterteken
      onderstrepingsteken
identifier-part-characters:
      id-part-character identifier-part-charactersopt
id-part-character:
      letterteken
      decimal-digit-character
      onderstrepingsteken
      verbindingsteken
      combineren-teken
      opmaakteken
gegeneraliseerde id:
      generalized-identifier-part
      generalized-identifier
, gescheiden door lege waarden (U+0020) generalized-identifier-part
generalized-identifier-part:
      gegeneraliseerde id-segment
      decimal-digit-character generalized-identifier-segment
gegeneraliseerde id-segment:
      trefwoord of id
      trefwoord-of-id-punt-teken-trefwoord-of-id
puntteken:

      . (U+002E)
onderstrepingsteken:
      _ (U+005F)
letterteken:_
      Een Unicode-teken van klassen Lu, Ll, Lt, Lm, Lo of Nl
combineren-teken:
      Een Unicode-teken van klassen Mn of Mc
decimal-digit-character:
      Een Unicode-teken van de klasse Nd
verbindingsteken:
      Een Unicode-teken van de klasse-pc
opmaakteken:
      Een Unicode-teken van de klasse Cf
aan/uit-id:
      #"opt voor tekst-letterlijke tekens"

Trefwoorden en vooraf gedefinieerde id's

Vooraf gedefinieerde id's en trefwoorden kunnen niet opnieuw worden gedefinieerd. Een aanhalings-id kan worden gebruikt om id's te verwerken die anders zouden botsen met vooraf gedefinieerde id's of trefwoorden.

trefwoord: een van
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 en leestekens

operator-or-punctuator: een van
      , ; = < <= > >= <> + - * / & ( ) [ ] { } @ ? ?? => .. ...

Syntactische grammatica

Documenten

Document:
      section-document
      expression-document

Sectiedocumenten

section-document:
      section
Sectie:
      opt-name;section-membersopt-literal-attributes optsection
sectienaam:
      id
sectie-leden:
      section-member section-membersopt
sectielid:
      literal-attributesopt sharedopt section-member-name
=expression;
sectie-lidnaam:
      Id

Expressiedocumenten

Expressies

expression-document:
      Expressie
Expressie:
      elke expressie logische of expressie

      function-expression
      let-expression
      if-expression
      fout bij het genereren van expressies
      foutafhandeling-expressie

Logische expressies

logische of expressie:
      logische en expressie
      logical-and-expression
orlogical-or-expression
logische en expressie:
      is-expression
      logical-and-expression
andis-expression

Is expressie

is-expression:
      as-expression
      is-expression
isnullable-primitive-type
nullable-primitive-type:

      nullableopt primitive-type

Als expressie

as-expression:
      gelijkheidsexpressie
      as-expression
asnullable-primitive-type

Gelijkheidsexpressie

gelijkheidsexpressie:
      relationele expressie
      relationele-expressie
=gelijkheidsexpressie
      relationele-expressie
<>gelijkheidsexpressie

Relationele expressie

relationele expressie:
      additieve expressie
      relationele expressie voor additieve expressie
<
      relationele expressie voor additieve expressie
>
      relationele expressie voor additieve expressie
<=
      relationele expressie voor additieve expressie
>=

Rekenkundige expressies

additieve expressie:
      vermenigvuldigingsexpressie
      multiplicative-expression
+additieve expressie
      multiplicative-expression
-additieve expressie
      multiplicative-expression
& _additive-expression
vermenigvuldigingsexpressie:
      metagegevensexpressie
      multiplicative-expression voor metagegevensexpressie
*
      multiplicative-expression voor metagegevensexpressie
/

Metagegevensexpressie

metadata-expression:
      unary-expression
      unary-expression
metaunary-expression

Unaire expressie

unary-expression:
      type-expressie

      +unary-expression
      -unary-expression
      notunary-expression

Primaire expressie

primaire expressie:
      letterlijke expressie
      list-expression
      record-expression
      id-expressie
      section-access-expression
      haakjes-expressie
      field-access-expression
      item-access-expression
      invoke-expression
      niet-geïmplementeerde expressie

Letterlijke expressie

letterlijke expressie:
      Letterlijke

Id-expressie

id-expressie:
      id-verwijzing
id-verwijzing:
      exclusive-identifier-reference
      inclusive-identifier-reference
exclusive-identifier-reference:
      id
inclusive-identifier-reference:

      @id

Expressie voor sectietoegang

section-access-expression:
      id-id
!

Expressie tussen haakjes

haakjes-expressie:
      (Expressie)

Niet-geïmplementeerde expressie

niet-geïmplementeerde expressie:
      ...

Expressie aanroepen

invoke-expression:
      primary-expression
(argument-listopt)
argument-list:
      Expressie
      expressie
,argument-lijst

Lijstexpressie

list-expression:
      {opt voor itemlijst}
itemlijst:
      Item
      itemitemlijst
,
item:
      Expressie
      expressie expressie
..

Recordexpressie

record-expression:
      [opt voorlijst met velden]
lijst met velden:
      veld
      veldveldlijst
,
Veld:
      veldnaamexpressie
=
veldnaam:
      gegeneraliseerde id
      id tussen aan/ uit

Expressie voor itemtoegang

item-access-expression:
      itemselectie
      optioneel-itemselectie
itemselectie:
primaire expressie-itemselector
{}
optioneel-itemselectie:
      primary-expression
{item-selector} ?
itemselector:
      Expressie

Expressies voor veldtoegang

field-access-expression:
      veldselectie
      impliciete selectie van doelvelden
      Projectie
      impliciete doelprojectie
veldselectie:
      primary-expression field-selector
veldkiezer:
      required-field-selector
      optioneel-veldselector
required-field-selector:

      [veldnaam]
optioneel-veldselector:
      [veldnaam] ?
impliciete doelveldselectie:
      veldkiezer
Projectie:
      primary-expression required-projection
      primaire-expressie optioneel-projectie
required-projection:_
      [required-selector-list]
optioneel-projectie:
      [required-selector-list] ?
required-selector-list:
      required-field-selector
      required-field-selector
,required-selector-list
impliciete doelprojectie:
      vereiste projectie
      optioneel-projectie

Functie-expressie

function-expression:
      (parameterlijstopt)return-typeopt=>function-body
functietekst:
      Expressie
parameterlijst:
      fixed-parameter-list
      fixed-parameter-list
,optional-parameter-list
      optional-parameter-list
fixed-parameter-list:
      parameter
      parameter
,fixed-parameter-list
Parameter:
      parameter-name primitive-parameter-typeopt
parameternaam:
      id
primitive-parameter-type:
      primitieve assertie
retourtype:
      primitieve assertie
primitieve assertie:

      asnullable-primitive-type
optioneel-parameterlijst:
      optioneel-parameter
      optional-parameter
,optional-parameter-list
optioneel-parameter:

      optionalParameter

Elke expressie

elke expressie:
      eachelke expressie-hoofdtekst
elke expressie-hoofdtekst:
      functietekst

Expressie toestaan

let-expression:
      letexpressie voor variabele-lijstin
variable-list:
      variabele
      variabele-lijst
,
Variabele:
      expressie met variabele naam
=
variabelenaam:
      Id

If-expressie

if-expression:
      ifif-conditionthentrue-expressionelsefalse-expression
if-condition:
      Expressie
true-expression:
      Expressie
false-expression:
      Expressie

Typeexpressie

type-expressie:
      primaire expressie

      typeprimair type
type:
      primaire expressie
      primair type
primair type:
      primitief-type
      recordtype
      list-type
      functietype
      tabeltype
      nullable-type
primitieve-type:
een van
      any anynonnull binary date datetime datetimezone duration function
      list logical none null number record table text time type
recordtype:
      [open-record-marker]
      [opt voor field-specification-list]
      [field-specification-list,open-record-marker]
field-specification-list:
      veldspecificatie
      field-specification
,field-specification-list
veldspecificatie:

      optional opt field-name field-type-specificationopt
veldtypespecificatie:

      =veldtype
veldtype:
      type
open-recordmarkering:

      ...
list-type:
      {itemtype}
itemtype:
      type
functietype:

      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:
      parameterspecificatie
optional-parameter-specification-list:
      optioneel-parameterspecificatie
      optional-parameter-specification optional-parameter-specification-list
,
optional-parameter-specification:

      optionalparameterspecificatie
parameterspecificatie:
      parameter-naam parameter-type
parametertype:
      assertion
Bewering:

      asType
tabeltype:

      tablerijtype
rijtype:

      [opt voor field-specification-list]
nullable-type:
      nullabletype

Fout bij het genereren van expressies

foutverheffen-expressie:
      error Expressie_

Expressie voor foutafhandeling

error-handling-expression:
      tryprotected-expression error-handleropt
beveiligde expressie:
      Expressie
error-handler:
      anders-component
      catch-component
anders-component:

      otherwisestandaardexpressie
standaardexpressie:
      Expressie
catch-component:
      catchcatch-function
catch-function:
      (parameter-nameopt=>)function-body

Letterlijke kenmerken

letterlijke kenmerken:
      letterlijke record
letterlijke record:

      [opt voor literal-field-list]
literal-field-list:
      letterlijk veld
      literal-field
,literal-field-list
letterlijk veld:
      veldnaam
=elke letterlijke waarde
letterlijke lijst:

      {opt voor literal-item-list}
literal-item-list:
      elke letterlijke
      any-literal literal-item-list
,
any-literal:
      letterlijke record
      letterlijke lijst
      logische letterlijke waarde
      getal-letterlijke waarde
      letterlijke tekst
      null-letterlijke waarde