Del via


Konsolidert grammatikk

Leksikalsk grammatikk

leksikalsk enhet:
      leksikalske elementervelger
leksikalske elementer:
      leksikalsk element leksikalsk-elementervelger
leksikalsk element:
      mellomrom
      merke
      kommentar

Mellomrom

Mellomrom:
      Alle tegn med Unicode-klasse Zs
      Vannrett tabulatortegn (U+0009)
      Loddrett tabulatortegn (U+000B)
      Skjemafeedtegn (U+000C)
      Linjeskifttegn (U+000D) etterfulgt av linjefeedtegn (U+000A) nytt linjetegn
nytt linjetegn:

      Returtegn for vogn (U+000D)
      Linjefeedtegn (U+000A)
      Neste linjetegn (U+0085)
      Linjeskilletegn (U+2028)
      Avsnittsskilletegn (U+2029)

Kommentar

kommentar:
      kommentar med én linje
      delimited-comment

kommentar med én linje:
      // enkeltlinje-kommentar-tegnvelger
kommentartegn med én linje:
      enkeltlinje-kommentar-tegn enkeltlinje-kommentar-tegnvelger
kommentartegn med én linje:

      Alle Unicode-tegn unntatt et nytt linjetegn
kommentar med skilletegn:

      /*delimited-comment-textopt asterisks /
delimited-comment-text:
      delimited-comment-section delimited-comment-textopt
delimited-comment-section:

      /
      stjernervelger ikke-skråstrek-eller-stjerne
Stjerner:

      *stjerner velger
not-slash-or-asterisk:

      Alle Unicode-tegn unntatt * eller /

Tokener

merke:
      identifikator
      nøkkelord
      bokstavelig
      operator-eller-tegnsetting

Tegnrømningssekvenser

tegn-escape-sekvens:
      #( escape-sequence-list )
escape-sequence-list:
      enkelt-escape-sekvens
      escape-sequence-list
, single-escape-sequence
enkelt-escape-sekvens:
      long-unicode-escape-sequence
      kort-unicode-escape-sekvens
      kontroll-tegn-escape-sekvens
      escape-escape
long-unicode-escape-sequence:
      heksadesimal heksadesimal heksadesimal heksadesimal heksadesimal heksadesimal heksadesimal heksadesimal siffer
kort-unicode-escape-sekvens:
      heksadesimal heksadesimal heksadesimal heksadesimal heksadesimal
kontroll-tegn-escape-sekvens:
      kontroll-tegn
kontroll-tegn:

      cr
      lf
      tab
escape-escape:
      #

Litteraler

bokstavelig:
      logisk-litteral
      talllitteral
      tekstlitteral
      null-litteral
      ordrett-litteral
logisk-litteral:
      true
      false
talllitteral:
      desimaltall-litteral
      heksadesimaltall-litteral
desimaltall:
      desimalsifrede desimalervelger
desimaltall:
én av
      0 1 2 3 4 5 6 7 8 9
heksadesimaltall-litteral:
      0x heksadesimale sifre
      0X heksadesimale sifre
heksadesimale sifre:
      heksadesimale heksadesimale sifrevelger
heksadesimal siffer:
én av
      0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
desimaltall-litteral:
      desimalsifre
.desimalsifre eksponentdel
      . eksponentdelfor desimalsifre
      eksponentdelfor desimalsifre
eksponentdel:

      e signopt decimal-digits
      E signopt decimal-digits
sign:
én av
      + -
tekstlitteral:
      " tekst-litteral-tegnvelger "
tekst-litterale tegn:
      tekst-litteral-tegn tekst-litteral-tegnvelger
tekst-litteral-tegn:
      enkelttekst-tegn
      tegn-escape-sekvens
      dobbelt-sitat-escape-sekvens
enkeltteksttegn:

      Alle tegn unntatt " (U+0022) eller # (U+0023) etterfulgt av ( (U+0028)
dobbelt-sitat-escape-sekvens:
      "" (U+0022, U+0022)
null-litteral:
      null
ordrett-litteral:
      #!"tekst-litteral-tegnvelger "

Identifikatorer

Identifikator:
      vanlig identifikator
      quoted-identifier
vanlig identifikator:
      tilgjengelig identifikator
      vanlig identifikator med tilgjengelige identifikatorer
tilgjengelig identifikator:

      Et nøkkelord eller en identifikator som ikke er et nøkkelord
nøkkelord eller identifikator:
      letter-tegn
      understrekingstegn
      identifikator-start-tegn-ID-deltegn
identifikator-start-tegn:
      letter-tegn
      understrekingstegn
identifikatordeltegn:
      Identifier-part-character identifier-part-charactersopt
identifikatordeltegn:
      letter-tegn
      desimal-siffer-tegn
      understrekingstegn
      koblingstegn
      kombinere tegn
      formateringstegn
generalisert identifikator:
      generalisert identifikatordel
      generalisert-identifikator
atskilt bare med tomme (U+0020) generalisert-identifikator-del
generalisert identifikatordel:
      generalisert-identifikator-segment
      desimal-siffer-tegn generalisert-identifikator-segment
generalisert-identifikator-segment:
      nøkkelord eller identifikator
      nøkkelord-eller-identifikator-nøkkelord-eller-identifikator for prikk-tegn
prikketegn:

      . (U+002E)
understrekingstegn:
      _ (U+005F)
letter-character:_
      Et Unicode-tegn i klassene Lu, Ll, Lt, Lm, Lo eller Nl
kombinerer tegn:
      Et Unicode-tegn i klassene Mn eller Mc
desimalsifret tegn:
      Et Unicode-tegn i klassen Nd
koblingstegn:
      Et Unicode-tegn på klasse-PC-en
formateringstegn:
      Et Unicode-tegn i klassen Cf
quoted-identifier:
      #" tekst-litteral-tegnvelger "

Nøkkelord og forhåndsdefinerte identifikatorer

Forhåndsdefinerte identifikatorer og nøkkelord kan ikke omdefineres. En sitert identifikator kan brukes til å håndtere identifikatorer som ellers ville kollidere med forhåndsdefinerte identifikatorer eller nøkkelord.

nøkkelord: ett av
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

Operatorer og tegnsettingstegn

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

Syntaktisk grammatikk

Dokumenter

dokument:
      inndelingsdokument
      uttrykksdokument

Inndelingsdokumenter

inndelingsdokument:
      seksjon
seksjon:
      literal-attributesopt
sectionsection-name;section-members opt
inndelingsnavn:
      identifikator
inndelingsmedlemmer:
      section-member section-membersopt
inndelingsmedlem:
      litteral-attributter velger delt opt-section-member-name-uttrykk
= ;
navn på inndelingsmedlem:
      Identifikator

Uttrykksdokumenter

Uttrykk

uttrykk-dokument:
      uttrykk
uttrykk:
      logisk-eller-uttrykk
hvert uttrykk
      funksjon-uttrykk
      let-expression
      if-expression
      error-raising-expression
      feilbehandlingsuttrykk

Logiske uttrykk

logisk-eller-uttrykk:
      logisk og uttrykk
      logisk-og-uttrykk
or logisk-eller-uttrykk
logisk og uttrykk:
      er-uttrykk
      logisk-og-uttrykk
and er-uttrykk

Er uttrykk

er-uttrykk:
      as-expression
      is-expression
is nullable-primitive-type
nullable-primitive-type:

      nullableopt primitive-type

Som uttrykk

as-expression:
      likhetsuttrykk
      as-expression
as nullable-primitive-type

Likhetsuttrykk

likhetsuttrykk:
      relasjonsuttrykk
      likhetsuttrykk for relasjonsuttrykk
=
      likhetsuttrykk for relasjonsuttrykk
<>

Relasjonsuttrykk

relasjonsuttrykk:
      additive-uttrykk
      additive-uttrykk
< relasjonsuttrykk
      additive-uttrykk
> relasjonsuttrykk
      additive-uttrykk
<= relasjonsuttrykk
      additive-uttrykk
>= relasjonsuttrykk

Aritmetiske uttrykk

additive-uttrykk:
      multiplikativt uttrykk
      multiplikativt uttrykk
+ additive-uttrykk
      multiplikativt uttrykk
- additive-uttrykk
      multiplikativt uttrykk
& _additive-uttrykk
multiplikativt uttrykk:
      metadata-uttrykk
      multiplikativt uttrykk for metadata-uttrykk
*
      multiplikativt uttrykk for metadata-uttrykk
/

Metadatauttrykk

metadata-uttrykk:
      unary-expression
      unary-expression
meta unary-expression

Uært uttrykk

uær-uttrykk:
      type-uttrykk

      + unary-expression
      - unary-expression
      not unary-expression

Primært uttrykk

primært uttrykk:
      litteral-uttrykk
      listeuttrykk
      postuttrykk
      identifikator-uttrykk
      section-access-expression
      parentes-uttrykk
      felttilgangsuttrykk
      element-tilgang-uttrykk
      invoke-expression
      ikke implementert-uttrykk

Litteraluttrykk

litteral-uttrykk:
      bokstavelig

Identifikatoruttrykk

identifikator-uttrykk:
      identifikatorreferanse
identifikatorreferanse:
      eksklusiv-identifikator-referanse
      inclusive-identifier-reference
eksklusiv-identifikator-referanse:
      identifikator
inclusive-identifier-reference:

      @ Identifikator

Inndelingstilgangsuttrykk

section-access-expression:
      ID for
! identifikator

Parentesert uttrykk

parentes-uttrykk:
      ( uttrykk )

Ikke implementert uttrykk

ikke implementert-uttrykk:
      ...

Aktiver uttrykk

invoke-expression:
      valg av argumentliste for primæruttrykk
( )
argumentliste:
      uttrykk
      argumentliste for uttrykk
,

Listeuttrykk

listeuttrykk:
      { velger du elementliste }
elementliste:
      vare
      elementelementliste
,
vare:
      uttrykk
      uttrykksuttrykk
..

Postuttrykk

postuttrykk:
      [ velger feltliste ]
feltliste:
      felt
      feltfeltliste
,
felt:
      feltnavnuttrykk
=
feltnavn:
      generalisert identifikator
      quoted-identifier

Elementtilgangsuttrykk

element-tilgang-uttrykk:
      elementvalg
      valgfritt elementvalg
elementvalg:
elementvelger for primæruttrykk
{ }
valgfritt elementvalg:
      elementvelger for primært uttrykk
{ } ?
elementvelger:
      uttrykk

Felttilgangsuttrykk

felttilgangsuttrykk:
      feltvalg
      implisitt målfeltvalg
      projeksjon
      implisitt målprojeksjon
feltvalg:
      feltvelger for primæruttrykk
feltvelger:
      obligatorisk feltvelger
      valgfritt feltvelger
obligatorisk feltvelger:

      [ feltnavn ]
valgfritt feltvelger:
      [ feltnavn ] ?
implisitt målfeltvalg:
      feltvelger
projeksjon:
      obligatorisk projeksjon av primæruttrykk
      valgfri projeksjon av primæruttrykk
obligatorisk projeksjon:_
      [obligatorisk velgerliste ]
valgfri projeksjon:
      [obligatorisk velgerliste ] ?
obligatorisk velgerliste:
      obligatorisk feltvelger
      obligatorisk feltvelger
, obligatorisk velgerliste
implisitt målprojeksjon:
      obligatorisk projeksjon
      valgfri projeksjon

Funksjonsuttrykk

funksjon-uttrykk:
      ( parameter-listopt)return-typeopt=>function-body
funksjonstekst:
      uttrykk
parameterliste:
      fast-parameter-liste
      fast-parameter-liste
, valgfritt-parameter-liste
      valgfri parameterliste
fast-parameter-liste:
      parameter
      parameter
, fast-parameter-liste
parameter:
      parameternavn primitive-parameter-typeopt
parameternavn:
      identifikator
primitiv-parametertype:
      primitiv deklarasjon
returtype:
      primitiv deklarasjon
primitiv deklarasjon:

      as nullable-primitive-type
valgfri parameterliste:
      valgfri parameter
      valgfri parameter
, valgfri parameterliste
valgfri parameter:

      optional parameter

Hvert uttrykk

hvert uttrykk:
      eachhver-uttrykk-brødtekst
hver uttrykkstekst:
      funksjon-brødtekst

La uttrykk

let-expression:
      let variabellisteuttrykkin
variabel-liste:
      Variabel
      variabel
, variabel-liste
variabel:
      variabelnavnuttrykk
=
variabelnavn:
      Identifikator

Hvis uttrykk

hvis-uttrykk:
      ifhvis-betingelsethenusannuttrykk med sann uttrykkelse
hvis-betingelse:
      uttrykk
true-expression:
      uttrykk
usant uttrykk:
      uttrykk

Typeuttrykk

type-uttrykk:
      primært uttrykk

      type primærtype
type:
      primært uttrykk
      primærtype
primærtype:
      primitiv type
      posttype
      listetype
      funksjonstype
      tabelltype
      nullbar-type
primitiv-type:
én av
      any anynonnull binary date datetime datetimezone duration function
      list logical none null number record table text time type
posttype:
      [ open-record- ]
      [ velger feltspesifikasjonsliste ]
      [ felt-spesifikasjon-liste , åpen-post-indikator ]
feltspesifikasjonsliste:
      feltspesifikasjon
      feltspesifikasjonsliste for feltspesifikasjon
,
feltspesifikasjon:

      optionalopt field-name field-type-specificationopt
felttype-spesifikasjon:

      =felttype
felttype:
      type
open-record-:

      ...
listetype:
      { elementtype }
elementtype:
      type
funksjonstype:

      function ( parameter-specification-listopt)return-type
parameter-spesifikasjon-liste:
      obligatorisk parameter-spesifikasjon-liste
      required-parameter-specification-list
, optional-parameter-specification-list
      valgfri parameter-spesifikasjon-liste
obligatorisk parameter-spesifikasjon-liste:
      obligatorisk parameter-spesifikasjon
      obligatorisk parameter-spesifikasjon
, obligatorisk-parameter-spesifikasjon-liste
obligatorisk parameter-spesifikasjon:
      parameter-spesifikasjon
valgfri parameter-spesifikasjon-liste:
      valgfri parameter-spesifikasjon
      valgfri parameter-spesifikasjon
, valgfritt-parameter-spesifikasjon-liste
valgfri parameter-spesifikasjon:

      optionalparameter-spesifikasjon
parameter-spesifikasjon:
      parametertype for parameternavn
parametertype:
      assertion
påstand:

      astype
tabelltype:

      table radtype
radtype:

      [ velger feltspesifikasjonsliste ]
nullbar type:
      nullable type

Feil under heving av uttrykk

error-raising-expression:
      error uttrykk_

Feilbehandlingsuttrykk

feilbehandlingsuttrykk:
      tryvalg av feilbehandlingfor beskyttet uttrykk
beskyttet uttrykk:
      uttrykk
feilbehandling:
      ellers-setningsdel
      catch-clause
ellers-setningsdel:

      otherwisestandarduttrykk
standarduttrykk:
      uttrykk
catch-clause:
      catchcatch-function
catch-funksjon:
      (parameternavnopt ) => function-body

Litterale attributter

litteral-attributter:
      postlitteral
postlitteral:

      [velger litteral-felt-liste ]
litteral-felt-liste:
      litteralfelt
      litteral-felt
, litteral-felt-liste
litteralfelt:
      feltnavn for en hvilken som
= helst litteral
listelitteral:

      {velger litteral-element-liste }
litteral-element-liste:
      hvilken som helst litteral
      litteral
, litteral-element-liste
hvilken som helst litteral:
      postlitteral
      listelitteral
      logisk-litteral
      talllitteral
      tekstlitteral
      null-litteral