Bagikan melalui


Tata Bahasa Konsolidasi

Tata bahasa leksikal

unit leksikal:
      elemen leksikalmemilih
elemen leksikal:
      elemen leksikal-elemenleksikal memilih
elemen leksikal:
      spasi kosong
      token
      komentar

Spasi kosong

Spasi:
      Karakter apa pun dengan kelas Unicode Zs
      Karakter tab horizontal (U+0009)
      Karakter tab vertikal (U+000B)
      Karakter umpan formulir (U+000C)
      Karakter pengembalian gerbong (U+000D) diikuti oleh karakter umpan baris (U+000A) karakter baris baru
karakter baris baru:

      Karakter pengembalian pengangkutan (U+000D)
      Karakter umpan baris (U+000A)
      Karakter baris berikutnya (U+0085)
      Karakter pemisah garis (U+2028)
      Karakter pemisah paragraf (U+2029)

Komentar

komentar:
      komentar baris tunggal
      komentar yang dibatasi

komentar baris tunggal:
      // memilih karakterkomentar baris tunggal
karakter komentar baris tunggal:
      karakter-komentar-baris tunggal karakter-komentar-tunggal-karakter-komentar-memilih
karakter komentar baris tunggal:

      Setiap karakter Unicode kecuali karakter baris baru
komentar yang dibatasi:

      /*tanda bintang opt tekskomentar yang dibatasi /
teks-komentar yang dibatasi:
      dibatasi-komentar-bagian dibatasi-teks-komentaropt
delimited-comment-section:

      /
      tanda bintangmemilih not-slash-or-asterisk
tanda bintang:

      *tanda bintangmemilih
not-slash-or-asterisk:

      Setiap karakter Unicode kecuali * atau /

Token

tanda:
      identifier
      kata kunci
      harfiah
      operator-atau-punctuator

Urutan escape karakter

karakter-escape-sequence:
      #( escape-sequence-list )
escape-sequence-list:
      urutan escape tunggal
      escape-sequence-list
, single-escape-sequence
urutan escape tunggal:
      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 hex-digit
control-character-escape-sequence:
      karakter kontrol
karakter kontrol:

      cr
      lf
      tab
escape-escape:
      #

Harfiah

Harfiah:
      logical-literal
      angka harfiah
      teks-literal
      null-literal
      verbatim-literal
logical-literal:
      true
      false
number-literal:
      desimal-number-literal
      heksadesimal-number-literal
digit desimal:
      opt digit desimal-digit desimal
digit desimal:
salah satu dari
      0 1 2 3 4 5 6 7 8 9
heksadesimal-number-literal:
      0x hex-digits
      0X hex-digits
hex-digits:
      hex-digit hex-digit memilih
hex-digit:
salah satu
      0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
desimal-number-literal:
      desimal-digit
. desimal-digits eksponen-partopt
      . opt bagianeksponen digit desimal
      opt bagianeksponen digit desimal
bagian eksponen:

      e tanda tanganiopt decimal-digits
      E tanda tanganiopt decimal-digits
sign:
salah satu dari
      + -
text-literal:
      " opt karakter teks-literal "
karakter teks-literal:
      teks-literal-character text-literal-charactersopt
text-literal-character:
      karakter teks tunggal
      karakter-escape-sequence
      double-quote-escape-sequence
karakter teks tunggal:

      Karakter apa pun kecuali " (U+0022) atau # (U+0023) diikuti oleh ( (U+0028)
double-quote-escape-sequence:
      "" (U+0022, U+0022)
null-literal:
      null
verbatim-literal:
      #!"opt karakter teks-literal "

Identifiers

Pengenal:
      pengidentifikasi reguler
      pengidentifikasi kutipan
pengidentifikasi reguler:
      pengidentifikasi yang tersedia
      pengidentifikasi-dot-character pengidentifikasi reguler yang tersedia
pengidentifikasi yang tersedia:

      Kata kunci atau pengidentifikasi yang bukan kata kunci
kata kunci atau pengidentifikasi:
      karakter huruf
      karakter garis bawah
      pengidentifikasi-mulai-karakter pengidentifikasi-part-karakter
identifier-start-character:
      karakter huruf
      karakter garis bawah
pengidentifikasi-sebagian-karakter:
      pengidentifikasi-part-character identifier-part-characteropt
pengidentifikasi-bagian-karakter:
      karakter huruf
      karakter digit desimal
      karakter garis bawah
      menyambungkan-karakter
      menggabungkan karakter
      karakter pemformatan
pengidentifikasi umum:
      generalized-identifier-part
      pengidentifikasi
umum hanya dipisahkan oleh bagian pengidentifikasi umum kosong (U+0020)
bagian pengidentifikasi umum:
      generalized-identifier-segment
      desimal-digit-character generalized-identifier-segment
generalized-identifier-segment:
      kata kunci-atau-pengidentifikasi
      kata kunci-atau-pengidentifikasi-kata kunci-karakter-atau-pengidentifikasi
karakter titik:

      .Aku akan menemuinya.U+002E
karakter garis bawah:
      _Aku akan menemuinya.U+005F
karakter huruf:_
      Karakter Unicode dari kelas Lu, Ll, Lt, Lm, Lo, atau Nl
menggabungkan karakter:
      Karakter Unicode dari kelas Mn atau Mc
karakter digit desimal:
      Karakter Unicode dari kelas Nd
menyambungkan karakter:
      Karakter Unicode dari kelas Pc
karakter pemformatan:
      Karakter Unicode dari kelas Cf
pengidentifikasi kutipan:
      #" opt karakter teks-literal "

Kata kunci dan pengidentifikasi yang telah ditentukan sebelumnya

Pengidentifikasi dan kata kunci yang telah ditentukan sebelumnya tidak dapat ditentukan ulang. Pengidentifikasi yang dikutip dapat digunakan untuk menangani pengidentifikasi yang akan bertabrakan dengan pengidentifikasi atau kata kunci yang telah ditentukan sebelumnya.

kata kunci: salah satu dari
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

Operator dan tanda baca

operator-atau-punctuator: salah satu dari
      , ; = < <= > >= <> + - * / & ( ) [ ] { } @ ? ?? => .. ...

Tata bahasa Syntactic

Dokumen

surat:
      bagian-dokumen
      ekspresi-dokumen

Dokumen Bagian

section-document:
      bagian
bagian:
      atribut literalmemilih
sectionbagian-nama;bagian-anggota memilih
nama bagian:
      identifier
bagian-anggota:
      bagian anggota bagianmemilih
anggota bagian:
      atribut literalmemilih ekspresi nama-anggota
=bagian opt bersama ;
section-member-name:
      Pengenal

Dokumen Ekspresi

Expressions

expression-document:
      expression
expression:
      logical-or-expression
setiap ekspresi
      ekspresi fungsi
      let-expression
      if-expression
      error-raising-expression
      error-handling-expression

Ekspresi logika

logical-or-expression:
      logical-and-expression
      logical-and-expression
or logical-or-expression
logical-and-expression:
      is-expression
      logical-and-expression
and is-expression

Adalah ekspresi

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

      nullableopt primitif-type

Sebagai ekspresi

as-expression:
      ekspresi kesetaraan
      as-expression
as nullable-primitive-type

Ekspresi kesetaraan

equality-expression:
      relational-expression
      ekspresi-kesetaraan
= ekspresi relasional
      ekspresi-kesetaraan
<> ekspresi relasional

Ekspresi relasional

ekspresi relasional:
      additive-expression
      ekspresi aditif
< ekspresi relasional
      ekspresi aditif
> ekspresi relasional
      ekspresi aditif
<= ekspresi relasional
      ekspresi aditif
>= ekspresi relasional

Ekspresi aritmetika

ekspresi aditif:
      multiplicative-expression
      ekspresi aditif multiplicative-expression
+
      ekspresi aditif multiplicative-expression
-
      ekspresi
& multiplikatif _additive-ekspresi
multiplicative-expression:
      ekspresi metadata
      ekspresi metadata
* ekspresi multiplikatif
      ekspresi metadata
/ ekspresi multiplikatif

Ekspresi metadata

ekspresi metadata:
      unary-expression
      unary-expression
meta unary-expression

Ekspresi unary

unary-expression:
      type-expression

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

Ekspresi utama

primary-expression:
      ekspresi harfiah
      ekspresi daftar
      ekspresi rekaman
      ekspresi pengidentifikasi
      section-access-expression
      ekspresi tanda kurung
      ekspresi akses bidang
      ekspresi akses item
      invoke-expression
      ekspresi yang tidak diimplementasikan

Ekspresi harfiah

ekspresi harfiah:
      Harfiah

Ekspresi pengidentifikasi

identifier-expression:
      referensi pengidentifikasi
referensi pengidentifikasi:
      referensi pengidentifikasi eksklusif
      inclusive-identifier-reference
referensi pengidentifikasi eksklusif:
      identifier
inclusive-identifier-reference:

      @ Pengenal

Ekspresi akses bagian

section-access-expression:
      pengidentifikasi pengidentifikasi
!

Ekspresi yang dikurung

ekspresi tanda kurung:
      ( Ekspresi )

Ekspresi yang tidak diimplementasikan

tidak diimplementasikan-ekspresi:
      ...

Memanggil ekspresi

invoke-expression:
      opt daftarargumen ekspresi(primer
)
daftar argumen:
      expression
      daftar argumen ekspresi
,

Ekspresi daftar

list-expression:
      { opsi daftaritem }
daftar item:
      item
      
,daftar item
item:
      expression
      ekspresi ekspresi
..

Ekspresi rekaman

ekspresi rekaman:
      [ opt daftarbidang ]
daftar bidang:
      bidang
      
,daftar bidang
kebun:
      ekspresi nama
=bidang
nama bidang:
      pengidentifikasi umum
      pengidentifikasi kutipan

Ekspresi akses item

item-access-expression:
      pilihan item
      pilihan item opsional
pemilihan item:
pemilih item ekspresi{
utama }
pilihan item opsional:
      pemilih item ekspresi
{ utama } ?
pemilih item:
      Ekspresi

Ekspresi akses bidang

field-access-expression:
      pemilihan bidang
      implisit-target-field-selection
      proyeksi
      proyeksi target implisit
pemilihan bidang:
      pemilih bidang ekspresi utama
pemilih bidang:
      pemilih bidang yang diperlukan
      pemilih bidang opsional
pemilih bidang yang diperlukan:

      [ nama bidang ]
pemilih bidang opsional:
      [ nama bidang ] ?
implisit-target-field-selection:
      pemilih bidang
Proyeksi:
      proyeksi yang diperlukan ekspresi primer
      proyeksi opsional ekspresi primer
required-projection:_
      [daftar pemilih yang diperlukan ]
proyeksi opsional:
      [daftar pemilih yang diperlukan ] ?
daftar pemilih yang diperlukan:
      pemilih bidang yang diperlukan
      required-field-selector
, required-selector-list
proyeksi target implisit:
      proyeksi yang diperlukan
      proyeksi opsional

Ekspresi Fungsi

ekspresi fungsi:
      ( parameter-listopt)return-typeopt=>function-body
isi fungsi:
      expression
parameter-list:
      fixed-parameter-list
      fixed-parameter-list
, optional-parameter-list
      opsional-parameter-list
fixed-parameter-list:
      parameter
      parameter
, fixed-parameter-list
parameter:
      parameter-name primitive-parameter-typeopt
parameter-name:
      identifier
jenis parameter primitif:
      penegasan primitif
jenis pengembalian:
      penegasan primitif
primitif-pernyataan:

      as nullable-primitive-type
opsional-parameter-list:
      parameter opsional
      opsional-parameter
, opsional-parameter-list
parameter opsional:

      optional parameter

Setiap ekspresi

setiap ekspresi:
      eachsetiap-ekspresi-isi
setiap-ekspresi-isi:
      isi fungsi

Biarkan ekspresi

let-expression:
      let ekspresi daftarinvariabel
daftar variabel:
      variabel
      
,variabel daftar variabel
variabel:
      ekspresi nama
=variabel
nama variabel:
      Pengenal

Jika ekspresi

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

Ekspresi jenis

type-expression:
      ekspresi primer

      type jenis primer
jenis:
      primary-expression
      jenis primer
jenis primer:
      jenis primitif
      jenis catatan
      jenis daftar
      jenis fungsi
      jenis tabel
      jenis nullable
jenis primitif:
salah satu
      any anynonnull binary date datetime datetimezone duration function
      list logical none null number record table text time type
jenis catatan:
      [ open-record-marker ]
      [ opt daftarspesifikasi bidang ]
      [ penanda buka daftar , spesifikasi bidang ]
daftar spesifikasi bidang:
      spesifikasi bidang
      
,daftar spesifikasi bidang spesifikasi bidang
spesifikasi bidang:

      optionalopt opt field-name field-type-specificationopt
spesifikasi jenis bidang:

      =jenis bidang
jenis bidang:
      jenis
open-record-marker:

      ...
jenis daftar:
      { jenis item }
jenis item:
      jenis
jenis fungsi:

      function ( parameter-specification-listopt)return-type
parameter-specification-list:
      required-parameter-specification-list
      required-parameter-specification-list
, optional-parameter-specification-list
      daftar spesifikasi parameter opsional
required-parameter-specification-list:
      spesifikasi parameter yang diperlukan
      required-parameter-specification
, required-parameter-specification-list
spesifikasi parameter yang diperlukan:
      spesifikasi parameter
opsional-parameter-specification-list:
      spesifikasi parameter opsional
      opsional-parameter-specification
, optional-parameter-specification-list
spesifikasi parameter opsional:

      optionalspesifikasi parameter
spesifikasi parameter:
      parameter-name parameter-type
jenis parameter:
      assertion
Pernyataan:

      asjenis
jenis tabel:

      table jenis baris
jenis baris:

      [ opt daftarspesifikasi bidang ]
jenis nullable:
      nullable jenis

Kesalahan saat menaikkan ekspresi

error-raising-expression:
      error Ekspresi_

Ekspresi penanganan kesalahan

error-handling-expression:
      tryopt penangankesalahan ekspresi terproteksi
ekspresi terproteksi:
      expression
error-handler:
      jika tidak, klausul
      catch-clause
jika tidak, klausul:

      otherwiseekspresi default
ekspresi default:
      expression
catch-clause:
      catchcatch-function
catch-function:
      (parameter-nameopt=>) function-body

Atribut Literal

atribut harfiah:
      record-literal
record-literal:

      [pilihan daftarbidang harfiah ]
literal-field-list:
      bidang harfiah
      literal-field
, literal-field-list
bidang harfiah:
      nama
= bidang literal apa pun
list-literal:

      {pilihan literal-item-list }
literal-item-list:
      literal apa pun
      daftar item harfiah
, apa pun
literal apa pun:
      record-literal
      list-literal
      logical-literal
      angka harfiah
      teks-literal
      null-literal