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 代码表示一个关键字 (keyword) 为“*KeywordA”的条目。 该片段的其余部分是 *KeywordA 的值,因为显示为 *KeywordB 和 *KeywordC 的单独条目包含在嵌套上下文中。 事实上,数字“12,38,709”本身位于嵌套上下文中,该上下文由括号分隔符定义,括号分隔符嵌套在由方括号分隔符定义的外部上下文中。

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