Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[xtext-dev] Getting xtext to play along with a custom ANTLR 4 lexer.

Hello,

A while ago I posted a question on stackoverflow asking how to embed C++ code in a xtext (2.9.1) DSL [1]. Ultimately we went with a custom ANTLR 4 (4.5.1) lexer making heavy use of lexing modes. While the lexer works as intended, it does depend on an ANTLR 4 jar, which breaks generating the xtext grammar artifacts:

0    [main] ERROR mf.mwe2.launch.runtime.Mwe2Launcher  - EOF_TOKEN
java.lang.NoSuchFieldError: EOF_TOKEN
	at org.eclipse.xtext.parser.antlr.Lexer.nextToken(Lexer.java:59)
	at org.antlr.runtime.BufferedTokenStream.fetch(BufferedTokenStream.java:143)
	at org.antlr.runtime.BufferedTokenStream.sync(BufferedTokenStream.java:137)
	at org.antlr.runtime.BufferedTokenStream.fill(BufferedTokenStream.java:286)
	at org.antlr.runtime.BufferedTokenStream.toString(BufferedTokenStream.java:251)
	at org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser.parse(AbstractInternalAntlrParser.java:534)
	at org.eclipse.xtext.parser.antlr.AbstractAntlrParser.doParse(AbstractAntlrParser.java:102)
	at org.eclipse.xtext.parser.antlr.AbstractAntlrParser.parse(AbstractAntlrParser.java:84)
	at org.eclipse.xtext.parser.antlr.AbstractAntlrParser.doParse(AbstractAntlrParser.java:62)
	at org.eclipse.xtext.parser.AbstractParser.parse(AbstractParser.java:33)
	at org.eclipse.xtext.resource.XtextResource.doLoad(XtextResource.java:170)
	at org.eclipse.xtext.linking.lazy.LazyLinkingResource.doLoad(LazyLinkingResource.java:100)
	at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1518)
	at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1297)
	at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:259)
	at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:274)
	at org.eclipse.xtext.resource.XtextResourceSet.getResource(XtextResourceSet.java:265)
	at org.eclipse.xtext.resource.SynchronizedXtextResourceSet.getResource(SynchronizedXtextResourceSet.java:25)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:57)
	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)

Removing that jar from the plug-in runtime classpath makes generating the grammar possible but then we have to add it back in when launching the plug-in.

I’m not very familiar with java development so I’m at a loss here. Is there a way to make xtext ignore that jar when generating artifacts? What is the proper/idiomatic way of handling this problem?

Thank you!

[1] — http://stackoverflow.com/questions/35806402/how-to-embed-c-code-in-a-xtext-dsl

Back to the top