2017-01-13 70 views
0

使用新的Xtext 2.11版本,我可以設置XtextResource的EntryRule。 但是,我無法弄清楚如何通過預期的ParserRule。在Xtext中訪問ParserRules 2.11

考慮以下代碼

Injector injector = new MydslStandaloneSetup().createInjectorAndDoEMFRegistration(); 
    XtextResourceSet resourceSet = injector.getInstance(XtextResourceSet.class); 
    Resource resource = resourceSet.createResource(URI.createURI("dummy:/test.dsl")); 
    XtextResource xres = (XtextResource) resource; 
    xres.setEntryPoint(???); 

它必須以某種方式類似於像這個testcase,但似乎是幕後一些魔術。

回答

1

Xtext創建一個Java類YourDslGrammarAccess以提供對該語法的編程訪問。因此類似以下內容應該工作

MyDslGrammarAccess ga = injector.getInstance(MyDslGrammarAccess.class); 
xres.setEntryPoint(ga.getGreetingRule()); 
+0

謝謝。是否也可以在ParseHelper中指定此入口點? –

+0

編號請隨時提交github.com/eclipse/xtext-core中的增強請求。你可能簡單地繼承parsehelper並相應地將其作爲解決方法進行調整 –