2012-11-25 5 views
0

은 내가 xText 프로젝트에서이 메타 모델을 작성했습니다 : 나는 어떤 문제는 Ecore의 메타 모델을 생성하지만 때를했다 haven't 당신이 볼xText를 사용하여 이전 메타 모델을 기반으로 모델을 작성할 때 어떻게이 오류를 해결할 수 있습니까?

Screen: 
"Screen name: " name = ID 
    "Level: " level = STRING 
    "End: " end = INT 
    background = [Background] 
    character = [Character] 
    (enemies+=Enemy)* 
    (elements+=Element)* 

Background: 
"Background{ 
    Id: " id = ID 
    "Image: " image = [Image] 
"}"; 
... 

모든 메타 클래스 (배경, 캐릭터, 적, 등) I

Screen name: s1 
Level: "easy" 
End: 1000 

나는 오류가 발생 : RULE_ID를 기대 일치하지 않는 입력을 나는 Ctrl 키 + 스페이스로 작성하는 유지할 수 없다 (Ctrl 키 + 스페이스를 사용)과 같은 특정 모델을 정의하려고합니다. 이 아이디어가 효과가없는 이유는 무엇입니까? 고맙습니다.

답변

0

문법 스 니펫의 문제점은 상호 참조 및 포함 참조에 대한 오해입니다. 샘플 파일의 어딘가에 배경을 정의하지 않았지만 문법은 배경에 대한 참조를 기대합니다. 당신이이 라인을 따라 뭔가 정의를 변경하면 작동합니다 :

Screen: 
"Screen name: " name = ID 
    "Level: " level = STRING 
    "End: " end = INT 
    background = Background 
    character = Character 
    (enemies+=Enemy)* 
    (elements+=Element)* 

Background: 
"Background{ 
    Id: " id = ID 
    "Image: " image = [Image] 
"}"; 

는 그러나, 나는 당신이 실제로 해당 화면에 대한 상호 참조 대신 포함 된 배경을 사용하고 싶었 기대합니다. 따라서 화면에서 사용하기 전에 전체 문법을 제공하거나 배경을 정의해야합니다.