Как сгенерировать AST, используя Xtext и Xtend? - PullRequest
3 голосов
/ 20 января 2012

Итак, у меня есть пример грамматики xtext по умолчанию.

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 '!';

Я хотел бы просмотреть абстрактное синтаксическое дерево - в частности, мне нужен соответствующий xtend файл, который выглядит как

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

Для распечатки текстовой версии AST всякий раз, когда вызывается doGenerate. Я взломал это около двух дней, и я явно упускаю что-то фундаментальное - кто-то пожалел меня? Что будет в функции doGenerate?

1 Ответ

0 голосов
/ 20 января 2012

Параметры функций doGenerate - это ресурс на основе EMF (в основном модельное представление текстового файла - другими словами, AST с разрешенными ссылками) и вспомогательный класс для записи в файловую систему.

Задача генератора - создать сгенерированный исходный код (обычно Java, но это не обязательно).Для примера, смотрите сообщение в блоге http://www.rcp -vision.com /? P = 1573 - в конце используется пример генератора кода.

...