Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » TMF (Xtext) » backtracking problem while generate grammar
backtracking problem while generate grammar [message #730963] Thu, 29 September 2011 15:50 Go to next message
samir  is currently offline samir Friend
Messages: 27
Registered: September 2011
Junior Member
hi

I am a new xtext user, I describe my problem,

this is my grammar:

Term : Var | Abs | App;
Var : name = ID;
Abs : '\\' name = ID'.'(termList +=Term)+ ;
App : '(' t1 = Term t2 =Term ')';


when I try to generate xtext artifacts eclipse gives me this error

error(211): ../example.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:317:33: [fatal] rule rule__Abs__Group__3__Impl has non-LL(*) decision due to recursive rule invocations reachable from alts 1,2. Resolve by left-factoring or using syntactic predicates or using backtrack=true option.
warning(200): ../example.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:317:33: Decision can match input such as "RULE_ID" using multiple alternatives: 1, 2
As a result, alternative(s) 2 were disabled for that input
warning(200): ../example.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:317:33: Decision can match input such as "'\\'" using multiple alternatives: 1, 2
As a result, alternative(s) 2 were disabled for that input




but i activate the backtricking

// The antlr parser generator fragment.
fragment = parser.antlr.XtextAntlrGeneratorFragment {
options = {
backtrack = true
}
}
Re: backtracking problem while generate grammar [message #730980 is a reply to message #730963] Thu, 29 September 2011 16:17 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14665
Registered: July 2009
Senior Member
Hi,

you could enable backtracking in parser.antlr.XtextAntlrUiGeneratorFragment too.
but it would be better to left-factor the grammar or using semantic predicates.

Term : Var | Abs | App;
Var : name = ID;
Abs : '\\' name = ID'.'(=>termList +=Term)+ ;
App : '(' t1 = Term t2 =Term ')';


~Christian


Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Re: backtracking problem while generate grammar [message #731180 is a reply to message #730980] Fri, 30 September 2011 08:04 Go to previous messageGo to next message
samir  is currently offline samir Friend
Messages: 27
Registered: September 2011
Junior Member
thanx christian
Re: backtracking problem while generate grammar [message #731205 is a reply to message #731180] Fri, 30 September 2011 09:08 Go to previous messageGo to next message
samir  is currently offline samir Friend
Messages: 27
Registered: September 2011
Junior Member
hello christian
but if I want to activate the backtrack, what I need to change, not enough to activate it from GenerateMyDsl.mwe2
Re: backtracking problem while generate grammar [message #731208 is a reply to message #731205] Fri, 30 September 2011 09:12 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14665
Registered: July 2009
Senior Member
Hi,

dont understand your question. i wrote in my prev post what to do:

...
fragment = parser.antlr.XtextAntlrGeneratorFragment {
              options = {
                  backtrack = true
              }
            }
...
fragment = parser.antlr.XtextAntlrUiGeneratorFragment {
            	options = {
                  backtrack = true
              }
            }
...


~Christian


Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Re: backtracking problem while generate grammar [message #731971 is a reply to message #731208] Mon, 03 October 2011 15:10 Go to previous messageGo to next message
samir  is currently offline samir Friend
Messages: 27
Registered: September 2011
Junior Member
hello guys
sorry if I write again, now I solved the problem of left recursion, but when I run the application and create a new file.mydsl, the program gives me this exception

grammer:

Term : Var | Abs | App;
Var : name = ID;
Abs : '\\('param = ID ').'body = ID;
App : '('t1 = Term ')' t2 = Term;


0 [Worker-4] ERROR org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory - java.lang.NullPointerException
47 [Worker-4] ERROR org.eclipse.xtext.internal.ResourceServiceProviderDescriptor - null ExtensionFactory: org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory
org.eclipse.core.runtime.CoreException: null ExtensionFactory: org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory
at org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory.create(AbstractGuiceAwareExecutableExtensionFactory.java:57)
at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:262)
at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:51)
at org.eclipse.xtext.internal.ResourceServiceProviderDescriptor.get(ResourceServiceProviderDescriptor.java:40)
at org.eclipse.xtext.internal.ResourceServiceProviderDescriptor.get(ResourceServiceProviderDescriptor.java:1)
at org.eclipse.xtext.resource.impl.ResourceServiceProviderRegistryImpl$InternalData.getServiceProvider(ResourceServiceProviderRegistryImpl.java:40)
at org.eclipse.xtext.resource.impl.ResourceServiceProviderRegistryImpl.getResourceServiceProvider(ResourceServiceProviderRegistryImpl.java:75)
at org.eclipse.xtext.resource.impl.ResourceServiceProviderRegistryImpl.getResourceServiceProvider(ResourceServiceProviderRegistryImpl.java:91)
at org.eclipse.xtext.ui.resource.UriValidator.isValid(UriValidator.java:27)
at org.eclipse.xtext.ui.resource.Storage2UriMapperImpl.isValidUri(Storage2UriMapperImpl.java:99)
at org.eclipse.xtext.ui.resource.Storage2UriMapperImpl.getUri(Storage2UriMapperImpl.java:83)
at org.eclipse.xtext.builder.impl.ToBeBuiltComputer.getUri(ToBeBuiltComputer.java:154)
at org.eclipse.xtext.builder.impl.ToBeBuiltComputer.updateStorage(ToBeBuiltComputer.java:121)
at org.eclipse.xtext.builder.impl.XtextBuilder$2.visit(XtextBuilder.java:131)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:68)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:79)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:79)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:48)
at org.eclipse.xtext.builder.impl.XtextBuilder.incrementalBuild(XtextBuilder.java:137)
at org.eclipse.xtext.builder.impl.XtextBuilder.build(XtextBuilder.java:91)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:627)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: java.lang.NullPointerException
at org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory.create(AbstractGuiceAwareExecutableExtensionFactory.java:50)
... 31 more

[Updated on: Mon, 03 October 2011 15:19]

Report message to a moderator

Re: backtracking problem while generate grammar [message #731974 is a reply to message #731971] Mon, 03 October 2011 15:20 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14665
Registered: July 2009
Senior Member
Hi,

looks very strange.
have you more stracktrace? did you do any changes to the generated code? why does getInjector return null in your case? did you try to debug into the code? are there any other error messages in the console?

~Christian


Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Re: backtracking problem while generate grammar [message #731984 is a reply to message #731974] Mon, 03 October 2011 15:37 Go to previous message
samir  is currently offline samir Friend
Messages: 27
Registered: September 2011
Junior Member
hello
Now I tried to run again, it does not launch any exception, I do not understand, though I did not touch the generated code.
Previous Topic:Using the DSL and MWE in a non Java Project
Next Topic:Embedding a second DSL
Goto Forum:
  


Current Time: Fri Apr 19 22:40:10 GMT 2024

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

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

Back to the top