Преобразование простой грамматики Antlr в Xtext

Я хочу преобразовать очень простую грамматику 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 за кулисами, но эти два формата не совсем одинаковы. Есть довольно много раздражающих (и частично понятных) вещей, которые мне нужно изменить, в том числе:

  • Префиксные терминалы с терминал ключевое слово
  • Include import "http: //www.eclipse .org / emf / 2002 / Ecore "как ecore , чтобы терминалы работали
  • Добавьте функцию к правилу верхнего уровня, например foo: dummy = number +
  • Имейте в виду, что имена правил и терминалов должны быть уникальными, даже без учета регистра.
  • При желании можно использовать первую букву в именах правил с заглавной буквы в соответствии с соглашением Java.

Есть ли инструмент для автоматического преобразования хотя бы в простых случаях? Если нет, существует ли более полный контрольный список таких необходимых изменений?

10
задан Community 23 May 2017 в 12:29
поделиться