Parsing Xtext grammar with Xtext -


i parse xtext grammar xtext. therefore took grammar github , adapted little bit. works fine except import of grammars , defining of reused grammars "with".

so when create xtext-file should parsed, e.g.:

grammar org.xtext.example.mydsl.expression org.eclipse.xtext.common.terminals  import "http://www.xtext.org/example/mydsl/mydsl" mydsl generate expression "http://www.xtext.org/example/mydsl/expression" 

i got following errors:

line 1: couldn't resolve reference grammar 'org.eclipse.xtext.common.terminals'. (even if change feature name importuri or importednamespace of root rule , use grammar defined in same workspace!)

line 3/4: couldn't resolve reference epackage 'http://www.xtext.org/example/mydsl/...'.

however, need complete grammar further work , includes reused grammar (such terminals, xbase or other grammar in workspace) because grammar contain rules reference rules reused one.

is there way resolve grammar? thought scoping failed in understanding how use in case.

btw, there way parse file extension .xtext? warning, 2 content parsers implementing same file extension , model parsed in normal xtext-manner. there way switch content parser?

you may follow dialog on https://www.eclipse.org/forums/index.php/t/1067192/ dicussion using fragments change worflow.

for programmatically parse (only parsing!!) xtext-files wrote lines of code:

public static void parsegrammar() {     string t = "grammar org.xtext.example.entity org.eclipse.xtext.common.terminals\n" +      "generate entity \"http://www.xtext.org/example/entity\"\n" +      "model:\n" +     "  (types+=type)*;\n" +      "type:\n" +     "  typedef | entity;\n" +      "typedef:\n" +     "  \"typedef\" name=id (\"mapsto\" mappedtype=javaid)?;\n" +      "javaid:\n" +      " name=id(\".\" id)*;\n" +      "entity:\n" +     "  \"entity\" name=id (\"extends\" superentity=[entity])?\n" +     "  \"{\"\n" +     "    (attributes+=attribute)*\n" +     "  \"}\";\n" +      "attribute:\n" +     "  type=[type] (many?=\"*\")? name=id;";      new org.eclipse.emf.mwe.utils.standalonesetup().setplatformuri("../");     injector injector = guice.createinjector(new xtextruntimemodule());      reader reader = new inputstreamreader(new stringinputstream(t));      iparser parser = injector.getinstance(iparser.class);     iparseresult result = parser.parse(reader);     boolean err = result.hassyntaxerrors();     eobject eroot = result.getrootastelement(); } 

like can see uses "... org.eclipse.xtext.common.terminals ...". did run without errors , produced ast.


Comments

Popular posts from this blog

angularjs - ADAL JS Angular- WebAPI add a new role claim to the token -

php - CakePHP HttpSockets send array of paramms -

node.js - Using Node without global install -