Gramatyka skonsolidowana
Gramatyka leksykalna
leksykalna jednostka:
optykały-elementyleksykalne
elementy leksykalne:
lexical-element lexical-elementsopt opt
element-leksykalny:
znak odstępu
token
komentarz
Odstępu
Odstępu:
Dowolny znak z klasą Unicode Zs
Znak karty poziomej (U+0009
)
Znak karty pionowej (U+000B
)
Znak kanału informacyjnego formularza (U+000C
)
Znak powrotu karetki (U+000D
), po którym następuje znak przesuwu wiersza (U+000A
) znak nowego wiersza
znak nowego wiersza:
Znak powrotu karetki (U+000D
)
Znak kanału informacyjnego wiersza (U+000A
)
Znak następnego wiersza (U+0085
)
Znak separatora linii (U+2028
)
Znak separatora akapitu (U+2029
)
Komentarz
komentarz:
komentarz jednowierszowy
komentarz rozdzielany
komentarz jednowierszowy:
//
jednowierszowy znak komentarza
znaki komentarza jednowierszowego:
jednowierszowy znak komentarza jednowierszowego z jednym wierszem i znakamikomentarza
jednowierszowy znak komentarza:
Dowolny znak Unicode z wyjątkiem nowego znaku wiersza
komentarz rozdzielany:
/*
ogranicznik-komentarz-tekstopt a gwiazdki /
rozdzielany tekst komentarza:
Rozdzielana sekcja komentarza rozdzielana tekstem komentarza
rozdzielana sekcja komentarza:
/
gwiazdkiopt not-slash-or-asterisk
Gwiazdki:
*
gwiazdkiopt
not-slash-or-asterisk:
Dowolny znak Unicode z wyjątkiem *
lub /
Tokeny
żeton:
identifier
słowo kluczowe
literal
operator-or-interpunkcyjny
Sekwencje ucieczki znaków
znak-ucieczka-sekwencja:
#(
escape-sequence-list )
escape-sequence-list:
pojedyncza sekwencja ucieczki
escape-sequence-list ,
single-escape-sequence
pojedyncza sekwencja ucieczki:
long-unicode-escape-sequence
short-unicode-escape-sequence
control-character-escape-sequence
ucieczka ucieczki
long-unicode-escape-sequence:
szesnastkowy cyfra-szesnastkowy-
short-unicode-escape-sequence:
cyfra-szesnastkowy-cyfra-szesnastkowy-cyfra-szesnastkowy
control-character-escape-sequence:
znak kontrolny
znak kontrolny:
cr
lf
tab
ucieczka ucieczki:
#
Literały
dosłowny:
literał logiczny
literał liczbowy
literał tekstowy
literał null
literał dosłowny
literał logiczny:
true
false
literał liczbowy:
literał-liczba-dziesiętna
literał-liczby szesnastkowej
cyfry dziesiętne:
cyfra-dziesiętna-cyfra-dziesiętna— wyrażenie zgody
cyfra-dziesiętna: jedna z
0 1 2 3 4 5 6 7 8 9
literał-liczbowy szesnastkowy:
0x
cyfry szesnastowe
0X
cyfry szesnastowe
cyfry szesnastkowej:
szesnastkowy cyfra-cyfra-szesnastkowy
cyfra-szesnastkowy: jeden z
0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
Literał-liczby dziesiętnej:
Cyfry-dziesiętne cyfry-dziesiętne.
wykładniczo-częściowej
.
wyrażenie-cyfr-dziesiętne wykładniczo-częściowe
wyrażenie-cyfr-dziesiętne wykładniczo-częściowe
część wykładnicza:
e
znakopt-digits decimal-digits
E
znakopt-digits decimal-digits
znak: jeden z
+ -
literał tekstowy:
"
wybór znakówliterałów tekstowych "
znaki tekstowe literału:
Wyrażenie zgody na zamianę znakówtekstowych literałów tekstowych
znak-literał-tekstu:
jednotekstowy znak
znak-ucieczka-sekwencja
podwójna sekwencja ucieczki cudzysłowu
jednotekstowy znak:
Dowolny znak z wyjątkiem "
() lub #
(), po którym (
następuje (U+0023
U+0028
)U+0022
double-quote-escape-sequence:
""
(U+0022
, U+0022
)
literał null:
null
literał dosłowny:
#!"
wybór znakówliterałów tekstowych "
Identifiers
identyfikator:
zwykły identyfikator
identyfikator cytowany
zwykły identyfikator:
dostępny identyfikator
identyfikator-dostępny-kropka-znak zwykły-identyfikator
dostępny identyfikator:
Słowo kluczowe lub identyfikator , który nie jest słowem kluczowym
słowo kluczowe lub identyfikator:
znak litery
znak podkreślenia
identyfikator-identyfikator-znak-część-znaków
identyfikator-start-znak:
znak litery
znak podkreślenia
identifier-part-characters:
identifier-part-character identifier-part-charactersopt
identyfikator— część znaku:
znak litery
znak-cyfra-dziesiętna
znak podkreślenia
znak połączenia
łączenie znaku
znak formatowania
uogólniony-identyfikator:
uogólniona część identyfikatora
uogólniony-identyfikator oddzielony tylko wartościami pustymi (U+0020
) uogólnioną częścią-identyfikatora
generalized-identifier-part:
uogólniony segment identyfikatora
Segment uogólniony-identyfikator-identyfikator-cyfra-dziesiętna
uogólniony segment identyfikatora:
słowo kluczowe lub identyfikator
słowo kluczowe lub identyfikator dot-znak słowa kluczowego lub identyfikatora
znak kropki:
.
(U+002E
)
znak podkreślenia:
_
(U+005F
)
litera-znak:_
Znak Unicode klas Lu, Ll, Lt, Lm, Lo lub Nl
znak łączący:
Znak Unicode klas Mn lub Mc
znak-cyfra-dziesiętna:
Znak Unicode klasy Nd
znak połączenia:
Znak Unicode klasy Pc
znak formatowania:
Znak Unicode klasy Cf
identyfikator cytowany:
#"
wybór znakówliterałów tekstowych "
Słowa kluczowe i wstępnie zdefiniowane identyfikatory
Nie można ponownie zdefiniować wstępnie zdefiniowanych identyfikatorów i słów kluczowych. Identyfikator cytowany może służyć do obsługi identyfikatorów, które w przeciwnym razie zderzają się ze wstępnie zdefiniowanymi identyfikatorami lub słowami kluczowymi.
słowo kluczowe: jeden zand 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
Operatory i znaki interpunkcyjne
operator-or-interpunkcyjny: jeden z
, ; = < <= > >= <> + - * / & ( ) [ ] { } @ ? ?? => .. ...
Gramatyka składniowa
Dokumenty
dokument:
dokument-sekcja
dokument wyrażenie-dokument
Dokumenty sekcji
sekcja-dokument:
section
sekcja:
atrybuty-literałuopt-nazwa-sekcji-składowe-zgodysection
;
nazwa-sekcji:
identifier
elementy członkowskie sekcji:
section-member section-membersopt
składowa sekcji:
atrybuty-literału opt wyrażenie współużytkowanejnazwy składowej=
sekcji ;
nazwa-składowa-sekcji:
identyfikator
Dokumenty wyrażeń
Wyrażenia
wyrażenie-dokument:
wyrażenie
wyrażenie:
wyrażenie logiczne lub wyrażenie-każde wyrażenie
wyrażenie-funkcji
wyrażenie let
wyrażenie-if
wyrażenie-podnoszenie błędu
wyrażenie-obsługi błędów
Wyrażenia logiczne
wyrażenie logiczne lub wyrażenie:
wyrażenie logiczne i wyrażenie
wyrażenie logiczne i or
wyrażenie-logiczne lub wyrażenie
wyrażenie logiczne i wyrażenie:
is-expression
wyrażenie logiczne i wyrażenie and
-is-expression
Wyrażenie is
is-expression:
as-expression
is-expression is
nullable-primitive-type
typ-pierwotny dopuszczany do wartości null:
nullable
opt typ pierwotny
Wyrażenie jako
as-expression:
wyrażenie równości
as-expression as
nullable-primitive-type
Wyrażenie równości
wyrażenie równości:
wyrażenie-relacyjne
wyrażenie-relacyjne =
wyrażenie-równości
wyrażenie-relacyjne <>
wyrażenie-równości
Wyrażenie relacyjne
wyrażenie-relacyjne:
wyrażenie-addytywne
wyrażenie-addytywne wyrażenie-relacyjne<
wyrażenie-addytywne wyrażenie-relacyjne>
wyrażenie-addytywne wyrażenie-relacyjne<=
wyrażenie-addytywne wyrażenie-relacyjne>=
Wyrażenia arytmetyczne
wyrażenie-addytywne:
wyrażenie mnożenia
wyrażenie-addytywne wyrażenie-mnożenia+
wyrażenie-addytywne wyrażenie-mnożenia-
wyrażenie-mnożenia &
wyrażenie-_additive
wyrażenie-mnożenia:
wyrażenie-metadanych
wyrażenie-metadanych *
wyrażenie mnożenia
wyrażenie-metadanych /
wyrażenie mnożenia
Wyrażenie metadanych
wyrażenie-metadanych:
wyrażenie jednoargumentowe
jednoargumentowe wyrażenie-jednoargumentowemeta
Wyrażenie jednoargumentowe
jednoargumentowe wyrażenie:
wyrażenie-typ
+
wyrażenie jednoargumentowe
-
wyrażenie jednoargumentowe
not
wyrażenie jednoargumentowe
Wyrażenie podstawowe
wyrażenie-podstawowe:
wyrażenie-literału
wyrażenie-listy
wyrażenie-rekordu
wyrażenie-identyfikatora
wyrażenie-dostępu do sekcji
wyrażenie-nawiasowe
wyrażenie-dostępu do pola
wyrażenie-dostępu do elementu
invoke-expression
wyrażenie nie implementowane
Wyrażenie literału
wyrażenie-literału:
dosłowny
Wyrażenie identyfikatora
wyrażenie-identyfikatora:
odwołanie do identyfikatora
odwołanie do identyfikatora:
wyłączność-identyfikator-odwołanie
odwołanie do identyfikatora inkluzywnego
wyłączność-identyfikator-odwołanie:
identifier
inkluzywne odwołanie do identyfikatora:
@
identyfikator
Wyrażenie dostępu do sekcji
wyrażenie-dostępu do sekcji:
identyfikator identyfikatora !
Wyrażenie nawiasowe
wyrażenie-nawiasowe:
(
wyrażenie )
Nie zaimplementowane wyrażenie
wyrażenie-nie implementowane:
...
Wywołaj wyrażenie
wyrażenie-wywołania:
opcja listy argumentów(
wyrażenia podstawowego )
lista argumentów:
wyrażenie
lista argumentów wyrażeń,
Wyrażenie listy
wyrażenie-listy:
{
opcja listy elementów }
lista elementów:
element
lista elementów,
przedmiot:
wyrażenie
wyrażenie wyrażenia..
Wyrażenie rekordu
wyrażenie-rekordu:
[
wybór listypól ]
lista-pól:
pole
pole ,
listy pól
pole:
wyrażenie nazwy=
pola
nazwa-pola:
uogólniony identyfikator
identyfikator cytowany
Wyrażenie dostępu do elementu
wyrażenie-dostępu do elementu:
wybór elementu
wybór opcjonalnego elementu
wybór elementu:
selektor elementów wyrażeń{
podstawowych }
wybór opcjonalnego elementu:
selektor elementów wyrażeń {
podstawowych } ?
selektor elementów:
wyrażenie
Wyrażenia dostępu do pól
wyrażenie-dostępu do pola:
wybór pola
niejawne zaznaczenie pola docelowego
projekcja
niejawna projekcja docelowa
wybór pola:
selektor pól wyrażenia podstawowego
selektor pól:
selektor pola wymaganego
opcjonalny selektor pól
selektor-wymagane pole:
[
nazwa-pola ]
opcjonalny selektor pól:
[
nazwa-pola ] ?
niejawne zaznaczenie pola docelowego:
selektor pól
projekcja:
wyrażenie-podstawowe wymagane-projekcja
wyrażenie-podstawowe opcjonalne-projekcja
projekcja wymagana:_
[
lista selektorów wymaganych ]
projekcja opcjonalna:
[
lista selektorów wymaganych ] ?
required-selector-list:
selektor pola wymaganego
required-field-selector required-selector-list ,
niejawna projekcja docelowa:
projekcja wymagana
projekcja opcjonalna
Wyrażenie funkcji
wyrażenie-funkcji:
(
parametr-listopt)
return-typeopt=>
function-body
function-body:
wyrażenie
parametr-lista:
stała lista parametrów
fixed-parameter-list optional-parameter-list,
opcjonalna lista parametrów
fixed-parameter-list:
parametr
parametr ,
fixed-parameter-list
parametr:
parametr-nazwa-pierwotny-typ-parametruopt
nazwa-parametru:
identifier
typ-pierwotny-parametru:
asercji pierwotnej
zwracany typ:
asercji pierwotnej
asercji pierwotnej:
as
typ-pierwotny dopuszczany do wartości null
opcjonalna lista parametrów:
opcjonalny parametr
optional-parameter ,
optional-parameter-list
opcjonalny parametr:
optional
parametr
Każde wyrażenie
wyrażenie-każde:
each
każda treść wyrażenia
każda treść wyrażenia:
treść funkcji
Wyrażenie Let
wyrażenie let:
let
in
wyrażenie listy zmiennych
lista zmiennych:
zmienna
lista zmiennych,
zmienna:
wyrażenie zmiennej nazwy=
nazwa-zmiennej:
identyfikator
Wyrażenie If
wyrażenie-if:
if
if-conditionthen
Wyrażenie-true-false-expressionelse
warunek if:
wyrażenie
wyrażenie-true:
wyrażenie
wyrażenie-fałsz:
wyrażenie
Wyrażenie typu
wyrażenie-typ:
wyrażenie-podstawowe
type
typ podstawowy
type:
wyrażenie-podstawowe
typ podstawowy
typ podstawowy:
typ pierwotny
typ rekordu
typ listy
typ funkcji
typ tabeli
typ dopuszczalny do wartości null
typ-pierwotny: jeden z
any anynonnull binary date datetime datetimezone duration function
list logical none null number record table text time type
typ rekordu:
[
open-record-marker ]
[
opcja field-specification-list ]
[
field-specification-list ,
open-record-marker ]
lista-specyfikacji pól:
specyfikacja pola
field-specification,
field-specification-list
specyfikacja pola:
optional
opt-name field-type-specificationopt
specyfikacja typu pola:
=
typ-pola
typ-pola:
type
open-record-marker:
...
typ listy:
{
typ elementu }
typ elementu:
type
typ funkcji:
function (
parametr-specification-listopt)
return-type
parametr-specification-list:
required-parameter-specification-list
required-parameter-specification-list ,
optional-parameter-specification-list
opcjonalna lista-specyfikacji parametrów
required-parameter-specification-list:
required-parameter-specification
required-parameter-specification ,
required-parameter-specification-list
required-parameter-specification:
specyfikacja parametrów
optional-parameter-specification-list:
opcjonalna specyfikacja parametrów
optional-parameter-specification ,
optional-parameter-specification-list
opcjonalna specyfikacja parametrów:
optional
specyfikacja parametrów
specyfikacja parametrów:
parametr-nazwa parametru typ-parametru
typ parametru:
assertion
twierdzenie:
as
typ
typ tabeli:
table
typ wiersza
typ wiersza:
[
opcja field-specification-list ]
typ dopuszczalny do wartości null:
nullable
typ
Błąd podczas podnoszenia wyrażenia
wyrażenie-zgłaszania błędów:
error
wyrażenie_
Wyrażenie obsługi błędów
wyrażenie-obsługi błędów:
try
opcja obsługibłędów wyrażeń chronionych
wyrażenie-chronione:
wyrażenie
program obsługi błędów:
klauzula w przeciwnym razie
catch-klauzula
w przeciwnym razie klauzula:
otherwise
wyrażenie domyślne
wyrażenie-domyślne:
wyrażenie
catch-klauzula:
catch
catch-function
catch-function:
(
parametr-nameopt=>
)
function-body
Atrybuty literału
atrybuty literału:
literał rekordu
literał rekordu:
[
wybór listypól literałów ]
literał-lista-pól:
pole-literału
literał-pole-literał-lista-pól ,
pole-literału:
nazwa-pola literał-dowolny =
literał listy:
{
wybór listy literałów }
literał-lista-elementów:
dowolny literał
lista-elementów-literałów dowolnych literałów ,
dowolny literał:
literał rekordu
literał listy
literał logiczny
literał liczbowy
literał tekstowy
literał null