Unions de construction GDL
Si plusieurs constructions avec le même type de construction et la même balise de construction sont définies dans le fichier source GDL, la représentation logique de cette construction ( la construction logique) contient l’union du contenu des constructions d’origine définies dans le fichier source GDL.
Le type de construction et la balise de construction spécifient ou définissent une construction logique de manière unique (dans le contexte de son parent). Contrairement à XML, lorsque deux constructions frères sont définies, chacune avec le même type de construction et la même balise de construction, le résultat est une construction logique. En fait, les constructions n’ont même pas besoin d’être des frères syntaxiques, ils peuvent être des frères logiques. (Les frères et sœurs syntaxiques résident explicitement dans le même corps de construction, et les frères logiques sont tous les deux enfants de la même construction logique.)
Le contenu de la construction logique est une union du contenu des frères et sœurs. Ce qui apparaît dans le instantané sont les constructions logiques, et non les constructions telles qu’elles sont initialement définies syntaxiquement dans le fichier source GDL. Dans l’exemple de code suivant, il existe deux constructions frères, à la fois avec le type de construction : *Person et avec l’étiquette de construction : FlorenceF.
*Person: FlorenceF
{
*Name: Florence Flipo
*Company:Contoso Pharmaceuticals
{
*Location: Redmond, WA
}
}
*Person: FlorenceF
{
*Position: CEO
*Company:Contoso Pharmaceuticals
{
*NumberOfEmployees: 43,000
}
}
Selon la règle précédente, les deux frères et sœurs définissent une construction logique unique qui contient l’union des deux frères et sœurs.
*Person: FlorenceF
{
*Name: Florence Flipo
*Company:Contoso Pharmaceuticals
{
*Location: Redmond, WA
}
*Position: CEO
*Company:Contoso Pharmaceuticals
{
*NumberOfEmployees: 43,000
}
}
Notez que la fusion dans l’exemple précédent a créé deux nouvelles constructions frères qui ont le même type de construction : *Company et Construct Tag: Contoso Pharmaceuticals.
Si la même règle a été appliquée à nouveau (de manière récursive), le code suivant en résulterait.
*Person: FlorenceF
{
*Name: Florence Flipo
*Company:Contoso Pharmaceuticals
{
*Location: Redmond, WA
*NumberOfEmployees: 43,000
}
*Position: CEO
}
L’un des trois fragments GDL précédents, lorsqu’ils sont analysés, produit la même représentation interne. La représentation interne ressemble le plus au dernier fragment.
Lorsque des attributs avec le même mot clé sont définis par multiplication, aucune fusion n’a lieu. Chaque définition existe toujours dans la représentation interne. La directive de modèle *Additif est utilisée pour spécifier la ou les valeurs qui sont transférées à l’instantané.
L’analyseur GDL prend la représentation syntaxique du flux GDL et crée une représentation logique interne des commandes GDL. La représentation interne de ces commandes est ensuite convertie en XML et devient une instantané.