Я хочу преобразовать очень простую грамматику Antlr в Xtext, поэтому нет синтаксических предикатов , нет причудливых функций Antlr, не предоставляемых 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+
- Имейте в виду, что имена правил и терминалов должны быть уникальными, даже без учета регистра.
- Опционально, используйте первую букву имени правила, чтобы следовать соглашению Java.
Существует ли инструмент для автоматического преобразования, по крайней мере, для простых случаев? Если нет, есть ли более полный контрольный список таких необходимых изменений?