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