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 avand 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-attributesoptsection
section-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:
nullable
opt 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:
each
hver-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:
if
hvis-betingelsethen
usannuttrykk 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:
optional
opt 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:
optional
parameter-spesifikasjon
parameter-spesifikasjon:
parametertype for parameternavn
parametertype:
assertion
påstand:
as
type
tabelltype:
table
radtype
radtype:
[
velger feltspesifikasjonsliste ]
nullbar type:
nullable
type
Feil under heving av uttrykk
error-raising-expression:
error
uttrykk_
Feilbehandlingsuttrykk
feilbehandlingsuttrykk:
try
valg av feilbehandlingfor beskyttet uttrykk
beskyttet uttrykk:
uttrykk
feilbehandling:
ellers-setningsdel
catch-clause
ellers-setningsdel:
otherwise
standarduttrykk
standarduttrykk:
uttrykk
catch-clause:
catch
catch-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