3 Stimmen

Wie erzeugt man AST mit Xtext und Xtend?

Ich habe also das Standardbeispiel für eine xtext-Grammatik.

grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals

generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"

Model:
    greetings+=Greeting*;

Greeting:
    'Hello' name=ID '!';

Ich würde gerne den abstrakten Syntaxbaum sehen - insbesondere die entsprechende xtend Datei, die wie folgt aussieht

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
    }
}

Zum Ausdrucken einer Textversion des AST, wenn doGenerate aufgerufen wird. Ich habe an diesem für etwa zwei Tage hacken und ich bin eindeutig etwas grundlegendes fehlt - jemand Mitleid mit mir haben? Was sollte in der doGenerate Funktion stehen?

0voto

Zoltán Ujhelyi Punkte 13648

Die Parameter der doGenerate-Funktionen sind die EMF-basierte Ressource (im Grunde eine Modelldarstellung der Textdatei - mit anderen Worten, ein AST mit aufgelösten Links) und eine Hilfsklasse zum Schreiben in das Dateisystem.

Die Aufgabe des Generators ist es, den generierten Quellcode zu erstellen (normalerweise in Java, aber das ist nicht erforderlich). Ein Beispiel dafür finden Sie im Blogbeitrag http://www.rcp-vision.com/?p=1573 - am Ende wird ein Beispielcodegenerator verwendet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X