|
Re: Grammar problem (newbie) [message #757607 is a reply to message #757605] |
Sun, 20 November 2011 10:38 |
|
Hi,
i guess you have to use a terminal rule for this (plus a valueconverter that gives you the int part of the whole stuff)
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
BidPriority: priorityLevel=PRIORITY;
terminal PRIORITY returns ecore::EInt: 'p' ('0'..'9')+;
public class MyDslRuntimeModule extends org.xtext.example.mydsl2.AbstractMyDslRuntimeModule {
@Override
public Class<? extends IValueConverterService> bindIValueConverterService() {
return MyDslValueConverterService.class;
}
}
public class MyDslValueConverterService extends DefaultTerminalConverters {
@ValueConverter(rule = "PRIORITY")
public IValueConverter<Integer> PRIORITY() {
return new IValueConverter<Integer>() {
@Override
public Integer toValue(String string, INode node)
throws ValueConverterException {
return Integer.valueOf(string.substring(1));
}
@Override
public String toString(Integer value)
throws ValueConverterException {
return "p" + value.toString();
}
};
}
}
if you want to use something like p1 at a place you would use and id
you have to introduce a datatype rule for this
Stuff: ID | PRIORITY;
...
stuff=Stuff
~Christian
Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03141 seconds