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