Compartir a través de


Contextos anidados de GDL

Se introduce un contexto anidado con el carácter de anidamiento inicial (que es un paréntesis de apertura o un corchete de apertura). El contexto anidado finaliza cuando se encuentra el carácter de anidamiento final coincidente (que es un paréntesis de cierre o corchete de cierre).

Los contextos de anidamiento se pueden anidar entre sí. Los caracteres de anidamiento final solo se pueden usar para finalizar el contexto de anidamiento actual. Si los caracteres de anidamiento final aparecen en cualquier otro lugar, se trata de un error de sintaxis.

Dentro de un contexto anidado, los caracteres delimitadores de construcción pierden su significado como delimitadores de construcción y también se tratan como delimitadores de contexto anidados. Dentro de un contexto anidado, una secuencia de salto de línea se trata como espacio en blanco no literal.

El contexto anidado puede aparecer fuera de cualquier contexto o dentro de otro contexto anidado, pero no dentro de ningún otro contexto. Cualquier contexto, incluidos otros contextos anidados, puede aparecer dentro de un contexto anidado, excepto en el contexto HexSubString.

En el ejemplo de código siguiente se muestra un contexto anidado de GDL.

*good_nests: ( { } [ ( ) ] )

En los ejemplos de código siguientes se muestran contextos anidados de GDL que contienen errores.

*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.

Todo el contenido de un contexto anidado se trata como parte del valor. Por ejemplo, el código GDL siguiente representa una entrada con una palabra clave de "*KeywordA". El resto del fragmento es el valor de *KeywordA, porque lo que parece ser entradas independientes para *KeywordB y *KeywordC se encuentran dentro de un contexto anidado. De hecho, los números "12, 38, 709" se encuentran en un contexto anidado definido por delimitadores de paréntesis que están anidados dentro del contexto externo definido por los delimitadores de corchetes.

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