Compartilhar via


Contextos aninhados de GDL

Um contexto aninhado é introduzido com o caractere de aninhamento de início (que é um parêntese de abertura ou um colchete de abertura). O contexto aninhado termina quando o caractere de aninhamento final correspondente (que é um parêntese de fechamento ou colchete de fechamento) é encontrado.

Os contextos de aninhamento podem ser aninhados entre si. Os caracteres de aninhamento final só podem ser usados para encerrar o contexto de aninhamento atual. Se os caracteres de aninhamento final aparecerem em qualquer outro lugar, será um erro de sintaxe.

Em um contexto aninhado, os caracteres delimitadores de construção perdem seu significado como delimitadores de construção e também são tratados como delimitadores de contexto aninhados. Dentro de um contexto aninhado, uma sequência de quebra de linha é tratada como espaço em branco não literal.

O contexto aninhado pode aparecer fora de qualquer contexto ou dentro de outro contexto aninhado, mas não dentro de nenhum outro contexto. Qualquer contexto, incluindo outros contextos aninhados, pode aparecer dentro de um contexto aninhado, exceto para o contexto HexSubString.

O exemplo de código a seguir mostra um contexto aninhado de GDL.

*good_nests: ( { } [ ( ) ] )

Os exemplos de código a seguir mostram contextos aninhados de GDL que contêm erros.

*bad_nests: (  ] *%  end nesting delimiter can only be used within its nesting context.
*bad_nests: (  ]  )
*bad_nests:   ] [   *%  end nesting delimiter can only be used within its nesting context.
*bad_nests: (  [  )   ]   *%  end nesting delimiter can only be used within its nesting*% context.  In this case the ')' char cannot be used within the context begun 
*%by '[' .
*bad_nests:  {  [ ]  }  *% attempt to use construct delimiter to define a nesting context 
*%  outside of a nesting context.

Todo o conteúdo de um contexto aninhado é tratado como parte do valor. Por exemplo, o código GDL a seguir representa uma entrada com um palavra-chave de "*KeywordA". O restante do fragmento é o valor de *KeywordA, porque o que parece ser entradas separadas para *KeywordB e *KeywordC estão contidos em um contexto aninhado. Na verdade, os números "12, 38, 709" estão em um contexto aninhado definido por delimitadores entre parênteses aninhados dentro do contexto externo definido pelos delimitadores de colchetes.

*KeywordA: [
*KeywordB:  List(12, 38, 709)
*KeywordC:  "the small brown fox" ]