2017-01-13 8 views
0

新しいXtext 2.11のバージョンでは、XtextResourceのEntryRuleを設定できました。 しかし、私は期待されたParserRuleを渡す方法を理解することができません。Xtext 2.11でアクセスするParserRules

このコード

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でこのEntryPointを指定することも可能ですか? –

+0

いいえ、github.com/eclipse/xtext-coreの拡張要求をお寄せください。あなたは単純にparsehelperをサブクラス化し、それに応じて回避策として適応させることができます –