首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xText和ANTLR

xText和ANTLR
EN

Stack Overflow用户
提问于 2015-11-08 13:22:46
回答 3查看 2.3K关注 0票数 1

我目前的项目重点是从DSL (即高级规范)生成代码。更具体地说,开发人员编写高级规范,这些规范在Java和Android中被解析和生成代码。对于解析器,我使用了ANTLR语法,对于代码生成,我使用了StringTemplateFiles。

然而,开发人员在记事本中编写高级规范.因此,我无法提供语法突出显示、着色和错误处理。为了提供这种支持,我正在考虑使用xText。

我正在考虑按以下方式集成xText:

  • 开发人员将把高级规范写入xtext提供的编辑器支持(基本上,我将编写xtext语法并生成编辑器支持)。在这里,Xtext编辑器将处理语法着色、语法突出显示和错误处理。
  • 我将把所有这些规范作为.txt输入,然后ANTLR解析这些文件。生成Java和Android代码。

需要您就下列问题提出建议:

(1)如何提取文件,用xtext编辑器编写,并向ANTLR解析器提供输入?或者(2)我应该坚持使用xtext,并尝试集成ANTLR解析器和xText吗?(善意地建议--如何将xtext和ANTLR集成到一个简单的示例中)或者(3)我应该只使用ANTLR和StringTemplateFiles并尝试用它们创建Eclipse插件吗?

其他替代建议也受到欢迎。

EN

回答 3

Stack Overflow用户

发布于 2015-11-08 17:59:22

对于实际的解析,您不需要集成XText和ANTLR;XText already uses ANTLR

票数 0
EN

Stack Overflow用户

发布于 2015-11-09 07:25:47

Xtext是基于Antlr的。所以不需要集成Antlr和Xtext。我建议您在Eclipse上创建Xtext项目,并使用mwe2文件生成工件。然后,在src文件夹中,您可以找到从Xtext语法生成的Antlr语法。

如果您想要从Xtext语法生成代码,可以使用Xtext。它已经提供了你所需要的一切。见:template.html

否则,如果您已经有了一个antlr语法和一个生成器,您将需要(重新)用Xtext编写它。

票数 0
EN

Stack Overflow用户

发布于 2015-11-13 07:33:13

举个例子:

代码语言:javascript
复制
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;
}

}

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

https://stackoverflow.com/questions/33594436

复制
相关文章

相似问题

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