통합 문법

어휘 문법

lexical-unit:
      lexical-elementsopt
lexical-elements:
      lexical-element lexical-elementsopt
lexical-element:
      whitespace
      token
      주석

공백

공백:
      유니코드 클래스 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(설명)

comment:
      single-line-comment
      delimited-comment

single-line-comment:
      // 한 줄-주석 문자opt
single-line-comment-characters:
      single-line-comment-character single-line-comment-charactersopt
single-line-comment-character:

      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:

      *별표옵트
not-slash-or-asterisk:

      다음을 제외한 * 모든 유니코드 문자 /

토큰

token:
      식별자
      keyword
      literal
      operator-or-punctuator

문자 이스케이프 시퀀스

character-escape-sequence:
      #( escape-sequence-list )
escape-sequence-list:
      single-escape-sequence
      escape-sequence-list
,단일 이스케이프 시퀀스
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
이스케이프 이스케이프:
      #

리터럴

literal:
      logical-literal
      number-literal
      text-literal
      null-literal
      verbatim-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
16진수-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+0022U+0023) 뒤에 ()를U+0028( 제외한 " 모든 문자
큰따옴표 이스케이프 시퀀스:
      "" (U+0022, U+0022)
null 리터럴:
      null
축자 리터럴:
      #!"text-literal-charactersopt "

식별자

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

      keyword가 아닌 keyword-or-identifier
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)
밑줄 문자:
      _ (U+005F)
letter-character:_
      Lu, Ll, Lt, Lm, Lo 또는 Nl 클래스의 유니코드 문자
combining-character:
      Mn 또는 Mc 클래스의 유니코드 문자
decimal-digit-character:
      Nd 클래스의 유니코드 문자
connecting-character:
      클래스 PC의 유니코드 문자
formatting-character:
      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-members opt
section-name:
      식별자
section-members:
      section-member section-membersopt
section-member:
      literal-attributesopt sharedopt section-member-name
= ;
section-member-name:
      identifier

식 문서

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

논리 식

logical-or-expression:
      logical-and-expression
      논리 및 식
or 논리 또는 식
logical-and-expression:
      is-expression
      논리 및 식
and is 식

식입니다.

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

      nullableopt primitive-type

식으로

as-expression:
      equality-expression
      as-expression
as nullable-primitive-type

같음 식

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

관계형 식

relational-expression:
      additive-expression
      additive-expression
< 관계형 식
      additive-expression
> 관계형 식
      additive-expression
<= 관계형 식
      additive-expression
>= 관계형 식

산술 식

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

메타데이터 식

metadata-expression:
      unary-expression
      단항식
meta 단항식

단항 식

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:
      리터럴

식별자 식

identifier-expression:
      identifier-reference
identifier-reference:
      exclusive-identifier-reference
      inclusive-identifier-reference
exclusive-identifier-reference:
      식별자
inclusive-identifier-reference:

      @ 식별자

섹션 액세스 식

section-access-expression:
      식별자 식별자
!

괄호로 착색된 식

parenthesized-expression:
      ( )

구현되지 않은 식

구현되지 않은 식:
      ...

식 호출

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

목록 식

list-expression:
      { item-listopt }
item-list:
      item
      item-list
,
항목:
      식
      식
..

레코드 식

record-expression:
      [ field-listopt ]
field-list:
      field
      field
, field-list
밭:
      field-name
=
field-name:
      generalized-identifier
      따옴표 붙은 식별자

항목 액세스 식

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 ]
선택적 프로젝션:
      [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:
      식
parameter-list:
      fixed-parameter-list
      fixed-parameter-list
, optional-parameter-list
      optional-parameter-list
fixed-parameter-list:
      parameter
      parameter
, fixed-parameter-list
parameter:
      parameter-name primitive-parameter-typeopt
parameter-name:
      식별자
primitive-parameter-type:
      primitive-assertion
return-type:
      primitive-assertion
primitive-assertion:

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

      optional 매개 변수

각 식

각 식:
      eacheach-expression-body
each-expression-body:
      function-body

Let 식

let 식:
      let variable-list in
variable-list:
      변수
      variable
, variable-list
변수:
      variable-name
=
variable-name:
      identifier

If 식

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

형식 식

type-expression:
      primary-expression

      type primary-type
type:
      primary-expression
      primary-type
primary-type:
      primitive-type
      record-type
      list-type
      function-type
      table-type
      nullable-type
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:

      optionalopt field-name field-type-specificationopt
field-type-specification:

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

      ...
list-type:
      { item-type }
item-type:
      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:

      optionalparameter-specification
parameter-specification:
      parameter-name parameter-type
parameter-type:
      assertion
assertion:

      as
table-type:

      table row-type
row-type:

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

식 발생 오류

error-raising-expression:
      error expression_

오류 처리 식

error-handling-expression:
      tryprotected-expression error-handleropt
protected-expression:
      식
error-handler:
      otherwise-clause
      catch 절
otherwise-clause:

      otherwisedefault-expression
default-expression:
      expression
catch 절:
      catchcatch-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 리터럴