Hello,
I started out with this grammar:
grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals
generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"
Model: {Model}
'greetings' '{'
greetings+=Greeting*
'}';
Greeting:
SimpleGreeting | GoodMorning | GoodEvening | CompoundGreeting;
CompoundGreeting:
'greet' name=ID '{'
lines+=CompoundGreetingMember*
'}'
;
CompoundGreetingMember:
RefGreeting | InlineGreeting
;
InlineGreeting:
GoodMorning | GoodEvening
;
RefGreeting:
'and' name=ID greet=[Greeting]
;
SimpleGreeting:
'Hello' name=ID '!';
GoodMorning:
'Good' 'morning' name=ID '!';
GoodEvening:
'Good' 'evening' name=ID '!';
It was OK for parsing the following:
// day HappyDay
greetings {
Hello X !
Good morning Y !
Good evening Z !
greet script {
Good morning A !
Good evening B !
and Thinking X
}
}
I then did the following change, adding the 'Day' rule used at the top of the model:
Model:
Day
'greetings' '{'
greetings+=Greeting*
'}';
Day:
'day' name=ID;
When launching Eclipse to test, I now:
- For the line 'and Thinking X' I have X underlined with red as a syntax error and the problems view reads "Couldn't resolve reference to greeting X"
- When commenting out the top line, I get the exception "Parsing in reconciler failed." (stack trace below)
- If I relaunch the Eclipse to test I get the exception "Model.greetings does not exist" (stack trace below) and the editor tab just has this message (no text area to actually edit the text
Now, (2) and (3) seem like there may be a problem in xtext itself. The stack trace does not involve any code I wrote. Does this seem like a bug I should report?
4719 [Worker-6] ERROR org.eclipse.xtext.ui.editor.reconciler.XtextDocumentReconcileStrategy - Parsing in reconciler failed.
java.lang.NullPointerException
at org.eclipse.xtext.resource.XtextResource.update(XtextResource.java:263)
at org.eclipse.xtext.ui.editor.reconciler.XtextDocumentReconcileStrategy.doReconcile(XtextDocumentReconcileStrategy.java:182)
at org.eclipse.xtext.ui.editor.reconciler.XtextDocumentReconcileStrategy.reconcile(XtextDocumentReconcileStrategy.java:90)
at org.eclipse.xtext.ui.editor.reconciler.XtextReconciler.doRun(XtextReconciler.java:450)
at org.eclipse.xtext.ui.editor.reconciler.XtextReconciler.access$3(XtextReconciler.java:430)
at org.eclipse.xtext.ui.editor.reconciler.XtextReconciler$1.process(XtextReconciler.java:364)
at org.eclipse.xtext.ui.editor.reconciler.XtextReconciler$1.process(XtextReconciler.java:1)
at org.eclipse.xtext.util.concurrent.IUnitOfWork$Void.exec(IUnitOfWork.java:37)
at org.eclipse.xtext.resource.OutdatedStateManager.exec(OutdatedStateManager.java:91)
at org.eclipse.xtext.ui.editor.model.XtextDocument$XtextDocumentLocker.modify(XtextDocument.java:433)
at org.eclipse.xtext.ui.editor.model.XtextDocument.internalModify(XtextDocument.java:166)
at org.eclipse.xtext.ui.editor.reconciler.XtextReconciler.run(XtextReconciler.java:361)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)
Caused by: java.lang.IllegalArgumentException: Model.greetings does not exist
at org.eclipse.xtext.parser.DefaultEcoreElementFactory.add(DefaultEcoreElementFactory.java:108)
at org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser.add(AbstractInternalAntlrParser.java:355)
at org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser.add(AbstractInternalAntlrParser.java:362)
at org.xtext.example.mydsl.parser.antlr.internal.InternalMyDslParser.ruleModel(InternalMyDslParser.java:194)
at org.xtext.example.mydsl.parser.antlr.internal.InternalMyDslParser.entryRuleModel(InternalMyDslParser.java:99)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser.parse(AbstractInternalAntlrParser.java:561)
... 20 more