Возможно, это дублированный вопрос, но я не могу найти вопрос, который хочу прочитать, поэтому я написал здесь.
Я новичок ie из Antlr, и я пытаюсь использовать Antlr4 для сделать абстрактное синтаксическое дерево с шаблоном посетителя в Scala.
Однако я не могу придумать, как собрать результаты нескольких правил, как показано ниже, в один список.
foo: (rule0 | rule1)*
rule0: ...
rule1: ...
Я знаю есть способ получить каждый список (то есть список rule0
с и список rule1
с). Однако этот способ, вероятно, нарушает порядок появления (я хочу сохранить порядок). Способ, подобный rules=(rule0 | rule1)*
, также недопустим, поэтому я не могу писать, как показано ниже
ctx.rules().asScala.map(...).toArray`
Мой вопрос заключается в том, как объединить в список несколько результатов правил, сохраняя порядок появления в шаблоне посетителя.