Partager via


Contextes imbriqués GDL

Un contexte imbriqué est introduit avec le caractère de début d'imbrication (qui est une parenthèse ouvrante ou un crochet ouvrant). Le contexte imbriqué se termine lorsque le caractère d’imbrication de fin correspondant (parenthèse fermante ou crochet fermant) est rencontré.

Les contextes d’imbrication peuvent être imbriqués entre eux. Les caractères d’imbrication de fin peuvent être utilisés uniquement pour mettre fin au contexte d’imbrication actuel. Si les caractères de fin d’imbrication apparaissent n’importe où ailleurs, il s’agit d’une erreur de syntaxe.

Dans un contexte imbriqué, les caractères délimiteurs de construction perdent leur signification en tant que délimiteurs de construction et sont également traités comme des délimiteurs de contexte imbriqués. Dans un contexte imbriqué, une séquence de saut de ligne est traitée comme un espace blanc non littéral.

Le contexte imbriqué peut apparaître en dehors de n’importe quel contexte ou dans un autre contexte imbriqué, mais pas dans un autre contexte. Tout contexte, y compris d’autres contextes imbriqués, peut apparaître dans un contexte imbriqué, à l’exception du contexte HexSubString.

L’exemple de code suivant montre un contexte imbriqué GDL.

*good_nests: ( { } [ ( ) ] )

Les exemples de code suivants illustrent des contextes imbriqués GDL qui contiennent des erreurs.

*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.

Le contenu entier d’un contexte imbriqué est traité dans le cadre de la valeur. Par exemple, le code GDL suivant représente une entrée avec un mot clé « *KeywordA ». Le reste du fragment est la valeur de *KeywordA, car ce qui semble être des entrées distinctes pour *KeywordB et *KeywordC sont contenues dans un contexte imbriqué. En fait, les nombres « 12, 38, 709 » sont eux-mêmes dans un contexte imbriqué défini par des séparateurs entre parenthèses imbriqués dans le contexte externe défini par les délimiteurs entre crochets.

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