我有一個父語法:的Xtext與規則ovewrite和語法inheretance
grammar org.spr.mydsl.MySuperDsl with org.eclipse.xtext.common.Terminals
generate mySuperDsl "http://www.spr.org/mydsl/MySuperDsl"
SuperModel:
greetings+=Greeting*;
Greeting:
'Hello' name=ID '!';
和孩子語法:
grammar org.lwr.MyLowerDsl with org.spr.mydsl.MySuperDsl
generate myLowerDsl "http://www.lwr.org/MyLowerDsl"
LowerModel:
lower_greetings=LowerGreeting
other_gretting=OtherGreeting
super_greetings=Greeting
refname=[CommonGreeting];
LowerGreeting:
'Lower Hello' name=ID '!';
OtherGreeting:
'Other Hello' name=ID '!';
CommonGreeting:
LowerGreeting|OtherGreeting;
和兩個語法的工作。當規則
CommonGreeting:
LowerGreeting|Greeting|OtherGreeting;
被用來代替規則給出錯誤和執行mw工作流程期間。錯誤是Cannot add supertype 'CommonGreeting' to sealed type 'Greeting'. (ErrorCode: CannotCreateTypeInSealedMetamodel)
。
我需要做些什麼來擺脫錯誤?
LowerGreeting | OtherGreeting現在也可以在語法MySuperDsl使用時,可以將這些規則僅限於語法MyLowerDsl創建擴展? – Johan
你是什麼意思?作爲交叉參考?您必須在scooeprovider內部過濾 –
是作爲交叉參考。 – Johan