dsl - XText w/ XBase - Initialize generated variable -


i'm using xtext xbase grammar.
in every generated java class need initialize class variable in model inferer. variable isn't defined in model, makes no difference.
can generate variable via function

element.tofield("issomethingset", newtyperef("boolean")) 

, can't initialize it. i'm sure should use tofield function additional parameter called initializer, of type procedure1 don't know how use it.

here changed example taken xtext documentation. grammar:

grammar org.xtext.example.mydsl.mydsl org.eclipse.xtext.xbase.xbase generate mydsl "http://www.xtext.org/example/mydsl/mydsl" domainmodel:   (elements += abstractelement)*;  abstractelement:    entity; entity:   'entity' name = id ('extends' supertype = jvmtypereference)?   '{'     (features += feature)*   '}'; feature:   name = id ':' type = jvmtypereference; 

modelinferrer.xtend

import com.google.inject.inject import org.eclipse.xtext.naming.iqualifiednameprovider import org.eclipse.xtext.xbase.jvmmodel.abstractmodelinferrer import org.eclipse.xtext.xbase.jvmmodel.ijvmdeclaredtypeacceptor import org.eclipse.xtext.xbase.jvmmodel.jvmtypesbuilder import org.xtext.example.mydsl.mydsl.entity  class mydsljvmmodelinferrer extends abstractmodelinferrer {      @inject extension jvmtypesbuilder      @inject extension iqualifiednameprovider      def dispatch void infer(entity element, ijvmdeclaredtypeacceptor acceptor,         boolean isprelinkingphase) {         acceptor.accept(element.toclass(element.fullyqualifiedname)).initializelater     [             documentation = element.documentation             members += element.tofield("issomethingset", newtyperef("boolean"))             (feature : element.features) {                 members += feature.tofield(feature.name, feature.type)                 members += feature.tosetter(feature.name, feature.type)                 members += feature.togetter(feature.name, feature.type)             }         ]     } } 

the procedure encapsulates code required configure field, e.g. set visibility, static flags, documentation or field initializer:

element.tofield("issomethingset", newtyperef("boolean")) [   initializer = '''false''' // xtext 2.5 or   initializer = [ append('false') ] // prior 2.5 ] 

Comments

Popular posts from this blog

c# - How to get the current UAC mode -

postgresql - Lazarus + Postgres: incomplete startup packet -