Costrutti GDL
Un costrutto GDL è semplicemente un attributo GDL seguito da un corpo costrutto. Logicamente, un costrutto rappresenta una raccolta di dati, molto simile a una struttura C.
Un corpo costrutto è zero, uno o più voci GDL racchiuse in caratteri delimitatori. Il corpo del costrutto deve essere introdotto dalla parentesi graffe sinistra ({) e terminata dalla parentesi graffe destra (}).
Le voci GDL racchiuse tra i caratteri delimitatori del costrutto sono denominate contenuto del costrutto. Le voci GDL racchiuse sono definite anche elementi figlio, voci figlio, elementi figlio o membri del costrutto. Poiché le voci figlio possono anche essere costrutti, è possibile creare annidazioni arbitrarie di costrutti; tuttavia, solo i discendenti immediati del costrutto padre sono denominate voci figlio.
Al contrario, il costrutto che racchiude immediatamente le voci figlio viene talvolta definito costrutto padre. Due voci GDL che condividono lo stesso costrutto padre sono denominate fratelli. Costrutto il cui corpo contiene l'elemento padre di una voce o l'elemento padre di un elemento padre di una voce (e così via) viene chiamato costrutto predecessore.
L'attributo che precede il corpo del costrutto è denominato head di costrutto o talvolta solo il costrutto. Il componente della parola chiave della testa di costrutto è denominato tipo di costrutto. Se vengono definiti più costrutti di pari livello, ognuno con la stessa parola chiave, viene considerato appartenente allo stesso tipo di costrutto. Il componente valore dell'head del costrutto è denominato nome dell'istanza di costrutto o il tag di costrutto. Il tag di costrutto deve essere un simbolo. Il tag di costrutto è sintatticamente facoltativo, ma è obbligatorio in alcuni casi.
I costrutti possono essere sintattici o logici. I costrutti possono essere costituiti da unioni.
Una quantità arbitraria di spazi vuoti e sequenze linebreak può precedere o seguire i caratteri delimitatori di costrutto. Tuttavia, per motivi di leggibilità, viene in genere usata una convenzione di rientro in stile C.
Nell'esempio di codice seguente viene illustrato un costrutto GDL.
*ConstructType: ConstructTag
{ *% Begin Construct Delimiter
*% this is the Construct Body
*ChildAttribute: child attribute value
*ChildConstruct: ChildConstructTag
{
*% Body of Child construct could hold more constructs.
}
*AnotherChildConstruct: ChildConstructTag2
{
*% Contents of *AnotherChildConstruct
*% since both child constructs share the same Parent construct, they are
*% Sibling Constructs.
*DescendantAttribute: this attribute is a descendant of *ConstructType: ConstructTag
}
} *% End Construct Delimiter
Contenuto della sezione