在Xtend验证器中使用已解析的模型

时间:2014-03-28 02:30:03

标签: xtext emf xtend dsl-tools

我想知道如何访问我程序的解析模型。我有一个用xtend编写的验证检查,它接受一个规则 A 作为参数。但是我想搜索整个解析的树,并确保对 A 的特定实例的任何其他引用遵循某些规范。

@Check
    def checkActionBelongsToAssociatedRole(ActionDsc act){
        var pRole = act.parentRole
        var rs = new ResourceSetImpl()
//DONT KNOW IF THIS IS RIGHT
        var resource = rs.getResource(URI.createURI("./model/generated/Protocol.ecore"), true)
        for(r:resource.allContents.toIterable.filter(typeof(RoleDec))){
            if(r.name == pRole.name){
                //DO SOMETHING
            }
        }
    }

在我拥有的生成器文件中,我已经将Resource对象作为参数。

override void doGenerate(Resource resource, IFileSystemAccess fsa) {
        //Generate code
    }

我如何为验证器做同样的事情。提前谢谢!

1 个答案:

答案 0 :(得分:1)

act.eResource()允许访问包含操作的资源。