Compartilhar via


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.