GDL 入れ子コンテキスト
入れ子コンテキストは、入れ子の開始文字 (開始かっこまたは開始角かっこ) で導入されます。 入れ子コンテキストは、一致する 終了入れ子文字 (終わりかっこまたは終わり角かっこ) が検出されると終了します。
入れ子コンテキストは、相互に入れ子にすることができます。 入れ子の終了文字は、現在の入れ子コンテキストを終了するためにのみ使用できます。 末尾の入れ子の文字が他の場所に表示される場合は、構文エラーです。
入れ子になったコンテキスト内では、コンストラクト区切り文字はコンストラクト区切り記号としての意味を失い、入れ子コンテキスト区切り記号としても扱われます。 入れ子コンテキスト内では、改行シーケンスは非リテラル空白として扱われます。
入れ子コンテキストは、任意のコンテキストの外部または別の入れ子コンテキスト内に出現できますが、他のコンテキスト内には表示されません。 他の入れ子コンテキストを含むすべてのコンテキストは、HexSubString コンテキストを除き、入れ子コンテキスト内に表示できます。
次のコード例は、GDL の入れ子コンテキストを示しています。
*good_nests: ( { } [ ( ) ] )
次のコード例は、エラーを含む GDL 入れ子コンテキストを示しています。
*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.
入れ子コンテキストの内容全体は、値の一部として扱われます。 たとえば、次の GDL コードは、「*KeywordA」のキーワード を持つ 1 つのエントリを表します。 *KeywordB と *KeywordC の個別のエントリのように見えるものがネストされたコンテキスト内に含まれているため、フラグメントの残りの部分は *KeywordA の値です。 実際、数字「12、38、709」は、それ自体、角括弧区切り文字で定義された外側のコンテキスト内にネストされた括弧区切り文字で定義されたネストされたコンテキスト内にあります。
*KeywordA: [
*KeywordB: List(12, 38, 709)
*KeywordC: "the small brown fox" ]