GDL 建構等位
如果 GDL 來源檔案中定義了具有相同建構類型和建構標記的多個建構,則該建構的邏輯標記法 (邏輯建構) 將包含 GDL 來源檔案中所定義原始建構內容的聯集。
建構類型和建構標記會一起唯一指定或定義邏輯建構 (在其父系) 的內容中。 不同于 XML,定義兩個 同層級 建構時,每個建構類型都相同,而建構標記則結果為一個邏輯建構。 事實上,建構甚至不需要是 syntactical 同層級,它們可以是邏輯同層級。 (Syntactical 同層級 明確位於相同的建構主體中,而 邏輯 同層級都是相同邏輯建構的子系。)
邏輯建構的內容是同層級內容的聯集。 快照集中顯示的內容是邏輯建構,而不是在 GDL 來源檔案中原本以語法方式定義的建構。 在下列程式碼範例中,有兩個同層級建構,兩者皆具有建構類型:*Person 和具有建構標籤:一個為一個:一個是一個。
*Person: FlorenceF
{
*Name: Florence Flipo
*Company:Contoso Pharmaceuticals
{
*Location: Redmond, WA
}
}
*Person: FlorenceF
{
*Position: CEO
*Company:Contoso Pharmaceuticals
{
*NumberOfEmployees: 43,000
}
}
根據上述規則,兩個同層級定義單一邏輯建構,其中包含兩個同層級的聯集。
*Person: FlorenceF
{
*Name: Florence Flipo
*Company:Contoso Pharmaceuticals
{
*Location: Redmond, WA
}
*Position: CEO
*Company:Contoso Pharmaceuticals
{
*NumberOfEmployees: 43,000
}
}
請注意,上述範例中的合併已建立兩個新的同層級建構,具有相同的建構類型:*公司與建構標籤:Contoso Pharmaceuticals。
如果再次套用相同的規則 (遞迴) ,則會產生下列程式碼。
*Person: FlorenceF
{
*Name: Florence Flipo
*Company:Contoso Pharmaceuticals
{
*Location: Redmond, WA
*NumberOfEmployees: 43,000
}
*Position: CEO
}
剖析上述三個 GDL 片段中的任何一個時,會產生相同的內部標記法。 內部表示最類似最後一個片段。
當定義具有相同關鍵字的屬性時,不會進行合併。 每個定義仍然存在於內部標記法中。 範本指示詞 *Additive 是用來指定傳送至快照集的值或值。
GDL 剖析器會採用 GDL 資料流程的語法標記法,並建立 GDL 命令的內部邏輯標記法。 然後,這些命令的內部標記法會轉換成 XML,並成為快照集。