2016-09-17 16 views
0

Я создаю простую DSL для проверки сообщений FIX с использованием ANTLRv4. В настоящее время моя грамматика поддерживает диалект 1 ниже (в основном, операторы сравнения), и я ищу дополнительную диалект 2.Определение диалектов для DSL с использованием ANTLR

Можно ли определить грамматики для диалектов, которые наследуют и/или расширяются от родительской грамматики?

Например, другие разработчики, использующие мою грамматику, должны иметь возможность определять свои диалекты и выражать правила, которые подчиняются диалекту, без необходимости писать весь DSL с нуля.

Правила в диалекте 1:

tag 9 > 0 tag 59 = "A"

Те же правила в диалекте 2:

tag 9 must be greater than 0 tag 59 must be equal to "A"

+0

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

+0

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

ответ

0

Я не думаю, что вы можете определить грамматику диалектах с помощью прямой Antlr в.

Конечно, чтобы рассмотреть возможность внесения каких-либо изменений в вашу грамматику, они должны иметь четкое представление о том, что находится в текущей спецификации грамматики. Поэтому вы должны разрешить посмотреть текущую грамматику в каком-то окне, прежде чем они внесут изменения.

Вы можете просто позволить им просмотреть его в окне редактора и отредактировать его напрямую.

+0

Существующая грамматика доступна для редактирования. Я изучаю, если есть какой-либо способ расширить существующую грамматику, так что другие разработчики, использующие существующую грамматику, не будут затронуты. Я имею в виду расширение, а не модификацию здесь. – Mahesh

+0

Если вы хотите, чтобы «другие пользователи» не пострадали, вам необходимо сохранить производную копию для каждого пользователя. Это не зависит от того, как это происходит. –

1

Antlr4 включает в себя механизм под названием import s, позволяющий разбить грамматику на логические и многоразовые куски. Когда вы импортируете одну грамматику в другую, она ведет себя как объектно-ориентированное наследование, что может быть полезно для поддержания ряда диалектов DSL.

См. this page Основы. Подробности в книге Definitive Antlr4 Reference.

+0

, который выглядит интересным, попробуем это и обновим. – Mahesh

 Смежные вопросы

  • Нет связанных вопросов^_^