我想将一个非常简单的 Antlr 语法转换为 Xtext,所以没有语法谓词,也没有Xtext 不提供的 Antlr 的花哨功能。考虑这个语法
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+
- 请记住,规则和终端名称必须是唯一的,即使不区分大小写。
- 或者,将规则名称的第一个字母大写以遵循 Java 约定。
至少对于简单的情况,是否有一种工具可以自动进行这种转换?如果没有,是否有更完整的此类所需修改的清单?