У меня есть требование, когда я хочу расширить существующую грамматику A дополнениями, определенными в грамматике B, чтобы создать грамматику C.
Я уже пытался импортировать грамматику A в B, но при этом выбираются только определенные вещи, определенные в грамматике A. Я предполагаю, что неиспользуемое содержимое A в B пропускается при создании классов. Это имеет смысл, поскольку требуется не наследовать, а смешивать/объединять/объединять две грамматики.
Просто для понимания (исходная грамматика огромна), пример:
Файл : A.g4:
grammar A;
keywords
: X
| Y
| Z
;
X: 'X';
Y: 'Y';
Z: 'Z';
Файл : B.g4:
grammar B;
keywords
: A
| B
| C
;
A: 'A';
B: 'B';
C: 'C';
Файл : C.g4:
grammar C;
keywords
: X
| Y
| Z
| A
| B
| C
;
X: 'X';
Y: 'Y';
Z: 'Z';
A: 'A';
B: 'B';
C: 'C';
Примечание. У меня нет возможности управлять грамматикой А напрямую, но я хочу сохранить все функции грамматики А вместе с дополнительными правилами/ключевыми словами и т. д., определенными в грамматике Б, как показано выше.
Любая помощь будет высоко ценится. Спасибо.