Поделиться через


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 для использования в следующем упражнении.