Abstract Syntax Tree from Xtext (first post, please be gentle) [message #785166] |
Sat, 28 January 2012 15:53 |
joseph reddington Messages: 16 Registered: January 2012 |
Junior Member |
|
|
So I have the default example of a xtext grammar.
grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals
generate myDsl "url removed due to forum rules."
Model:
greetings+=Greeting*;
Greeting:
'Hello' name=ID '!';
I'd like to view the abstract syntax tree - in particular I'd like the corresponding xtend file, which looks like
package org.xtext.example.mydsl.generator
import org.eclipse.emf.ecore.resource.Resource
import org.eclipse.xtext.generator.IGenerator
import org.eclipse.xtext.generator.IFileSystemAccess
class MyDslGenerator implements IGenerator {
override void doGenerate(Resource resource, IFileSystemAccess fsa) {
//TODO implement me
}
}
To printout a textual version of the AST whenever doGenerate is called. That's all. Just the tree. I've been hacking at this for about two days and I'm clearly missing something fundamental. I've been through the book, googled with all my heart, asked at stackoverflow and googled some more - someone take pity on me? What would go in the doGenerate Function?
[Updated on: Sat, 28 January 2012 15:56] Report message to a moderator
|
|
|
Re: Abstract Syntax Tree from Xtext (first post, please be gentle) [message #785177 is a reply to message #785166] |
Sat, 28 January 2012 16:11 |
|
Hi,
do you want to do this generic or language specific.
a very very simple language specific version would look like
class MyDslGenerator implements IGenerator {
override void doGenerate(Resource resource, IFileSystemAccess fsa) {
if (resource.contents.size > 0) {
val model = resource.contents.get(0) as Model
fsa.generateFile("ast.txt", model.gen)
}
}
def gen(Model m) {
'''
Model:
«FOR g : m.greetings»
«g.gen»
«ENDFOR»
'''
}
def gen(Greeting g) {
'''
Greeting: «g.name»
'''
}
}
~Christian
Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
[Updated on: Sat, 28 January 2012 16:27] Report message to a moderator
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03299 seconds