Geschachtelte GDL-Kontexte
Ein geschachtelter Kontext wird mit dem Schachtelungszeichen begin eingeführt (bei dem es sich um eine öffnende Klammer oder eine öffnende eckige Klammer handelt). Der geschachtelte Kontext endet, wenn das übereinstimmende Endschachtelungszeichen (bei dem es sich um eine schließende Klammer oder eine schließende eckige Klammer handelt) gefunden wird.
Schachtelungskontexte können ineinander geschachtelt werden. Die Endschachtelungszeichen können nur verwendet werden, um den aktuellen Schachtelungskontext zu beenden. Wenn Endschachtelungszeichen an anderer Stelle angezeigt werden, handelt es sich um einen Syntaxfehler.
Innerhalb eines geschachtelten Kontexts verlieren die Konstrukttrennzeichen ihre Bedeutung als Konstrukttrennzeichen und werden auch als geschachtelte Kontexttrennzeichen behandelt. Innerhalb eines geschachtelten Kontexts wird eine Zeilenumbruchsequenz als nicht literale Leerzeichen behandelt.
Der geschachtelte Kontext kann außerhalb eines beliebigen Kontexts oder innerhalb eines anderen geschachtelten Kontexts, aber nicht innerhalb eines anderen Kontexts angezeigt werden. Jeder Kontext, einschließlich anderer geschachtelter Kontexte, kann in einem geschachtelten Kontext mit Ausnahme des HexSubString-Kontexts angezeigt werden.
Das folgende Codebeispiel zeigt einen geschachtelten GDL-Kontext.
*good_nests: ( { } [ ( ) ] )
Die folgenden Codebeispiele zeigen geschachtelte GDL-Kontexte, die Fehler enthalten.
*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.
Der gesamte Inhalt eines geschachtelten Kontexts wird als Teil des -Werts behandelt. Der folgende GDL-Code stellt beispielsweise einen Eintrag mit dem Schlüsselwort (keyword) "*KeywordA" dar. Der Rest des Fragments ist der Wert von *KeywordA, da die scheinbar separaten Einträge für *KeywordB und *KeywordC in einem geschachtelten Kontext enthalten sind. Tatsächlich befinden sich die Zahlen "12, 38, 709" selbst in einem geschachtelten Kontext, der durch Klammertrennzeichen definiert wird, die innerhalb des äußeren Kontexts geschachtelt sind, der durch die eckigen Klammertrennzeichen definiert wird.
*KeywordA: [
*KeywordB: List(12, 38, 709)
*KeywordC: "the small brown fox" ]