GDL 练习 1:实现 GDL 架构

运动

实现一个架构,该架构创建三个类别的属性,并且不会对构造的位置施加限制。

这些属性必须分为以下类别:

  • 可在根级别和构造中显示的属性。

  • 只能在根级别显示的属性。

  • 只能在构造中显示的属性。

不要在架构中定义任何关键字;只需包含未来关键字的框架即可。

注意 通过使用模板,可以创建虚拟架构,即不定义任何 GDL 条目的架构。 以这种方式定义的基本架构将发挥其影响,无论将来如何扩展此架构。

解决方案

下面的代码示例演示了完成本练习的一种方法。

*Template:  ATTRIBUTE
{
    *Type:  ATTRIBUTE
    *Virtual:  TRUE
}
*Template:  ROOT_ATTRIB
{
    *Inherits: ATTRIBUTE
    *Virtual:  TRUE
}
*Template:     CONSTRUCT_ATTRIB  *%  May not appear at Root level
{
    *Inherits: ATTRIBUTE
    *Virtual:  TRUE
}
*Template:     FREEFLOAT
{
    *Inherits: ATTRIBUTE
    *Virtual:  TRUE
}
*Template:  CONSTRUCTS
{
    *Type: CONSTRUCT
    *Members:  ( CONSTRUCTS, FREEFLOAT, CONSTRUCT_ATTRIB)
    *Virtual:  TRUE
}

*Template:  ROOT
{
            *Type: CONSTRUCT
            *AllowNewMembers: FALSE
            *Name:  "root"
            *Instances:  <ANY>
            *Members:  (ROOT_ATTRIB, FREEFLOAT, CONSTRUCTS)
}

注意 可以将前面示例中的模板放在 MasterTemplate.gdl 文件中,供下一个练习使用。