Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XText寄存器全局变量_Java_Eclipse Emf_Xtext_Xtend_Xbase - Fatal编程技术网

Java XText寄存器全局变量

Java XText寄存器全局变量,java,eclipse-emf,xtext,xtend,xbase,Java,Eclipse Emf,Xtext,Xtend,Xbase,我想在的帮助下为构建工具支持。Jape基本上是一种模式语言,而不是注释;您可以声明遇到这些注释时要执行的操作。问题是这些操作可以用java编写。在与jdt斗争了一段时间后,我无法使它在部分解析内容上工作。所以我放弃了,并决定使用xbase支持和XBlockExpression 问题是有些变量可以在操作中使用-例如,有一个变量bindings,它允许您绑定,然后从模式中获取注释。所以我的问题是如何在xblock范围内注册这些变量。在阅读了3个小时的文档之后,我仍然没有什么进展 这是我的问题的基本语

我想在的帮助下为构建工具支持。Jape基本上是一种模式语言,而不是注释;您可以声明遇到这些注释时要执行的操作。问题是这些操作可以用java编写。在与jdt斗争了一段时间后,我无法使它在部分解析内容上工作。所以我放弃了,并决定使用xbase支持和XBlockExpression

问题是有些变量可以在操作中使用-例如,有一个变量bindings,它允许您绑定,然后从模式中获取注释。所以我的问题是如何在xblock范围内注册这些变量。在阅读了3个小时的文档之后,我仍然没有什么进展

这是我的问题的基本语法

grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.xbase.Xbase

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

Model:
    greetings=Greeting;


Greeting:
    block=XBlockExpression;
我想解析包含以下内容的文件:

{
    val testAS = bindings.get("test") as AnnotationSet
}
我开始插入自己的作用域提供程序,但这对我没有多大帮助。以下是提供程序的实现:

package org.xtext.example.mydsl;
导入java.util.List;
公共类MyScopeProvider扩展XbaseScopeProvider{
XbaseFactory工厂=新的XbaseFactoryImpl();
@凌驾
public IScope getScope(EOObject上下文,EReference引用){
//System.err.println(上下文);
//系统错误打印项次(参考);
列表描述=Lists.newArrayList();
XVariableDeclaration variableDeclaration=工厂
.createXVariableDeclaration();
variableDeclaration.setName(“绑定”);
IValidateObjectDescription variableDescription=createLocalVarDescription(variableDeclaration);
System.err.println(variableDescription);
IScope scope=super.getScope(上下文,引用);
System.err.println(variableDeclaration);
返回新的JvmFeatureScope(范围,“测试”,描述);
}
}

任何帮助都将不胜感激

您应该尝试为您的语言实现JvmModelInferrer,在该语言中添加隐式可用的变量作为推断类型中的字段或操作参数。那就行了。该方法在上的7个语言示例中得到了很好的说明