Можно ли разобрать эту грамматику с помощью antlr4? - PullRequest
0 голосов
/ 16 декабря 2018

Учитывая набор S из n правил, мне нужно правило antlr4, чтобы соответствовать любому из S подмножеств в любом порядке:

  • каждое правило S может появляться ноль или один раз
  • любая перестановка подмножества в порядке

Пример :

Учитывая S = {a, b}, ( n = 2) правило должно соответствовать

  • a
  • b
  • ab
  • ba

, хотя, например, "abb" не должно совпадать.

Возможно проанализировать такое выражениес грамматикой antlr4?Мой реальный набор имеет n = 6, поэтому перечисление всех комбинаций в грамматике, кажется, не является возможным выбором!

1 Ответ

0 голосов
/ 16 декабря 2018

Нет, вы не можете определить комбинации и / или перестановки правил в ANTLR (или любом другом генераторе синтаксического анализатора, который я знаю).

Вы можете использовать предикаты для достижения вашей цели , но это означает добавление целевого кода в вашу грамматику: я бы просто проанализировал любой a или b и проверил структуру после анализа (в пользовательском посетителе / ​​слушателе).

...