Skip to main content



      Home
Home » Modeling » TMF (Xtext) » Polymorphic Cross-Reference
Polymorphic Cross-Reference [message #1815236] Fri, 27 September 2019 13:46 Go to next message
Eclipse UserFriend
Hi Xtext community,

I did a quick search in the forum but did not find sth. related, neither does the documentation give some hints about my problem.
Thus, I created a new thread:

So, my problem is that I need to build a language were I have polymorphic cross-references, i.e. the referenced targets are of different types...

See a minimal example below:
grammar no.hvl.past.Vylang with org.eclipse.xtext.common.Terminals

generate mylang "x.y.z/past/Mylang"

Model:
	stuff+=Stuff*;
	
Stuff:
	Apple |
	Banana |
	Basket
;

Apple:
	'apple' name=ID
;

Banana:
	'banana' name=ID
;

Basket:
	'basket' name=ID '{'
	(inside+=[Apple] | inside+=[Banana])*
	'}'
;


Trying to generate the language fails with the following error message:

Quote:

0 [main] INFO text.xtext.generator.XtextGenerator - Initializing Xtext generator
11 [main] INFO lipse.emf.mwe.utils.StandaloneSetup - Adding generated EPackage 'org.eclipse.xtext.common.types.TypesPackage'
...
1172 [main] INFO text.xtext.generator.XtextGenerator - Generating x.y.z.Mylang
2065 [main] INFO nerator.ecore.EMFGeneratorFragment2 - Generating EMF model code
2104 [main] INFO clipse.emf.mwe.utils.GenModelHelper - Registered GenModel 'x.y.z/Mylang' from 'platform:/resource/x.y.z.mylang/model/generated/Mylang.genmodel'
warning(200): ../x.y.z.mylang/src-gen/x/y/z/parser/antlr/internal/InternalMylang.g:296:3: Decision can match input such as "RULE_ID" using multiple alternatives: 1, 2
As a result, alternative(s) 2 were disabled for that input
error(201): ../x.y.z.mylang/src-gen/x/y/z/parser/antlr/internal/InternalMylang.g:296:3: The following alternatives can never be matched: 2

3126 [main] INFO text.xtext.generator.XtextGenerator - Generating common infrastructure
3161 [main] ERROR mf.mwe2.launch.runtime.Mwe2Launcher - Problems running workflow x.y.z.GenerateMylang:
[ERROR]: GeneratorException: (Element: -UNKNOWN-; Reported by: XtextGenerator)
org.eclipse.xtext.util.RuntimeIOException: java.io.FileNotFoundException: /Users/.../workspaces/modeling/x.y.z.mylang/../x.y.z.mylang/src-gen/x/y/z/parser/antlr/internal/InternalMylangLexer.java (No such file or directory)
at org.eclipse.xtext.generator.JavaIoFileSystemAccess.readTextFile(JavaIoFileSystemAccess.java:263)
at org.eclipse.xtext.generator.AbstractFileSystemAccess2.readTextFile(AbstractFileSystemAccess2.java:45)
at org.eclipse.xtext.xtext.generator.parser.antlr.AbstractAntlrGeneratorFragment2.improveCodeQuality(AbstractAntlrGeneratorFragment2.java:222)
at org.eclipse.xtext.xtext.generator.parser.antlr.AbstractAntlrGeneratorFragment2.splitParserAndLexerIfEnabled(AbstractAntlrGeneratorFragment2.java:213)
at org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2.generateProductionGrammar(XtextAntlrGeneratorFragment2.java:194)
at org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2.doGenerate(XtextAntlrGeneratorFragment2.java:156)
at org.eclipse.xtext.xtext.generator.parser.antlr.AbstractAntlrGeneratorFragment2.generate(AbstractAntlrGeneratorFragment2.java:109)
at org.eclipse.xtext.xtext.generator.CompositeGeneratorFragment2.generate(CompositeGeneratorFragment2.java:50)
at org.eclipse.xtext.xtext.generator.XtextGenerator.invokeInternal(XtextGenerator.java:230)
at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:132)
at org.eclipse.emf.mwe.core.lib.Mwe2Bridge.invoke(Mwe2Bridge.java:34)
at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:212)
at org.eclipse.emf.mwe2.runtime.workflow.AbstractCompositeWorkflowComponent.invoke(AbstractCompositeWorkflowComponent.java:37)
at org.eclipse.emf.mwe2.runtime.workflow.Workflow.run(Workflow.java:20)
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:102)
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:62)
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:52)
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.run(Mwe2Launcher.java:78)
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.main(Mwe2Launcher.java:36)
Caused by: java.io.FileNotFoundException: /Users/.../workspaces/modeling/x.y.z.mylang/../x.y.z.mylang/src-gen/x/y/z/parser/antlr/internal/InternalMylangLexer.java (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at com.google.common.io.Files$FileByteSource.openStream(Files.java:130)
at com.google.common.io.Files$FileByteSource.read(Files.java:154)
at com.google.common.io.Files.toByteArray(Files.java:237)
at org.eclipse.xtext.generator.JavaIoFileSystemAccess.readTextFile(JavaIoFileSystemAccess.java:259)
... 18 more


However, the checker for the grammar editor does not report any errors...
It looks like that the underlying antlr has a problem with the alternatives?!

Can you help me with this problem? Or is it currently not possible to do such things in Xtext?

Many thanks in advance for your help!
Cheers,
Patrick
Re: Polymorphic Cross-Reference [message #1815423 is a reply to message #1815236] Wed, 02 October 2019 11:09 Go to previous message
Eclipse UserFriend
You can introduce a common supertype and use that

Fruit: Apple|Banana;

Simmered=[Fruit]
Previous Topic:DSL autocompletion to open custom Dialogs
Next Topic:how to customize the XtextBuilder
Goto Forum:
  


Current Time: Wed Mar 26 01:59:51 EDT 2025

Powered by FUDForum. Page generated in 0.24280 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top