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