我想将一个非常简单的Antlr语法转换为Xtext,所以没有syntactic predicates,没有fancy features of Antlr not provided by Xtext。考虑这个语法
grammar simple; // Antlr3
foo: number+;
number: NUMBER;
NUMBER: '0'..'9'+;
及其Xtext对应
grammar Simple; // Xtext
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
generate Simple "http://www.example.org/Simple"
Foo: dummy=Number+;
Number: NUMBER_TOKEN;
terminal NUMBER_TOKEN: '0'..'9'+;
Xtext在幕后使用Antlr,但这两种格式并不完全相同。我必须修改一些烦人的(并且部分可理解的)事情,包括:
terminal
关键字import "http://www.eclipse.org/emf/2002/Ecore" as ecore
以使终端正常工作foo: dummy=number+
是否有工具可以自动进行此转换,至少对于简单的情况?如果没有,是否有更完整的此类必要修改清单?
答案 0 :(得分:3)
由于Antlr语法缺少Xtext语法中所需的信息,因此基本上不可能自动执行此转换。 Xtext中的规则名称将用于从中创建类。 Xtext中的分配将成为这些类中的getter和setter。但是,这些分配不应该用于每个规则调用,因为Xtext中有特殊模式可以减少生成的AST中的噪声。这样的东西使得几乎不可能自动进行这种转换。但是,通常可以直接将Antlr语法复制到Xtext编辑器中并手动修复问题。