次の方法で共有


統合文法

字句文法

lexical-unit:
      lexical-elementsopt
lexical-elements:
      lexical-element lexical-elementsopt
lexical-element:
      whitespace
      token
      comment

空白

whitespace:
      Unicode クラス Zs の任意の文字
      水平タブ文字 (U+0009)
      垂直タブ文字 (U+000B)
      フォーム フィード文字 (U+000C)
      復帰文字 (U+000D) の後に改行文字 (U+000A) new-line-character
new-line-character:

      復帰文字 (U+000D)
      ライン フィード文字 (U+000A)
      次の行の文字 (U+0085)
      行区切り文字 (U+2028)
      段落区切り文字 (U+2029)

コメント

comment:
      single-line-comment
      delimited-comment

single-line-comment:
       // single-line-comment-charactersopt
single-line-comment-characters:
      single-line-comment-character single-line-comment-charactersopt
single-line-comment-character:

      次を除く任意の Unicode 文字: new-line-character
delimited-comment:

       /* delimited-comment-textopt アスタリスク/
delimited-comment-text:
      delimited-comment-section delimited-comment-textopt
delimited-comment-section:

      /
       asterisksopt not-slash-or-asterisk
asterisks:

       * asterisksopt
not-slash-or-asterisk:

       * または / を除く Unicode 文字

トークン

token:
      identifier
      キーワード (keyword)
      リテラル
      operator-or-punctuator

文字エスケープ シーケンス

character-escape-sequence:
       #( escape-sequence-list)
escape-sequence-list:
      single-escape-sequence
      escape-sequence-list
,single-escape-sequence
single-escape-sequence:
      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
control-character-escape-sequence:
      control-character
control-character:

      cr
      lf
      tab
escape-escape:
      #

リテラル

literal:
      logical-literal
      number-literal
      text-literal
      null-literal
      verbatim-literal
logical-literal:
      true
      false
number-literal:
      decimal-number-literal
      hexadecimal-number-literal
decimal-digits:
      decimal-digit decimal-digitsopt
decimal-digit:
次のいずれか
      0 1 2 3 4 5 6 7 8 9
hexadecimal-number-literal:
       0x 16 進数
       0X 16 進数
hex-digits:
      hex-digit hex-digitsopt
hex-digit:
次のいずれか
      0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
decimal-number-literal:
      decimal-digits
.decimal-digits exponent-partopt
       . decimal-digits exponent-partopt
      decimal-digits exponent-partopt
exponent-part:

       e signopt decimal-digits
       E signopt decimal-digits
sign:
次のいずれか
      + -
text-literal:
       " text-literal-charactersopt"
text-literal-characters:
      text-literal-character text-literal-charactersopt
text-literal-character:
      single-text-character
      character-escape-sequence
      double-quote-escape-sequence
single-text-character:

       " (U+0022) と # (U+0023) を除くあらゆる文字に ( (U+0028) を続けたもの
double-quote-escape-sequence:
       "" (U+0022U+0022)
null-literal:
      null
verbatim-literal:
       #!" text-literal-charactersopt"

識別子

identifier:
      regular-identifier
      quoted-identifier
regular-identifier:
      available-identifier
      available-identifier dot-character regular-identifier
available-identifier:

       keyword-or-identifier (keyword ではない)
keyword-or-identifier:
      letter-character
      underscore-character
      identifier-start-character identifier-part-characters
identifier-start-character:
      letter-character
      underscore-character
identifier-part-characters:
      identifier-part-character identifier-part-charactersopt
identifier-part-character:
      letter-character
      decimal-digit-character
      underscore-character
      connecting-character
      combining-character
      formatting-character
generalized-identifier:
      generalized-identifier-part
      generalized-identifier
空白でのみ区別 (U+0020) generalized-identifier-part
generalized-identifier-part:
      generalized-identifier-segment
      decimal-digit-character generalized-identifier-segment
generalized-identifier-segment:
      keyword-or-identifier
      keyword-or-identifier dot-character keyword-or-identifier
dot-character:

       . (U+002E)
underscore-character:
       _ (U+005F)
letter-character:_
      Unicode 文字 (クラス Lu、Ll、Lt、Lm、Lo、Nl)
combining-character:
      Unicode 文字 (クラス Mn、Mc)
decimal-digit-character:
      Unicode 文字 (クラス Nd)
connecting-character:
      Unicode 文字 (クラス Pc)
formatting-character:
      Unicode 文字 (クラス Cf)
quoted-identifier:
       #" text-literal-charactersopt"

キーワードと定義済み識別子

定義済みの識別子とキーワードは再定義できません。 引用符で囲まれた識別子は、定義済みの識別子またはキーワードと競合する可能性のある識別子を処理するために使用できます。

keyword: 次のいずれか
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-or-punctuator: 次のいずれか
      , ; = < <= > >= <> + - * / & ( ) [ ] { } @ ? ?? => .. ...

構文の文法

ドキュメント

document:
      section-document
      expression-document

セクション ドキュメント

section-document:
      section
section:
      literal-attributesopt
sectionsection-name;section-membersopt
section-name:
      identifier
section-members:
      section-member section-membersopt
section-member:
      literal-attributesopt sharedopt section-member-name
=expression;
section-member-name:
      identifier

式ドキュメント

expression-document:
      expression
expression:
      logical-or-expression
each-expression
      function-expression
      let-expression
      if-expression
      error-raising-expression
      error-handling-expression

論理式

logical-or-expression:
      logical-and-expression
      logical-and-expression
orlogical-or-expression
logical-and-expression:
      is-expression
      logical-and-expression
andis-expression

Is 式

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

As 式

as-expression:
      equality-expression
      as-expression
asプリミティブ型またはヌル可能プリミティブ型

等値式

equality-expression:
      relational-expression
      relational-expression
=equality-expression
      relational-expression
<>equality-expression

関係式

relational-expression:
      additive-expression
      additive-expression
<relational-expression
      additive-expression
>relational-expression
      additive-expression
<=relational-expression
      additive-expression
>=relational-expression

算術式

additive-expression:
      multiplicative-expression
      multiplicative-expression
+additive-expression
      multiplicative-expression
-additive-expression
      multiplicative-expression
& _additive-expression
multiplicative-expression:
      metadata-expression
      metadata-expression
*multiplicative-expression
      metadata-expression
/multiplicative-expression

メタデータ式

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

単項式

unary-expression:
      type-expression

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

一次式

primary-expression:
      literal-expression
      list-expression
      record-expression
      identifier-expression
      section-access-expression
      parenthesized-expression
      field-access-expression
      item-access-expression
      invoke-expression
      not-implemented-expression

リテラル式

literal-expression:
      literal

識別子式

identifier-expression:
      identifier-reference
identifier-reference:
      exclusive-identifier-reference
      inclusive-identifier-reference
exclusive-identifier-reference:
      identifier
inclusive-identifier-reference:

       @ 識別子

セクションアクセス式

section-access-expression:
      identifier
!identifier

かっこで囲まれた式

parenthesized-expression:
       ( expression)

未実装式

not-implemented-expression:
      ...

呼び出し式

invoke-expression:
      primary-expression
(argument-listopt)
argument-list:
      expression
      expression
,argument-list

リスト式

list-expression:
       { item-listopt}
item-list:
      item
      item
,item-list
項目:
      expression
      expression
..expression

レコード式

record-expression:
       [ field-listopt]
field-list:
      フィールド
      field
,field-list
field:
      field-name
=expression
field-name:
      generalized-identifier
      quoted-identifier

Item access 式

item-access-expression:
      item-selection
      optional-item-selection
item-selection:
primary-expression
{item-selector}
optional-item-selection:
      primary-expression
{item-selector} ?
item-selector:
      expression

フィールド アクセス式

field-access-expression:
      field-selection
      implicit-target-field-selection
      投影 (projection)
      implicit-target-projection
field-selection:
      primary-expression field-selector
field-selector:
      required-field-selector
      optional-field-selector
required-field-selector:

       [ field-name]
optional-field-selector:
       [ field-name] ?
implicit-target-field-selection:
      field-selector
projection:
      primary-expression required-projection
      primary-expression optional-projection
required-projection:_
       [ required-selector-list]
optional-projection:
       [ required-selector-list] ?
required-selector-list:
      required-field-selector
      required-field-selector
,required-selector-list
implicit-target-projection:
      required-projection
      optional-projection

関数式

function-expression:
       ( parameter-listopt)return-typeopt=>function-body
function-body:
      expression
parameter-list:
      fixed-parameter-list
      fixed-parameter-list
,optional-parameter-list
      optional-parameter-list
fixed-parameter-list:
      パラメーター
      parameter
,fixed-parameter-list
parameter:
      parameter-name parameter-typeオプション
parameter-name:
      identifier
parameter-type:
      プリミティブ型またはヌラブルプリミティブ型アサーション
return-type:
      プリミティブまたはヌラブルなプリミティブ型のアサーション
プリミティブ型またはヌル許容型プリミティブの型アサーション:

      プリミティブ型またはnullを許容するプリミティブ型の as
optional-parameter-list:
      optional-parameter
      optional-parameter
,optional-parameter-list
optional-parameter:

       optional パラメーター

Each 式

each-expression:
       each each-expression-body
each-expression-body:
      function-body

Let 式

let-expression:
       let variable-listinexpression
variable-list:
      変数
      variable
,variable-list
variable:
      variable-name
=expression
variable-name:
      identifier

If 式

if-expression:
       if 条件thentrue-expressionelsefalse-expression
if-condition:
      expression
true-expression:
      expression
false-expression:
      expression

型式

type-expression:
      primary-expression

       type primary-type
type:
      primary-expression
      primary-type
primary-type:
      プリミティブ型またはヌル許容プリミティブ型
      record-type
      list-type
      function-type
      table-type
      nullable-type

プリミティブ型または null 許容のプリミティブ型:
       nullable opt primitive-type
プリミティブ型: の一つ
      any anynonnull binary date datetime datetimezone duration function list logical
      none null number record table text time type
record-type:
       [ open-record-marker]
       [ field-specification-listopt]
       [ field-specification-list,open-record-marker]
field-specification-list:
      field-specification
      field-specification
,field-specification-list
field-specification:

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

       = field-type
field-type:
      型
open-record-marker:

      ...
list-type:
       { item-type}
item-type:
      型
function-type:

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

       optional parameter-specification
parameter-specification:
      parameter-name parameter-type
parameter-type:
      タイプアサーション
type-assertion:

       as type
table-type:

       table row-type
row-type:

       [ field-specification-listopt]
nullable-type:
       nullable 種類

エラー発生式

error-raising-expression:
       error expression_

エラー処理式

error-handling-expression:
       try protected-expression error-handleropt
protected-expression:
      expression
error-handler:
      otherwise-clause
      catch-clause
otherwise-clause:

       otherwise default-expression
default-expression:
       式 (expression)
catch-clause:
       catch catch-function
catch-function:
       ( parameter-nameopt)=>function-body

リテラル属性

literal-attributes:
      record-literal
record-literal:

       [ literal-field-listopt]
literal-field-list:
      literal-field
      literal-field
,literal-field-list
literal-field:
      field-name
=any-literal
list-literal:

       { literal-item-listopt}
literal-item-list:
      any-literal
      any-literal
,literal-item-list
any-literal:
      record-literal
      list-literal
      logical-literal
      number-literal
      text-literal
      null-literal