GDL 연습 3: Root-Level 구문 만들기

운동

연습 1의 스키마를 수정하여 루트 수준에서만 찾을 수 있는 *PFeature라는 구문을 도입합니다.

다음 조건을 사용합니다.

  • *PFeature는 instance 이름을 가질 수 있습니다.

  • *PFeature 멤버는 *Name 및 *DefaultOption이라는 특성입니다.

  • *PFeature에는 가상으로 선언해야 하는 *Poption 이라는 구문 멤버가 있습니다.

솔루션

다음 템플릿은 이전 조건을 충족합니다.

*Template:  POPTION
{
    *Name:  "*POption"
    *Type: CONSTRUCT
    *Virtual:  TRUE
}

*Template:  NAME
{
    *Name:  "*Name"
    *Type:  ATTRIBUTE
    *ValueType:  NORMAL_STRING
}

*Template:  SYMBOL
{
    *Type:  DATATYPE
    *DataType:   FILTER_TYPE
    *ElementType:  XML_STRING
    *FilterTypeName: "SYMBOLNAME"
}
*Template:  DEFAULT_OPT
{
    *Name: "*DefaultOption"
    *Type:  ATTRIBUTE
    *ValueType:  SYMBOL
}

*Template:  PFEATURE 
{
    *Name:  "*PFeature"
    *Type: CONSTRUCT
    *Members:  (POPTION, NAME, DEFAULT_OPT)
    *Instances:  <ANY>
}
*Template:  ROOT2
{
    *Inherits: ROOT
    *Members:  (PFEATURE)
}