Консолидированная грамматикаConsolidated Grammar

Лексическая грамматикаLexical grammar

лексическая-единица:
      лексические-элементынеобязательно
лексические-элементы:
      лексический-элемент лексический-элементынеобязательно
лексический-элемент:
      пробел
      комментарий к токену
lexical-unit:
      lexical-elementsopt
lexical-elements:
      lexical-element lexical-elementsopt
lexical-element:
      whitespace
      token comment

ПробелWhite space

пробел:whitespace:
      Любой символ с классом Zs Юникода      Any character with Unicode class Zs
      Символ горизонтальной табуляции (U+0009)      Horizontal tab character (U+0009)
      Символ вертикальной табуляции (U+000B)      Vertical tab character (U+000B)
      Символ перевода страницы (U+000C)      Form feed character (U+000C)
      Символ возврата каретки (U+000D), за которым следует символ перевода строки (U+000A)       символ-новой-строки
символ-новой-строки:
      Carriage return character (U+000D) followed by line feed character (U+000A)       new-line-character
new-line-character:

      Символ возврата каретки (U+000D)      Carriage return character (U+000D)
      Символ перевода строки (U+000A)      Line feed character (U+000A)
      Символ следующей строки (U+0085)      Next line character (U+0085)
      Символ разделителя строк (U+2028)      Line separator character (U+2028)
      Символ разделителя абзацев (U+2029)      Paragraph separator character (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:

      Любой символ Юникода, кроме символа-новой-строки
с комментарием-с-разделителями:
      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 /

ТокеныTokens

токен:
      идентификатор
      ключевое-слово
      литерал
      оператор-или-знак-препинания
token:
      identifier
      keyword
      literal
      operator-or-punctuator

escape-последовательностиCharacter escape sequences

escape-последовательность:character-escape-sequence:
      #( список-escape-последовательностей )      #( escape-sequence-list )
список-escape-последовательностей:
      одна-escape-последовательность
      список-escape-последовательностей
, одна-escape-последовательность
одна-escape-последовательность:
      длинная-escape-последовательность-Юникода
      короткая-escape-последовательность-Юникода
      escape-последовательность-с-управляющим-символом
      escape-escape
длинная-escape-последовательность-Юникода:
      шестнадцатеричный-знак шестнадцатеричный-знак шестнадцатеричный-знак шестнадцатеричный-знак шестнадцатеричный-знак шестнадцатеричный-знак шестнадцатеричный-знак шестнадцатеричный-знак
короткая-escape-последовательность-Юникода:
      шестнадцатеричный-знак шестнадцатеричный-знак шестнадцатеричный-знак шестнадцатеричный-знак
escape-последовательность-с-управляющим-символом:
      управляющий-символ
управляющий-символ:
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      cr
      lf      lf
      tab      tab
escape-escape:escape-escape:
      #      #

ЛитералыLiterals

литерал:
      логический-литерал
      числовой-литерал
      текстовый-литерал
      литерал-NULL
      буквальный-литерал
логический-литерал:
      true
      false
числовой-литерал:
      десятичный-числовой-литерал
      шестнадцатеричный-числовой-литерал
десятичные-знаки:
      десятичный-знак десятичные-знакинеобязательно
десятичный знак:
один из
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      0 1 2 3 4 5 6 7 8 9
шестнадцатеричный-числовой-литерал:hexadecimal-number-literal:
      0x шестнадцатеричные-знаки      0x hex-digits
      0X шестнадцатеричные-знаки
шестнадцатеричные-знаки:
      шестнадцатеричный-знак шестнадцатеричные-знакинеобязательно
шестнадцатеричный-знак:
один из
      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      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 знакнеобязательно десятичные-знаки      e signopt decimal-digits
      E знакнеобязательно десятичные-знаки
знак:
один из следующего
      E signopt decimal-digits
sign:
one of

      + -      + -
текстовый-литерал:text-literal:
      " символы-текстового-литераланеобязательно "      " text-literal-charactersopt "
символы-текстового-литерала:
      символ-текстового-литерала символы-текстового-литераланеобязательно
символ-текстового-литерала:
      один-текстовый-символ
      escape-последовательность-символов
      escape-последовательность-двойных-кавычек
один-текстовый-символ:
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)      Any character except " (U+0022) or # (U+0023) followed by ( (U+0028)
escape-последовательность-двойных-кавычек:double-quote-escape-sequence:
      "" (U+0022, U+0022)      "" (U+0022, U+0022)
литерал-NULL:null-literal:
      null      null
буквальный-литерал:verbatim-literal:
      #!" символы-текстового-литераланеобязательно "      #!" text-literal-charactersopt "

ИдентификаторыIdentifiers

идентификатор:
      обычный-идентификатор
      нестандартный-идентификатор
обычный-идентификатор:
      доступный-идентификатор
      доступный-идентификатор символ-точки обычный-идентификатор
доступный-идентификатор:
identifier:
      regular-identifier
      quoted-identifier
regular-identifier:
      available-identifier
      available-identifier dot-character regular-identifier
available-identifier:

      ключевое-слово-или-идентификатор, не являющийся ключевым-словом
ключевое-слово-или-идентификатор:
      буква
      символ-подчеркивания
      начальный-символ-идентификатора символы-идентификатора
начальный-символ-идентификатора:
      буква
      символ-подчеркивания
символы-идентификатора:
       символы-идентификатора символ-идентификатора необязательно
символ-идентификатора:
      буква
      десятичный-знак
      символ-подчеркивания
      символ-соединения
      символ-объединения
      символ-форматирования
обобщенный-идентификатор:
      часть-обобщенного-идентификатора
      обобщенный-идентификатор
только через пробелы (U+0020) часть-обобщенного-идентификатора
часть-обобщенного-идентификатора:
      сегмент-обобщенного-идентификатора
      десятичный-знак сегмент-обобщенного-идентификатора
сегмент-обобщенного-идентификатора:
      ключевое-слово-или-идентификатор
      ключевое-слово-или-идентификатор символ-точки ключевое-слово-или-идентификатор
символ-точки:
      A keyword-or-identifier that is not a 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
separated only by blanks (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+002E)
символ-подчеркивания:underscore-character:
      _ (U+005F)      _ (U+005F)
буквенный-символ: letter-character:
      Символ Юникода класса Lu, Ll, Lt, Lm, Lo или Nl      A Unicode character of classes Lu, Ll, Lt, Lm, Lo, or Nl
символ-объединения:combining-character:
      Символ Юникода класса Mn или Mc      A Unicode character of classes Mn or Mc
десятичный-знак:decimal-digit-character:
      Символ Юникода класса Nd      A Unicode character of the class Nd
символ-соединения:connecting-character:
      Символ Юникода класса Pc      A Unicode character of the class Pc
символ-форматирования:formatting-character:
      Символ Юникода класса Cf      A Unicode character of the class Cf
нестандартный-идентификатор:quoted-identifier:
      #" символы-текстового-литераланеобязательно "      #" text-literal-charactersopt "

Ключевые слова и предварительно заданные идентификаторыKeywords and predefined identifiers

Предварительно заданные идентификаторы и ключевые слова нельзя переопределить.Predefined identifiers and keywords cannot be redefined. Нестандартный идентификатор можно использовать для управления идентификаторами, которые в ином случае конфликтуют с предварительно заданными идентификаторами или ключевыми словами.A quoted identifier can be used to handle identifiers that would otherwise collide with predefined identifiers or keywords.

ключевое-слово: одно из следующегоkeyword: one of
      and as each else error false if in is let meta not null or otherwise      and as each else error false if in is let meta not null or otherwise
      section shared then true try type #binary #date #datetime      section shared then true try type #binary #date #datetime
      #datetimezone #duration #infinity #nan #sections #shared #table #time      #datetimezone #duration #infinity #nan #sections #shared #table #time

Операторы и знаки препинанияOperators and punctuators

оператор-или-знак-препинания: один из следующегоoperator-or-punctuator: one of
      , ; = < <= > >= <> + - * / & ( ) [ ] { } @ ? => .. ...      , ; = < <= > >= <> + - * / & ( ) [ ] { } @ ? => .. ...

Синтаксическая грамматикаSyntactic grammar

ДокументыDocuments

документ:
      документ-с-разделами
      документ-с-выражениями
document:
      section-document
      expression-document

Документы с разделамиSection Documents

документ-с-разделами:
      раздел
раздел:
      литеральные-атрибутынеобязательно
section имя-раздела ; элементы-разделанеобязательно
имя-раздела:
      идентификатор
элементы-раздела:
      элемент-раздела элементы-разделанеобязательно
элемент-раздела:
      литеральные-атрибутынеобязательно общеенеобязательно имя-элемента-раздела
= выражение ;
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 Documents

ВыраженияExpressions

документ-с-выражениями:
      выражение
выражение:
      логическое-выражение-or
      выражение-each
      выражение-function
      выражение-let
      выражение-if
      выражение-вызывающее-ошибку
      выражение-обработки-ошибок
expression-document:
      expression
expression:
      logical-or-expression
      each-expression
      function-expression
      let-expression
      if-expression
      error-raising-expression
      error-handling-expression

Логические выраженияLogical expressions

логическое-выражение-or:
      логическое-выражение-and
      логическое-выражение-and
or логическое-выражение-or
логическое-выражение-and:
      выражение-is
      логическое-выражение-and
and выражение-is
logical-or-expression:
      logical-and-expression
      logical-and-expression
or logical-or-expression
logical-and-expression:
      is-expression
      logical-and-expression
and is-expression

Выражение isIs expression

выражение-is:
      выражение-as
      выражение-is
isтип-примитива-допускающий-значение-NULL
тип-примитива-допускающий-значение-NULL:
is-expression:
      as-expression
      is-expression
is nullable-primitive-type
nullable-primitive-type:

      nullableнеобязательно тип-примитива      nullableopt primitive-type

Выражение asAs expression

выражение-as:
      выражение-равенства
      выражение-as
as тип-примитива-допускающий-значение-NULL
as-expression:
      equality-expression
      as-expression
as nullable-primitive-type

Выражение равенстваEquality expression

выражение-равенства:
      выражение-отношения
      выражение-отношения
= выражение-равенства
      выражение-отношения
<> выражение-равенства
equality-expression:
      relational-expression
      relational-expression
= equality-expression
      relational-expression
<> equality-expression

Выражение отношенияRelational expression

выражение-отношения:
      выражение-сложения
      выражение-сложения
< выражение-отношения
      выражение-сложения
> выражение-отношения
      выражение-сложения
<= выражение-отношения
      выражение-сложения
>= выражение-отношения
relational-expression:
      additive-expression
      additive-expression
< relational-expression
      additive-expression
> relational-expression
      additive-expression
<= relational-expression
      additive-expression
>= relational-expression

Арифметические выраженияArithmetic expressions

выражение-сложения:
      выражение-умножения
      выражение-умножения
+ выражение-сложения
      выражение-умножения
- выражение-сложения
      выражение-умножения
& _выражение-сложения
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

выражение-метаданных:
      унарное-выражение
      унарное-выражение
meta унарное-выражение
metadata-expression:
      unary-expression
      unary-expression
meta unary-expression

Унарное выражениеUnary expression

унарное-выражение:
      выражение-типа
unary-expression:
      type-expression

      + унарное-выражение      + unary-expression
      - унарное-выражение      - unary-expression
      not унарное-выражение      not unary-expression

Основное выражениеPrimary 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-expression:
      literal

Выражение идентификатораIdentifier expression

выражение-идентификатора:
      ссылка-на-идентификатор
ссылка-на-идентификатор:
      эксклюзивная-ссылка-на-идентификатор
      инклюзивная-ссылка-на-идентификатор
эксклюзивная-ссылка-на-идентификатор:
      идентификатор
инклюзивная-ссылка-на-идентификатор:
identifier-expression:
      identifier-reference
identifier-reference:
      exclusive-identifier-reference
      inclusive-identifier-reference
exclusive-identifier-reference:
      identifier
inclusive-identifier-reference:

      @ идентификатор      @ identifier

Выражение доступа к разделуSection-access expression

выражение-доступа-к-разделу:
      идентификатор
! идентификатор
section-access-expression:
      identifier
! identifier

Выражение в круглых скобкахParenthesized expression

выражение-в-круглых-скобках:parenthesized-expression:
      ( выражение )      ( expression )

Выражение отсутствия реализацииNot-implemented expression

выражение-отсутствия-реализации:not-implemented-expression:
      ...      ...

Выражение вызоваInvoke expression

выражение-вызова:
      основное-выражение
( список-аргументовнеобязательно )
invoke-expression:
      primary-expression
( argument-listopt )

список-аргументов:
      выражение
      выражение
, список-аргументов
argument-list:
      expression
      expression
, argument-list

Выражение спискаList expression

выражение-списка:list-expression:
      { элемент-списканеобязательно }      { item-listopt }
элемент-списка:
      элемент
      элемент
, элемент-списка
элемент:
      выражение
      выражение
.. выражение
item-list:
      item
      item
, item-list
item:
      expression
      expression
.. expression

Выражение записиRecord 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-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 expressions

выражение-доступа-к-полю:
      выбор-поля
      неявный-выбор-целевого-поля
      проекция
      неявная-проекция-целевого-поля
выбор-поля:
      селектор-поля-основного выражения
селектор-поля:
      селектор-обязательного-поля
      селектор-необязательного-поля
селектор-обязательного-поля:
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-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

выражение-функции: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
      parameter
, fixed-parameter-list
parameter:
      parameter-name parameter-typeopt
parameter-name:
      identifier
parameter-type:
      assertion
return-type:
      assertion
assertion:

      as тип-примитива-допускающий-значение-NULL
список-необязательных-параметров:
      необязательный-параметр
      необязательный-параметр
, список-необязательных-параметров
необязательный-параметр:
      as nullable-primitive-type
optional-parameter-list:
      optional-parameter
      optional-parameter
, optional-parameter-list
optional-parameter:

      optional параметр      optional parameter

Выражение eachEach expression

выражение-each:each-expression:
      each основная-часть-выражения-each
основная-часть-выражения-each:
      основная-часть-функции
      each each-expression-body
each-expression-body:
      function-body

Выражение letLet expression

выражение-let:let-expression:
      let список-переменных in выражение
список-переменных:
      переменная
      переменная
, список-переменных
переменная:
      имя-переменной
= выражение
имя-переменной:
      идентификатор
      let variable-list in expression
variable-list:
      variable
      variable
, variable-list
variable:
      variable-name
= expression
variable-name:
      identifier

Выражение ifIf expression

выражение-if:if-expression:
       if условие-if then выражение-true else выражение-false
условие-if:
      выражение
выражение-true:
      выражение
выражение-false:
      выражение
      if if-condition then true-expression else false-expression
if-condition:
      expression
true-expression:
      expression
false-expression:
      expression

Выражение типаType expression

выражение-типа:
      основное-выражение
type-expression:
      primary-expression

      type основной-тип
тип:
      выражение-в-круглых-скобках
      основной-тип
основной-тип:
      тип-примитива
      тип-записи
      тип-списка
      тип-функции
      тип-таблицы
      тип-допускающий-значение-NULL
тип-примитива:
один из следующего
      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      any anynonnull binary date datetime datetimezone duration function
      list logical none null number record table text type      list logical none null number record table text 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необязательно имя-поля спецификация-типа-полянеобязательно
спецификация-типа-поля:
      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 ( список-спецификаций-параметра необязательно ) возвращаемый-тип
список-спецификаций-параметра:
      список-спецификаций-обязательного-параметра
      список-спецификаций-обязательного-параметра
, список-спецификаций-необязательного-параметра
      список-спецификаций-необязательного-параметра
список-спецификаций-обязательного-параметра:
      спецификация-обязательного-параметра
      спецификация-обязательного-параметра
, список-спецификаций-обязательного-параметра
спецификация-обязательного-параметра:
      спецификация-параметра
список-спецификаций-необязательного-параметра:
      спецификация-необязательного-параметра
      спецификация-необязательного-параметра
, список-спецификаций-необязательного-параметра
спецификация-необязательного-параметра:
      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 спецификация-параметра
спецификация-параметра:
      имя-параметра тип-параметра
тип-таблицы:
      optional parameter-specification
parameter-specification:
      parameter-name parameter-type
table-type:

      table тип-строки
тип-строки:
      table row-type
row-type:

      [ список-спецификаций-поля ]      [ field-specification-list ]
тип-допускающий-значение-NULL:nullable-type:
      nullable тип      nullable type

Выражение, вызывающее ошибкуError raising expression

выражение-вызывающее-ошибку:error-raising-expression:
      error выражение_      error expression_

Выражение обработки ошибокError handling expression

выражение-обработки-ошибок:error-handling-expression:
      try защищенное-выражение-предложения-otherwiseнеобязательно
защищенное-выражение:
      выражение
предложение-otherwise:
      try protected-expression otherwise-clauseopt
protected-expression:
      expression
otherwise-clause:

      otherwise выражение-по-умолчанию
выражение-по-умолчанию:
      выражение
      otherwise default-expression
default-expression:
      expression

Литеральные атрибутыLiteral Attributes

литеральные-атрибуты:
      литерал-записи
литерал-записи:
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 }
список-литеральных-элементов:
      любой-литерал
      любой-литерал
, список-литеральных-элементов
любой-литерал:
      литерал-записи
      литерал-списка
      логический-литерал
      числовой-литерал
      текстовый-литерал
      литерал-NULL
literal-item-list:
      any-literal
      any-literal
, literal-item-list
any-literal:
      record-literal
      list-literal
      logical-literal
      number-literal
      text-literal
      null-literal