|
|
|
|
Re: Problems with code generator [message #1721123 is a reply to message #1721117] |
Sun, 24 January 2016 23:33 |
Parisa Moosavi Messages: 81 Registered: June 2015 |
Member |
|
|
Why don't you use this kind of expressions which use Xbase and JVM Model?
grammar org.xtext.example.forum1.Ex1 with org.eclipse.xtext.xbase.Xbase
...
Elemento:
VarD | FuncD;
FuncD:
ftype=JvmTypeReference name=ID "(" (params+=FullJvmFormalParameter ("," params+=FullJvmFormalParameter)*)? ")"
body=XBlockExpression;
VarD:
name=ValidID ':' type=JvmTypeReference;
and the dsl is something like this:
a: int
result: int
void sum (int a,int b){
val myStringValue = 'A final string value'
var myIntValue_i = 0
var myIntValue_j = 5
}
and infer method can be used as following:
def dispatch void infer(Model model, IJvmDeclaredTypeAcceptor acceptor, boolean isPreIndexingPhase) {
acceptor.accept(model.toClass("my.company.forum1.Ex1")) [
for (elem : model.elementos) {
switch elem {
VarD:{
val field = elem.toField(elem.name, elem.type)
members += field
members += elem.toGetter(elem.name, elem.type)
members += elem.toSetter(elem.name, elem.type)
}
FuncD : {
members += elem.toMethod(elem.name, elem.ftype ?: inferredType) [
for (p : elem.params) {
parameters += p.toParameter(p.name, p.parameterType)
}
body = elem.body
]
}
}
}
]
}
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03770 seconds