我目前的项目重点是从DSL(即高级规范)生成代码。更具体地说,开发人员编写高级规范,这些规范在Java和Android中被解析并生成代码。对于解析器,我使用了ANTLR语法,对于代码生成,我使用了StringTemplateFiles。
然而,开发人员在记事本中编写高级规范。因此,我无法提供语法高亮显示、着色和错误处理。为了提供这种支持,我考虑使用xText。
我考虑将xText集成如下:
需要您对以下问题提出建议:
(1) 如何提取用xtext编辑器编写的文件,并向ANTLR解析器提供输入?或者(2)我应该坚持使用xText并尝试集成ANTLR解析器和xText吗?(请建议-如何将xtext和ANTLR与一个简单的示例集成)或者(3)我应该只使用ANTLR和StringTemplateFiles,并尝试从中创建Eclipse插件吗?
还欢迎其他替代建议。
通过例子:
public class CustomGenerator extends AbstractHandler{
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
ISelection selection = HandlerUtil.getCurrentSelection(event);
//If your selection is an IFile
//Selection from the Project Explorer
if(selection instanceof IStructuredSelection){
IStructuredSelection structuredSelection = (IStructuredSelection) selection;
Object element = structuredSelection.getFirstElement();
if(element instanceof IFile){
IFile file = (IFile) element;
InputStream contentOfYouFile = ((IFile) element).getContents();
//make your job
}
}
return null;
}
}
Xtext基于Antlr。所以不需要集成Antlr和Xtext。我建议您在Eclipse上创建一个Xtext项目,并使用mwe2文件生成工件。然后在src-gen文件夹中,您可以找到从Xtext语法生成的Antlr语法。
如果要从Xtext语法生成代码,可以使用Xtend。它已经提供了你所需要的一切。见:https://eclipse.org/Xtext/documentation/207_template.html.
否则,如果您已经有一个antlr语法和一个生成器,则需要(重新)在Xtext中编写它。
您不需要集成XText和ANTLR;XText已经使用ANTLR进行实际解析。
前不久发布的 Eclipse 3.6—Helios 中包含 Xtext 1.0,一个语言开发框架。 Xtext是一种基于文本的领域特定语言(DSL)开发框架/工具。使用Xtext,你可以轻松的创建自己的编程语言和领域特定语言(DSL)。 对语法器而言,生成一个解析器或者基于语言的Eclipse编辑器(带有代码完成功能)是很有可能的。
我正在用Xtext创建一个DSL,用于生成图像。然而,由于我对Xtext完全不了解,我遇到了一些问题,希望您能给我一些指导。 最终,我希望用户使用以下编码结构: 我在Xtext中想到了以下内容(我没有对MWE2做任何更改): 我需要解决几个问题,但我想知道解决这些问题的最佳方法是什么。 如何为终端规则SIZE中使用的INT设置边界。 如何设置bgColor:或bgsize:只能使用一次? 如何设置
我不明白关键字的区别("-
我试图将一个Xtext项目升级到2.9版本,但我不知道如何在使用V.2.9时发布一个元模型(从Xtext语法推断)。在以前的版本中,可以使用必要的自定义代码创建ModelNamePostProcessor.ext文件,并确保MWE2文件包含必要的设置,如下所示: 但是,在使用XText2.9时,似乎根本无法使用扩展。我没有对.ext文件做任何更改,但是MWE2工作流看起来有点不同: 有人知道这里的
我目前正在研究Xtext,以创建一个可重用的DSL和一个构建在DSL之上的工件。简化后的项目布局如下: Projecta:包含基于XText的DSL、feature-project、updatesite等。 projectb:使用projectA中的工件生成代码。 projectc:使用从projectb生成的代码 使用Maven和Xtext构建projectA不是问题(网上已经有几个例子了),但
null 总之,我有一种感觉,我没有按预定的方式去做。那么,打算的方式是什么呢?我应该如何做语义突出显示?
我想调用另一个文件中声明的变量。文件的包含是使用交叉引用完成的。同时也宣告了世界的召唤。这是语法: 声明是规则。 从文档中我了解到我必须在中做些什么,但我不知道具体是什么 编辑
我有以下问题:我正在为GLSL着色语言创建一个编辑器。我希望在某些情况下允许关键字作为标识符,因为内置函数的名称可以用作标识符。 例如: 和不被识别为标识符。 完整语法供参考:http://paste2.org/YwDNkBYW 解决方案: 我创建了一个包含所有内置函数的源文件: 我使用保留的关键字来区分内置函数和本地创建的函数: ...在ScopeProvider中添加了以下内容: 在中,我在迭