Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » TMF (Xtext) » [Xtext] Parsing terminals as ecore::EDouble
[Xtext] Parsing terminals as ecore::EDouble [message #57564] Mon, 13 July 2009 13:36 Go to next message
Eclipse UserFriend
Hi

I've a problem parsing values as ecore::EDouble.

Here is my little grammar:

grammar org.xtext.example.MyDsl with org.eclipse.xtext.common.Terminals

generate myDsl "http://www.xtext.org/example/MyDsl"

import "http://www.eclipse.org/emf/2002/Ecore" as ecore


Model :
'Model' '{'
(elements+=Type)*
'}';

Type:
dvalue=Float;

terminal Float returns ecore::EDouble : INT ('.' INT)?;

Starting the appropriate generated Editor Plugin and entering

Model {
12
}

Causes a claas cast exception when entering a number between Model{ and }:

org.eclipse.xtext.parser.ParseException: java.lang.ClassCastException:
java.lang.String cannot be cast to java.lang.Double
at org.xtext.example.parser.antlr.MyDslParser.parse(MyDslParser .java:37)
at
org.eclipse.xtext.parser.antlr.AbstractAntlrParser.parse(Abs tractAntlrParser.java:51)
at
org.eclipse.xtext.parser.antlr.AbstractAntlrParser.doParse(A bstractAntlrParser.java:34)
at
org.eclipse.xtext.parser.antlr.AbstractAntlrParser.doParse(A bstractAntlrParser.java:1)
at org.eclipse.xtext.parser.AbstractParser.parse(AbstractParser .java:27)
at org.eclipse.xtext.parser.SwitchingParser.parse(SwitchingPars er.java:49)
at org.eclipse.xtext.resource.XtextResource.doLoad(XtextResourc e.java:150)
at
org.eclipse.xtext.linking.lazy.LazyLinkingResource.doLoad(La zyLinkingResource.java:41)
at org.eclipse.xtext.resource.XtextResource.reparse(XtextResour ce.java:83)
at
org.eclipse.xtext.ui.core.editor.reconciler.XtextReconcilerU nitOfWork.process(XtextReconcilerUnitOfWork.java:58)
at
org.eclipse.xtext.ui.core.editor.reconciler.XtextReconcilerU nitOfWork.process(XtextReconcilerUnitOfWork.java:1)
at org.eclipse.xtext.concurrent.IUnitOfWork$Void.exec(IUnitOfWo rk.java:36)
at
org.eclipse.xtext.concurrent.IStateAccess$AbstractImpl.modif y(IStateAccess.java:57)
at
org.eclipse.xtext.ui.core.editor.model.XtextDocument.modify( XtextDocument.java:138)
at
org.eclipse.xtext.ui.core.editor.reconciler.XtextDocumentRec oncileStrategy.reconcile(XtextDocumentReconcileStrategy.java :27)
at
org.eclipse.xtext.ui.core.editor.reconciler.XtextReconciler. run(XtextReconciler.java:190)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: org.eclipse.emf.common.util.WrappedException:
java.lang.ClassCastException: java.lang.String cannot be cast to
java.lang.Double
at
org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser.p arse(AbstractInternalAntlrParser.java:329)
at org.xtext.example.parser.antlr.MyDslParser.parse(MyDslParser .java:34)
... 16 more
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast
to java.lang.Double
at org.xtext.example.myDsl.impl.TypeImpl.eSet(TypeImpl.java:125 )
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSet(BasicEObjec tImpl.java:1073)
at
org.eclipse.xtext.parser.DefaultEcoreElementFactory.set(Defa ultEcoreElementFactory.java:61)
at
org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser.s et(AbstractInternalAntlrParser.java:156)
at
org.xtext.example.parser.antlr.internal.InternalMyDslParser. ruleType(InternalMyDslParser.java:263)
at
org.xtext.example.parser.antlr.internal.InternalMyDslParser. ruleModel(InternalMyDslParser.java:149)
at
org.xtext.example.parser.antlr.internal.InternalMyDslParser. entryRuleModel(InternalMyDslParser.java:84)
at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser.p arse(AbstractInternalAntlrParser.java:322)
... 17 more


Has anyone an idea whats wrong?

Thanks in advance, Helko
Re: [Xtext] Parsing terminals as ecore::EDouble [message #57590 is a reply to message #57564] Mon, 13 July 2009 13:50 Go to previous messageGo to next message
Eclipse UserFriend
You must probaly use the ValueConverterService to convert the String- to
Double-Value

Look at your RuntimeModule and override the following method there :

public Class<? extends IValueConverterService>
bindIValueConverterService() {
return MyDslValueConverter.class;
}
Re: [Xtext] Parsing terminals as ecore::EDouble [message #57615 is a reply to message #57590] Mon, 13 July 2009 14:17 Go to previous message
Eclipse UserFriend
Ahhhh

super. I've forgotten that.

Now it works.

regards, Helko
Previous Topic:Grammar reuse
Next Topic:[Xtext] ZUnassigned Rule Call not Allowed
Goto Forum:
  


Current Time: Wed Jul 17 15:07:03 GMT 2024

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

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

Back to the top