통합 문법
어휘 문법
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:
//
single-line-comment-charactersopt
single-line-comment-characters:
single-line-comment-character single-line-comment-charactersopt
single-line-comment-character:
new-line-character를 제외한 임의 유니코드 문자
delimited-comment:
/*
delimited-comment-textopt asterisks/
delimited-comment-text:
delimited-comment-section delimited-comment-textopt
delimited-comment-section:
/
asterisksopt not-slash-or-asterisk
asterisks:
*
asterisksopt
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
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
hex-digits
0X
hex-digits
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
(
제외한 "
모든 문자
큰따옴표 이스케이프 시퀀스:
""
(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) 다시 정의할 수 없습니다. 따옴표 붙은 식별자를 사용하여 미리 정의된 식별자 또는 키워드(keyword) 충돌하는 식별자를 처리할 수 있습니다.
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-attributesoptsection
section-name;
section-membersopt
section-name:
식별자
section-members:
section-member section-membersopt
section-member:
literal-attributesopt sharedopt section-member-name=
expression;
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
logical-and-expressionor
logical-or-expression
logical-and-expression:
is-expression
logical-and-expressionand
is-expression
식입니다.
is-expression:
as-expression
is-expressionis
nullable-primitive-type
nullable-primitive-type:
nullable
opt primitive-type
식으로
as-expression:
equality-expression
as-expressionas
nullable-primitive-type
같음 식
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-expressionmeta
unary-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:
리터럴
식별자 식
identifier-expression:
identifier-reference
identifier-reference:
exclusive-identifier-reference
inclusive-identifier-reference
exclusive-identifier-reference:
식별자
inclusive-identifier-reference:
@
identifier
섹션 액세스 식
section-access-expression:
identifier!
identifier
괄호로 착색된 식
parenthesized-expression:
(
expression)
구현되지 않은 식
구현되지 않은 식:
...
식 호출
invoke-expression:
primary-expression(
argument-listopt)
argument-list:
식
expression,
argument-list
목록 식
list-expression:
{
item-listopt}
item-list:
item
item,
item-list
항목:
식
expression..
expression
레코드 식
record-expression:
[
field-listopt]
field-list:
field
field,
field-list
필드:
field-name=
expression
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
parameter
각 식
각 식:
each
each-expression-body
each-expression-body:
function-body
Let 식
let 식:
let
variable-listin
expression
variable-list:
변수
variable,
variable-list
변수:
variable-name=
expression
variable-name:
identifier
If 식
if-expression:
if
if-conditionthen
true-expressionelse
false-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:
optional
opt 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:
optional
parameter-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
type
식 발생 오류
error-raising-expression:
error
expression_
오류 처리 식
error-handling-expression:
try
protected-expression error-handleropt
protected-expression:
식
error-handler:
otherwise-clause
catch 절
otherwise-clause:
otherwise
default-expression
default-expression:
expression
catch 절:
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 리터럴
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기