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" ]