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 파일에 이전 예제의 템플릿을 배치할 수 있습니다.