我想将一个非常简单的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+
是否有至少在简单情况下自动进行此转换的工具?如果不是,是否有更完整的 list ,列出所需的修改内容?
最佳答案
由于Antlr语法缺少Xtext语法所需的信息,因此基本上不可能自动进行此转换。 Xtext中的规则名称将用于从中创建类。 Xtext中有一些分配,这些分配将成为这些类中的 getter 和 setter 。但是,不应将这些分配用于每个规则调用,因为Xtext中有一些特殊的模式可以减少生成的AST中的噪声。像这样的东西使得几乎不可能自动进行此转换。但是,通常直接将Antlr语法复制到Xtext编辑器中并手动解决问题。
关于antlr - 将简单的Antlr语法转换为Xtext,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8279790/