使用新的Xtext 2.11版本,我可以设置XtextResource的EntryRule。 但是,我无法弄清楚如何传递预期的ParserRule。
考虑这段代码
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,但在幕后似乎有一些魔力。
答案 0 :(得分:1)
Xtext创建了一个Java类YourDslGrammarAccess
,以便以编程方式访问语法。因此,类似下面的内容应该起作用
MyDslGrammarAccess ga = injector.getInstance(MyDslGrammarAccess.class);
xres.setEntryPoint(ga.getGreetingRule());