Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » TMF (Xtext) » Abstract Syntax Tree from Xtext (first post, please be gentle)(AST)
Abstract Syntax Tree from Xtext (first post, please be gentle) [message #785166] Sat, 28 January 2012 15:53 Go to next message
joseph reddington is currently offline joseph reddingtonFriend
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 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14669
Registered: July 2009
Senior Member
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

Re: Abstract Syntax Tree from Xtext (first post, please be gentle) [message #785304 is a reply to message #785177] Sat, 28 January 2012 20:30 Go to previous messageGo to next message
joseph reddington is currently offline joseph reddingtonFriend
Messages: 16
Registered: January 2012
Junior Member
That's brilliant - such a great (and quick) response, I've got a slight problem though... when I use an editor for mydsl, I get the following error "An internal error occurred during: "XtextReconcilerJob".
java.lang.IllegalStateException: Unresolved proxy www.xtext.org/example/mydsl/MyDsl#//Greeting. Make sure the EPackage has been registered." is there something obvious that I'm doing wrong? J
Re: Abstract Syntax Tree from Xtext (first post, please be gentle) [message #785305 is a reply to message #785304] Sat, 28 January 2012 20:30 Go to previous messageGo to next message
joseph reddington is currently offline joseph reddingtonFriend
Messages: 16
Registered: January 2012
Junior Member
(I took the http part out of the proxy because the forum wouldn't allow the posting of links to me yet Smile
Re: Abstract Syntax Tree from Xtext (first post, please be gentle) [message #785343 is a reply to message #785305] Sat, 28 January 2012 22:02 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14669
Registered: July 2009
Senior Member
Hi,

did you change the grammar? to the code generator? to other classes?

~Christian


Twitter : @chrdietrich
Blog : https://www.dietrich-it.de

[Updated on: Sat, 28 January 2012 22:16]

Report message to a moderator

Re: Abstract Syntax Tree from Xtext (first post, please be gentle) [message #785354 is a reply to message #785343] Sat, 28 January 2012 22:24 Go to previous message
joseph reddington is currently offline joseph reddingtonFriend
Messages: 16
Registered: January 2012
Junior Member
To give as much of my methodogy as possible - I started an entirely new xtext project, which the standard 'Model' DSL, generated- Oh.... hang on, if I regenerate the MWE2 workflow, the problem goes away. Thank you so much for all your help Smile
Previous Topic:Issue saving Xtext resource from Eclipse plug-ins
Next Topic:Parse and assign comments at end of line
Goto Forum:
  


Current Time: Fri Apr 26 21:40:24 GMT 2024

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

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

Back to the top