IGenerator根本没有打过电话

时间:2015-03-10 10:04:42

标签: dsl xtext

我有一个非常奇怪的问题。我试图从我的dsl实现代码生成器,但Generator类根本没有被调用。

首选项页面中的运行时实例中的编译器已激活,也会自动构建。我还尝试清理运行时工作区并创建新项目,但没有成功。在调试模式下,该方法根本不会被调用。

代码中的绑定由生成的Abstract*RuntimeModule完成。知道问题是什么吗?我使用Xtext 2.7.2

2 个答案:

答案 0 :(得分:2)

项目需要 org.eclipse.xtext.ui.shared.xtextNatureorg.eclipse.xtext.ui.shared.xtextBuilder。 (查看项目上的右键单击配置菜单)您必须自动启用构建,模型文件应该没有错误。

尝试以下步骤

  • 使用向导
  • 创建一个新的Xtext项目
  • 生成Hello World语言
  • 在预生成的MyDslGenerator.xtend
  • 中启用代码
  • 启动运行时Eclipse应用程序
  • 创建新的常规 - >项目
  • 在该项目中创建一个新文件“test.mydsl”(如果要求自然,请询问是)
  • 填写一些内容并保存

您可以尝试在org.eclipse.xtext.builder.BuilderParticipant.handleChangedContents(Delta, IBuildContext, EclipseResourceFileSystemAccess2)org.eclipse.xtext.builder.impl.XtextBuilder.doBuild(ToBeBuilt, IProgressMonitor, BuildType)

中进行调试

答案 1 :(得分:1)

对Google员工而言,这是OP问题的简单解决方案:

正如OP在对Christian Dietrich的回答的最终评论中提到的那样,在生成代码时,文件扩展名似乎区分大小。

我发现这令人困惑,因为在创建识别DSL语法的文件时,不是区分大小写。

我正在使用XText 2.10.0