Partager via


Contextes imbriqués GDL

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

Les contextes d’imbrication peuvent être imbriqués les uns dans les autres. Les caractères d’imbrication de fin peuvent uniquement être utilisés pour mettre fin au contexte d’imbrication actuel. Si les caractères d’imbrication de fin apparaissent 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 n’importe quel 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 les 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é comme faisant partie de la valeur. Par exemple, le code GDL suivant représente une entrée avec une mot clé de « *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é qui est défini par des délimiteurs 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" ]