Внешнее использование OutputModelFactory, @ModelElement и т. д. при генерации кода из ANTLR parseTree.

Я смотрю, как лучше всего использовать StringTemplate для генерации кода для компилятора, использующего ANTLR в качестве парсера. Я решил обратиться к источнику ANTLR для вдохновения о том, как использовать StringTemplate. Поскольку этот код является частью инструмента ANTLR, а не среды выполнения, считается ли он «честной игрой» для использования в моем собственном коде? (Я понимаю, что для этого потребуется использовать либо «полный» jar во время выполнения, либо как jar во время выполнения, так и jar с инструментами).

Или я должен считать это «запрещенным» и реализовывать собственное решение по образцу этого?


person Mike Cargal    schedule 23.01.2014    source источник


Ответы (2)


Если вы имеете в виду лицензию, инструмент ANTLR 4 использует ту же лицензию BSD из трех пунктов, что и среда выполнения ANTLR 4.

person Sam Harwell    schedule 23.01.2014
comment
Я был относительно уверен в проблемах лицензирования. Мой вопрос был больше о том, считаются ли классы из jar-файла инструмента (например, OutputModelWalker и атрибут @ModelElement) внутренним использованием только для инструмента ANTLR. Если я решу их использовать, буду ли я рисковать тем, что команда ANTLR может существенно изменить их в будущем таким образом, чтобы потенциально сломать мой код, который их использует? т.е. считаются ли они классами общественного потребления? - person Mike Cargal; 24.01.2014

Что ж, генератор кода довольно стабилен, поэтому вы можете предположить, что эти присоски останутся, но генератор кода является внутренним, поэтому он может измениться для вас.

person Terence Parr    schedule 23.01.2014
comment
Я мог бы быть немного плотным в различии. Мне нравится подход, принятый с OutputModelWalker и использующий атрибут ModelElement для определения правильного шаблона для вызова. Я легко вижу, что особенности OutputModelController и OutputModelFactory очень специфичны для создания исходного кода Java из грамматик ANTLR (и в любом случае не будут мне полезны именно по этой причине). Буду ли я в шатком положении, если буду использовать атрибуты OutputModelWalker и ModelElement для управления вызовом STringTemplate в моем собственном коде? Оба они кажутся (при беглом взгляде) довольно обобщенными и пригодными для повторного использования. - person Mike Cargal; 24.01.2014