合并语法
合并语法
词法文法
lexical-unit:
lexical-elementsopt
lexical-elements:
lexical-element lexical-elementsopt
lexical-element:
whitespace
token comment
空白
whitespace:
Any character with Unicode class Zs
Horizontal tab character (U+0009)
Vertical tab character (U+000B)
Form feed character (U+000C)
Carriage return character (U+000D) followed by line feed character (U+000A)
new-line-character:
Carriage return character (U+000D)
Line feed character (U+000A)
Next line character (U+0085)
Line separator character (U+2028)
Paragraph separator character (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:
Any Unicode character except a 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:
Any Unicode character except * or /
令牌
token:
identifier
keyword
literal
operator-or-punctuator
字符转义序列
character-escape-sequence:
#(escape-sequence-list)
escape-sequence-list:
single-escape-sequence
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
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: one of
0 1 2 3 4 5 6 7 8 9
hexadecimal-number-literal:
0x hex-digits
0X hex-digits
hex-digits:
hex-digit hex-digitsopt
hex-digit: one of
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: one of + -
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:
Any character except " (U+0022) or # (U+0023) followed by ( (U+0028)
double-quote-escape-sequence:
"" (U+0022, U+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:
A keyword-or-identifier that is not a keyword
keyword-or-identifier:
identifier-start-character identifier-part-charactersopt
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
dot-character:
. (U+002E)
underscore-character:
_ (U+005F)
letter-character:
A Unicode character of classes Lu, Ll, Lt, Lm, Lo, or Nl
combining-character:
A Unicode character of classes Mn or Mc
decimal-digit-character:
A Unicode character of the class Nd
connecting-character:
A Unicode character of the class Pc
formatting-character:
A Unicode character of the class Cf
A quoted-identifier can be used to allow any sequence of zero or more Unicode characters to be used as an identifier, including keywords, whitespace, comments, operators and punctuators.
quoted-identifier:
#" text-literal-charactersopt "
关键字和预定义标识符
keyword: one of
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:
one of , ; = < <= > >= <> + - * / & ( ) [ ] { } @ ! ? ?? => .. ...
语法文法
文档
document:
section-document
expression-document
节文档
section-document:
section
section:
literal-attributesopt section section-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:
expressionexpression:
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 or logical-or-expression
logical-and-expression:
is-expression
logical-and-expression and is-expression
is表达式
is-expression:
as-expression
is-expression is nullable-primitive-type
nullable-primitive-type:
nullableopt primitive-type
as表达式
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 < 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 meta 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:
literal
标识符表达式
identifier-expression:
identifier-reference
identifier-reference:
exclusive-identifier-reference
inclusive-identifier-reference
exclusive-identifier-reference:
identifier
inclusive-identifier-reference:
@ identifier
节访问表达式
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
item:
expression
expression .. expression
记录表达式
record-expression:
[ field-listopt ]
field-list:
field
field , field-list
field:
field-name = expression
field-name:
generalized-identifier
quoted-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 ] ?
field-name:
generalized-identifier
quoted-identifier
implicit-target-field-selection:
field-selectorprojection:
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-selector-list , required-field-selector
implicit-target-projection:
required-projection
optional-projection
函数表达式
function-type:
function ( parameter-specification-listopt ) function-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
function-return-type:
assertion
assertion:
as nullable-primitive-type
each表达式
each-expression:each each-expression-body
each-expression-body:
function-body
let表达式
let-expression:
let variable-list in expression
variable-list:
variable
variable , variable-list
variable:
variable-name = expression
variable-name:
identifier
if表达式
if-expression:
if if-condition then true-expression else false-expression
if-condition:
expression
true-expression:
expression
false-expression:
expression
类型表达式
type-expression:
primary-expression
type primary-type
type:
parenthesized-expression
primary-type
primary-type:
primitive-type
record-type
list-type
function-type
table-type
nullable-type
primitive-type: one of
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:
optional parameter-specification
parameter-specification:
parameter-name parameter-type
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 otherwise-clauseopt
protected-expression:
expression
otherwise-clause:
otherwise default-expression
default-expression:
expression
字面属性
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