首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xtext元素访问

Xtext元素访问
EN

Stack Overflow用户
提问于 2014-08-20 19:39:29
回答 1查看 322关注 0票数 0

我用Xtext写过:

代码语言:javascript
复制
grammar org.xtext.example.dsl.Dsl with org.eclipse.xtext.common.Terminals

generate dsl "http://www.xtext.org/example/dsl/Dsl"

Dsl :
    (elements += Type)*
;

Type:
    System
;

System:
    'The system' name = ID 'consists of the following:
;

现在,我运行编辑器并输入系统名称。如何访问Eclipse文件中的系统名称?

EN

回答 1

Stack Overflow用户

发布于 2014-08-25 17:56:49

这就是解决方案。

org.example.somthing.generator包的src文件夹中编写以下代码,类为Something.xtend (.xtend)

这是用于代码生成的,它是由xtext生成的。您将发现doGenerate(资源资源,IFileSystemAccess fsa)方法在该方法中编写以下代码。

类DomainmodelGenerator实现了IGenerator { @Inject extension IQualifiedNameProvider

覆盖无效doGenerate(资源资源,IFileSystemAccess fsa) { for(e: resource.allContents.toIterable.filter(DSL)) {

fsa.generateFile("abcd.txt",e.compile) }

定义编译(DSL% d)‘’«d.System.name»‘

}

现在您必须编写主类来调用上面类的方法。

这是代码。

公共类Main {

代码语言:javascript
复制
@Inject
private Provider<ResourceSet> resourceSetProvider;

@Inject
private IResourceValidator validator;

@Inject
private IGenerator generator;

@Inject
private JavaIoFileSystemAccess fileAccess;

public static void main(String[] args) {
    Injector injector = new DomainmodelStandaloneSetupGenerated()
            .createInjectorAndDoEMFRegistration();
    Main main = injector.getInstance(Main.class);
    main.runGenerator("sample.dmodel");
}

protected void runGenerator(String string) {
    // load the resource
    ResourceSet set = resourceSetProvider.get();
    Resource resource = set.getResource(URI.createURI(string), true);

    List<Issue> list = validator.validate(resource, CheckMode.ALL,
            CancelIndicator.NullImpl);
    if (!list.isEmpty()) {
        for (Issue issue : list) {
            System.err.println(issue);
        }
        return;
    }

    // configure and start the generator
    fileAccess.setOutputPath("output/");
    generator.doGenerate(resource, fileAccess);

    System.out.println("Code generation finished.");
}

}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25403744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档