Exercício GDL 1: Implementando um esquema GDL
Exercício
Implemente um esquema que cria três categorias de atributos e não impõe restrições sobre onde os constructos podem ser localizados.
Esses atributos devem ser divididos nas seguintes categorias:
Atributos que podem aparecer no nível raiz e dentro de constructos.
Atributos que só podem aparecer no nível raiz.
Atributos que só podem aparecer em constructos.
Não defina nenhuma palavra-chave em seu esquema; inclua apenas a estrutura para as palavras-chave futuras.
Nota Usando modelos, você pode criar um esquema virtual, ou seja, um esquema que não define nenhuma entrada GDL. O esquema base definido dessa forma exerce sua influência independentemente de como esse esquema seja estendido no futuro.
Solução
O exemplo de código a seguir demonstra uma maneira de concluir este exercício.
*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)
}
Nota Você pode colocar os modelos no exemplo anterior em um arquivo MasterTemplate.gdl para uso pelo próximo exercício.