Gramática consolidadaConsolidated Grammar

Gramática lexicalLexical grammar

unidade-lexical:
      elementos-lexicaisopt
elementos-lexicais:
      elemento-lexical elementos-lexicaisopt
elemento-lexical:
      espaço em branco
      comentário de token
lexical-unit:
      lexical-elementsopt
lexical-elements:
      lexical-element lexical-elementsopt
lexical-element:
      whitespace
      token comment

Espaço em brancoWhite space

espaço em branco:whitespace:
      Qualquer caractere com classe Unicode ZS      Any character with Unicode class Zs
      Caractere de tabulação horizontal (U+0009)      Horizontal tab character (U+0009)
      Caractere de tabulação vertical (U+000B)      Vertical tab character (U+000B)
      Caractere de feed de formulário (U+000C)      Form feed character (U+000C)
      Caractere de retorno de carro (U+000D) seguido de caractere de alimentação de linha (U+000A)       caractere-de-nova-linha
caractere-de-nova-linha:
      Carriage return character (U+000D) followed by line feed character (U+000A)       new-line-character
new-line-character:

      Caractere de retorno de carro (U+000D)      Carriage return character (U+000D)
      Caractere de feed de linha (U+000A)      Line feed character (U+000A)
      Caractere de próxima linha (U+0085)      Next line character (U+0085)
      Caractere separador de linha (U+2028)      Line separator character (U+2028)
      Caractere separador de parágrafo (U+2029)      Paragraph separator character (U+2029)

ComentárioComment

comentário:
      comentário-de-linha-única
      comentário-delimitado

comentário-de-linha-única:
comment:
      single-line-comment
      delimited-comment

single-line-comment:

      // caracteres-de-comentário-de-linha-únicaopt
caracteres-de-comentário-de-linha-única:
      caracteres-de-comentário-de-linha-única caractere-de-comentário-de-linha-únicaopt
caractere-de-comentário-de-linha-única:
      // single-line-comment-charactersopt
single-line-comment-characters:
      single-line-comment-character single-line-comment-charactersopt
single-line-comment-character:

      Qualquer caractere Unicode, exceto um comentário-delimitado por caractere-de-nova-linha
:
      Any Unicode character except a new-line-character
delimited-comment:

      /* texto-de-comentário-delimitadoopt asteriscos /      /* delimited-comment-textopt asterisks /
texto-de-comentário-delimitado:
      seção-de-comentário-delimitado texto-de-comentário-delimitadoopt
seção-de-comentário-delimitado:
delimited-comment-text:
      delimited-comment-section delimited-comment-textopt
delimited-comment-section:

      /      /
      asteriscosopt caracteres-diferentes-de-barra-e-asterisco
asteriscos:
      asterisksopt not-slash-or-asterisk
asterisks:

      * asteriscosopt
caracteres-diferentes-de-barra-e-asterisco asteriscos:
      * asterisksopt
not-slash-or-asterisk:

      Qualquer caractere Unicode, exceto * ou /      Any Unicode character except * or /

TokensTokens

token:
      identificador
      palavra-chave
      literal
      operador-ou-pontuador
token:
      identifier
      keyword
      literal
      operator-or-punctuator

Sequências de escape de caractereCharacter escape sequences

sequência-de-escape-de-caracteres:character-escape-sequence:
      #( lista-de-sequências-de-escape )      #( escape-sequence-list )
lista-de-sequências-de-escape:
      sequência-de-escape-única
      lista-de-sequências-de-escape
, sequência-de-escape-única
sequência-de-escape-única:
      sequência-de-escape-unicode-longa
      sequência-de-escape-unicode-curta
      sequência-de-escape-de-caracteres-de-controle
      escape-escape
sequência-de-escape-unicode-longa:
      dígito-hexadecimal dígito-hexadecimal dígito-hexadecimal dígito-hexadecimal dígito-hexadecimal dígito-hexadecimal dígito-hexadecimal dígito-hexadecimal
sequência-de-escape-unicode-curta:
      dígito-hexadecimal dígito-hexadecimal dígito-hexadecimal dígito-hexadecimal
sequência-de-escape-de-caracteres-de-controle:
      caractere-de-controle
caractere-de-controle:
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:
      #      #

LiteraisLiterals

literal:
      literal-lógico
      literal-de-número
      literal-de-texto
      literal-nulo
      literal-textual
literal-lógico:
      true
      false
literal-de-número:
      literal-de-número-decimal
      literal-de-número-hexadecimal
dígitos-decimais:
      dígito-decimal dígitos-decimaisopt
dígito-decimal:
um entre
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
literal-de-número-hexadecimal:hexadecimal-number-literal:
      0x dígitos-hexadecimais      0x hex-digits
      0X dígitos-hexadecimais
dígitos-hexadecimais:
      dígito-hexadecimal dígitos-hexadecimaisopt
dígito-hexadecimal:
um entre
      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
literal-de-número-decimal:
      dígitos-decimais
. dígitos-decimais parte-do-expoenteopt
decimal-number-literal:
      decimal-digits
. decimal-digits exponent-partopt

      . dígitos-decimais parte-do-expoenteopt
      dígitos-decimais parte-do-expoenteopt
parte-do-expoente:
      . decimal-digits exponent-partopt
      decimal-digits exponent-partopt
exponent-part:

      e sinalopt dígitos-decimais      e signopt decimal-digits
      E sinalopt dígitos-decimais
sinal:
um entre
      E signopt decimal-digits
sign:
one of

      + -      + -
literal-de-texto:text-literal:
      " caracteres-de-literal-de-textoopt "      " text-literal-charactersopt "
caracteres-de-literal-de-texto:
      caractere-de-literal-de-texto caracteres-de-literal-de-textoopt
caractere-de-literal-de-texto:
      caractere-de-texto-único
      sequência-de-escape-de-caracteres
      sequência-de-escape-com-aspas-duplas
caractere-de-texto-único:
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:

      Qualquer caractere, exceto " (U+0022) ou # (U+0023) seguido por ( (U+0028)      Any character except " (U+0022) or # (U+0023) followed by ( (U+0028)
sequência-de-escape-com-aspas-duplas:double-quote-escape-sequence:
      "" (U+0022, U+0022)      "" (U+0022, U+0022)
literal-nulo:null-literal:
      null      null
literal-textual:verbatim-literal:
      #!" caracteres-de-literal-de-textoopt "      #!" text-literal-charactersopt "

IdentificadoresIdentifiers

identificador:
      identificador-comum
      identificador-entre-aspas
identificador-comum:
      identificador-disponível
      identificador-disponível caractere-de-ponto identificador-comum
identificador-disponível:
identifier:
      regular-identifier
      quoted-identifier
regular-identifier:
      available-identifier
      available-identifier dot-character regular-identifier
available-identifier:

      Uma palavra-chave-ou-identificador que não é uma palavra-chave
palavra-chave-ou-identificador:
      caractere-de-letra
      caractere-de-sublinhado
      caractere-identificador-de-início caracteres-identificadores-de-parte
caractere-identificador-de-início:
      caractere-de-letra
      caractere-de-sublinhado
caracteres-identificadores-de-parte:
      caractere-identificador-de-parte caracteres-identificadores-de-parteopt
caractere-identificador-de-parte:
      caractere-de-letra
      caractere-de-dígito-decimal
      caractere-de-sublinhado
      caractere-de-conexão
      caractere-de-combinação
      caractere-de-formatação
identificador-generalizado:
      parte-do-identificador-generalizado
      identificador-generalizado
separado somente por espaços em branco (U+0020) parte-do-identificador-generalizado
parte-do-identificador-generalizado:
      segmento-do-identificador-generalizado
      caractere-do-dígito-decimal segmento-identificador-generalizado
segmento-identificador-generalizado:
      palavra-chave-ou-identificador
      palavra-chave-ou-identificador caractere-de-ponto palavra-chave-ou-identificador
caractere-de-ponto:
      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)
caractere-de-sublinhado:underscore-character:
      _ (U+005F)      _ (U+005F)
caractere-de-letra:letter-character:
      Um caractere Unicode de uma das classes Lu, Ll, Lt, Lm, Lo ou Nl      A Unicode character of classes Lu, Ll, Lt, Lm, Lo, or Nl
caractere-de-combinação:combining-character:
      Um caractere Unicode de uma das classes Mn ou Mc      A Unicode character of classes Mn or Mc
caractere-de-dígito-decimal:decimal-digit-character:
      Um caractere Unicode da classe Nd      A Unicode character of the class Nd
caractere-de-conexão:connecting-character:
      Um caractere Unicode da classe Pc      A Unicode character of the class Pc
caractere-de-formatação:formatting-character:
      Um caractere Unicode da classe Cf      A Unicode character of the class Cf
identificador-entre-aspas:quoted-identifier:
      #" caracteres-de-literal-de-textoopt "      #" text-literal-charactersopt "

Palavras-chave e identificadores predefinidosKeywords and predefined identifiers

Palavras-chave e identificadores predefinidos não podem ser redefinidos.Predefined identifiers and keywords cannot be redefined. Um identificador entre aspas pode ser usado para lidar com identificadores que, de outra forma, colidiriam com identificadores ou palavras-chave predefinidos.A quoted identifier can be used to handle identifiers that would otherwise collide with predefined identifiers or keywords.

palavra-chave: um entrekeyword: 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

Operadores e pontuadoresOperators and punctuators

operador-ou-pontuador: um entreoperator-or-punctuator: one of
      , ; = < <= > >= <> + - * / & ( ) [ ] { } @ ? => .. ...      , ; = < <= > >= <> + - * / & ( ) [ ] { } @ ? => .. ...

Gramática sintáticaSyntactic grammar

DocumentosDocuments

documento:
      documento-de-seção
      documento-de-expressão
document:
      section-document
      expression-document

Documentos da seçãoSection Documents

documento-de-seção:
      seção
seção:
      atributos-literaisopt
section nome-da-seção ; membros-da-seçãoopt
nome-da-seção:
      identificador
membros-da-seção:
      membro-da-seção membro-da-seçãoopt
membros-da-seção:
      atributos-literaisopt compartilhadoopt nome-do-membro-da-seção
= expressão ;
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 ;

nome-do-membro-da-sessão:
      identificador
section-member-name:
      identifier

Documentos de expressãoExpression Documents

ExpressõesExpressions

documento-de-expressão:
      expressão
expressão:
      expressão-or-lógica
      expressão-each
      expressão-de-função
      expressão-let
      expressão-if
      expressão-de-geração-de-erros
      expressão-de-tratamento-de-erros
expression-document:
      expression
expression:
      logical-or-expression
      each-expression
      function-expression
      let-expression
      if-expression
      error-raising-expression
      error-handling-expression

Expressões lógicasLogical expressions

expressão-or-lógica:
      expressão-and-lógica
      expressão-and-lógica
or expressão-or-lógica
expressão-and-lógica:
      expressão-is
      expressão-and-lógica
and expressão-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

Expressão IsIs expression

expressão-is:
      expressão-as
      expressão-is
is tipo-primitivo-que-permite-valor-nulo
tipo-primitivo-que-permite-valor-nulo:
is-expression:
      as-expression
      is-expression
is nullable-primitive-type
nullable-primitive-type:

      nullableopt tipo-primitivo      nullableopt primitive-type

Expressão AsAs expression

expressão-as:
      expressão-de-igualdade
      expressão-as
as tipo-primitivo-que-permite-valor-nulo
as-expression:
      equality-expression
      as-expression
as nullable-primitive-type

Expressão de igualdadeEquality expression

expressão-de-igualdade:
      expressão-relacional
      expressão-relacional
= expressão-de-igualdade
      expressão-relacional
<> expressão-de-igualdade
equality-expression:
      relational-expression
      relational-expression
= equality-expression
      relational-expression
<> equality-expression

Expressão relacionalRelational expression

expressão-relacional:
      expressão-aditiva
      expressão-aditiva
< expressão-relacional
      expressão-aditiva
> expressão-relacional
      expressão-aditiva
<= expressão-relacional
      expressão-aditiva
>= expressão-relacional
relational-expression:
      additive-expression
      additive-expression
< relational-expression
      additive-expression
> relational-expression
      additive-expression
<= relational-expression
      additive-expression
>= relational-expression

Expressões aritméticasArithmetic expressions

expressão-aditiva:
      expressão-multiplicativa
      expressão-multiplicativa
+ expressão-aditiva
      expressão-multiplicativa
- expressão-aditiva
      expressão-multiplicativa
& _expressão-aditiva
additive-expression:
      multiplicative-expression
      multiplicative-expression
+ additive-expression
      multiplicative-expression
- additive-expression
      multiplicative-expression
& _additive-expression

expressão-multiplicativa:
      expressão-de-metadados
      expressão-de-metadados
* expressão-multiplicativa
      expressão-de-metadados
/ expressão-multiplicativa
multiplicative-expression:
      metadata-expression
      metadata-expression
* multiplicative-expression
      metadata-expression
/ multiplicative-expression

Expressão de metadadosMetadata expression

expressão-de-metadados:
      expressão-unária
      expressão-unária
meta expressão-unária
metadata-expression:
      unary-expression
      unary-expression
meta unary-expression

Expressão unáriaUnary expression

expressão-unária:
      expressão-de-tipo
unary-expression:
      type-expression

      + expressão-unária      + unary-expression
      - expressão-unária      - unary-expression
      not expressão-unária      not unary-expression

Expressão primáriaPrimary expression

expressão-primária:
      expressão-literal
      expressão-de-lista
      expressão-de-registro
      expressão-de-identificador
      expressão-de-acesso-à-seção
      expressão-entre-parênteses
      expressão-de-acesso-ao-campo
      expressão-de-acesso-ao-item
      expressão-de-invocação
      expressão-não-implementada
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

Expressão literalLiteral expression

expressão-literal:
      literal
literal-expression:
      literal

Expressão de identificadorIdentifier expression

expressão-de-identificador:
      referência-de-identificador
referência-de-identificador:
      referência-de-identificador-exclusiva
      referência-de-identificador-inclusiva
referência-do-identificador-exclusivo:
      identificador
referência-do-identificador-inclusivo:
identifier-expression:
      identifier-reference
identifier-reference:
      exclusive-identifier-reference
      inclusive-identifier-reference
exclusive-identifier-reference:
      identifier
inclusive-identifier-reference:

      @ identificador      @ identifier

Expressão de acesso à seçãoSection-access expression

expressão-de-acesso-à-seção:
      identificador
! identificador
section-access-expression:
      identifier
! identifier

Expressão entre parêntesesParenthesized expression

expressão-entre-parênteses:parenthesized-expression:
      ( expressão )      ( expression )

Expressão não implementadaNot-implemented expression

expressão-não-implementada:not-implemented-expression:
      ...      ...

Expressão de invocaçãoInvoke expression

expressão-de-invocação:
      expressão-primária
( lista-de-argumentosopt )
invoke-expression:
      primary-expression
( argument-listopt )

lista-de-argumentos:
      expressão
      expressão
, lista-de-argumentos
argument-list:
      expression
      expression
, argument-list

Expressão de listaList expression

expressão-de-lista:list-expression:
      { lista-de-itensopt }      { item-listopt }
lista-de-itens:
      item
      item
, lista-de-itens
item:
      expressão
      expressão
.. expressão
item-list:
      item
      item
, item-list
item:
      expression
      expression
.. expression

Expressão de registroRecord expression

expressão-de-registro:record-expression:
      [ lista-de-camposopt ]      [ field-listopt ]
lista-de-campos:
      campo
      campo
, lista-de-campos
campo:
      nome-do-campo
= expressão
nome-do-campo:
      identificador-generalizado
      identificador-entre-aspas
field-list:
      field
      field
, field-list
field:
      field-name
= expression
field-name:
      generalized-identifier
      quoted-identifier

Expressão de acesso ao itemItem access expression

expressão-de-acesso-a-item:
      seleção-de-item
      seleção-de-item-opcional
seleção-de-item:
      expressão-primária
{ seletor-de-item }
item-access-expression:
      item-selection
      optional-item-selection
item-selection:
      primary-expression
{ item-selector }

seleção-de-item-opcional:
      expressão-primária
{ seletor-de-item } ?
optional-item-selection:
      primary-expression
{ item-selector } ?

seletor-de-item:
      expressão
item-selector:
      expression

Expressões de acesso ao campoField access expressions

expressão-de-acesso-ao-campo:
      seleção-de-campo
      seleção-de-campo-de-destino-implícita
      projeção
      projeção-de-destino-implícita
seleção-de-campo:
      expressão-primária seletor-de-campo
seletor-de-campo:
      seletor-de-campo-obrigatório
      seletor-de-campo-opcional
seletor-de-campo-obrigatório:
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:

      [ nome-do-campo ]      [ field-name ]
seletor-de-campo-opcional:optional-field-selector:
      [ nome-do-campo ] ?      [ field-name ] ?
nome-do-campo:
      identificador-generalizado
      identificador-entre-aspas
seleção-de-campo-de-destino-implícita:
      seletor-de-campo
projeção:
      expressão-primária projeção-obrigatória
      expressão-primária projeção-opcional
projeção-obrigatória:
field-name:
      generalized-identifier
      quoted-identifier
implicit-target-field-selection:
      field-selector
projection:
      primary-expression required-projection
      primary-expression optional-projection
required-projection:

      [ lista-de-seletores-obrigatórios ]      [ required-selector-list ]
projeção-opcional:optional-projection:
      [ lista-de-seletores-obrigatórios ] ?      [ required-selector-list ] ?
lista-de-seletores-obrigatórios:
      seletor-de-campo-obrigatório
      seletor-de-campo-obrigatório
, lista-de-seletores-obrigatórios
projeção-de-destino-implícita:
      projeção-obrigatória
      projeção-opcional
required-selector-list:
      required-field-selector
      required-field-selector
, required-selector-list
implicit-target-projection:
      required-projection
      optional-projection

Expressão de funçãoFunction expression

expressão-de-função:function-expression:
      ( lista-de-parâmetrosopt ) tipo-de-retornoopt => corpo-da-função
corpo-da-função:
      expressão
lista-de-parâmetros:
      lista-de-parâmetros-fixos
      lista-de-parâmetros-fixos
, lista-de-parâmetros-opcionais
      lista-de-parâmetros-opcionais
lista-de-parâmetros-fixos:
      parâmetro
      parâmetro
, lista-de-parâmetros-fixos
parâmetro:
      nome-do-parâmetro tipo-de-parâmetroopt
nome-do-parâmetro:
      identificador
tipo-de-parâmetro:
      asserção
tipo-de-retorno:
      asserção
asserção:
      ( 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 tipo-primitivo-que-permite-valor-nulo
lista-de-parâmetros-opcionais:
      parâmetro-opcional
      parâmetro-opcional
, lista-de-parâmetros-opcionais
parâmetro-opcional:
      as nullable-primitive-type
optional-parameter-list:
      optional-parameter
      optional-parameter
, optional-parameter-list
optional-parameter:

      optional parâmetro      optional parameter

Expressão eachEach expression

expressão-each:each-expression:
      each corpo-da-expressão-each
corpo-da-expressão-each:
      corpo-da-função
      each each-expression-body
each-expression-body:
      function-body

Expressão letLet expression

expressão-let:let-expression:
      let lista-de-variáveis in expressão
lista-de-variáveis:
      variável
      variável
, lista-de-variáveis
variável:
      nome-da-variável
= expressão
nome-da-variável:
      identificador
      let variable-list in expression
variable-list:
      variable
      variable
, variable-list
variable:
      variable-name
= expression
variable-name:
      identifier

Expressão ifIf expression

expressão-if:if-expression:
      if condição-if then expressão-verdadeira else expressão-falsa
condição-if:
      expressão
expressão-verdadeira:
      expressão
expressão-falsa:
      expressão
      if if-condition then true-expression else false-expression
if-condition:
      expression
true-expression:
      expression
false-expression:
      expression

Expressão de tipoType expression

expressão-de-tipo:
      expressão-primária
type-expression:
      primary-expression

      type tipo-primário
tipo:
      expressão-entre-parênteses
      tipo-primário
tipo-primário:
      tipo-primitivo
      tipo-de-registro
      tipo-de-lista
      tipo-de-função
      tipo-de-tabela
      tipo-anulável
tipo-primitivo:
um entre
      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
tipo-de-registro: record-type:
      [ marcador-de-registro-aberto ]      [ open-record-marker ]
      [ lista-de-especificação-de-camposopt ]      [ field-specification-listopt ]
      [ lista-de-especificações-de-campo , marcador-de-registro-aberto ]      [ field-specification-list , open-record-marker ]
lista-de-especificações-de-campo:
      especificação-de-campo
      especificação-de-campo
, lista-de-especificações-de-campo
especificação-de-campo:
field-specification-list:
      field-specification
      field-specification
, field-specification-list
field-specification:

      optionalopt nome-do-campo especificação-de-tipo-de-campoopt
especificação-de-tipo-de-campo:
      optionalopt field-name field-type-specificationopt
field-type-specification:

      = tipo-de-campo
tipo-de-campo:
      tipo
marcador-de-registro-aberto:
      = field-type
field-type:
      type
open-record-marker:

      ...      ...
tipo-de-lista:list-type:
      { tipo-de-item }      { item-type }
tipo-de-item:
      tipo
tipo-de-função:
item-type:
      type
function-type:

      function ( lista-de-especificações-de-parâmetroopt ) tipo-retornado
lista-de-especificações-de-parâmetro:
      lista-de-especificações-de-parâmetro-obrigatórias
      lista-de-especificações-de-parâmetro-obrigatórias
, lista-de-especificações-de-parâmetro-opcionais
      lista-de-especificações-de-parâmetro-opcionais
lista-de-especificações-de-parâmetro-obrigatórias:
      especificação-de-parâmetro-obrigatória
      especificação-de-parâmetro-obrigatória
, lista-de-especificações-de-parâmetro-obrigatórias
especificação-de-parâmetro-obrigatória:
      especificação-de-parâmetro
lista-de-especificações-de-parâmetro-opcionais:
      especificação-de-parâmetro-opcional
      especificação-de-parâmetro-opcional
, lista-de-especificações-de-parâmetro-opcionais
especificação-de-parâmetro-opcional:
      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 especificação-de-parâmetro
especificação-de-parâmetro:
      nome-do-parâmetro tipo-de-parâmetro
tipo-de-tabela:
      optional parameter-specification
parameter-specification:
      parameter-name parameter-type
table-type:

      table tipo-de-linha
tipo-de-linha:
      table row-type
row-type:

      [ lista-de-especificações-de-campo ]      [ field-specification-list ]
tipo-anulável:nullable-type:
      nullable tipo      nullable type

Expressão para geração de errosError raising expression

expressão-para-geração-de-erros:error-raising-expression:
      error expressão_      error expression_

Expressão de tratamento de erroError handling expression

expressão-de-tratamento-de-erro:error-handling-expression:
      try expressão-protegida cláusula-otherwiseopt
expressão-protegida:
      expressão
cláusula-otherwise:
      try protected-expression otherwise-clauseopt
protected-expression:
      expression
otherwise-clause:

      otherwise expressão-padrão
expressão-padrão:
      expressão
      otherwise default-expression
default-expression:
      expression

Atributos literaisLiteral Attributes

atributos-literais:
      literal-de-registro
literal-de-registro:
literal-attributes:
      record-literal
record-literal:

      [ lista-de-campos-literaisopt ]      [ literal-field-listopt ]
lista-de-campos-literais:
      campo-literal
      campo-literal
, lista-de-campos-literais
campo-literal:
      nome-do-campo
= qualquer-literal
literal-de-lista:
literal-field-list:
      literal-field
      literal-field
, literal-field-list
literal-field:
      field-name
= any-literal
list-literal:

      { lista-de-itens-literaisopt }      { literal-item-listopt }
lista-de-itens-de-literal:
      qualquer-literal
      qualquer-literal
, lista-de-itens-de-literal
qualquer-literal:
      literal-de-registro
      literal-de-lista
      literal-lógico
      literal-de-número
      literal-de-texto
      literal-nulo
literal-item-list:
      any-literal
      any-literal
, literal-item-list
any-literal:
      record-literal
      list-literal
      logical-literal
      number-literal
      text-literal
      null-literal