Antlr4: иерархическое дерево разбора

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

grammar TemplateParser;

tags
    : (BEGINTAG | ENDTAG)*
    ;

BEGINTAG : ('{{Begin'.*? '}}')+ ('{{'.*? '}}')*
    ;

ENDTAG : '{{End' .*? '}}'
    ;

WS  :   (' '|'\t'|'\r'|'\n')+ -> skip
    ;

и когда я пытаюсь разобрать следующее

{{BeginLoop}}{{Properties}} 
    {{BeginTemplate}}{{Equals}}{{ReturnType}}{{Number}}
        Outer Template goes here
        {{BeginTemplate}}{{Equals}}{{ReturnType}}{{String}}
            Inner template goes here
        {{EndTemplate}}
    {{EndTemplate}}
{{EndLoop}}

{{BeginTemplate}}{{Equals}}{{ReturnType}}{{Number}}
    Template 2 goes here.
{{EndTemplate}}

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

введите описание изображения здесь

Когда я пытаюсь сделать то же самое с грамматикой json из Github, я получаю иерархическое дерево.

введите описание изображения здесь

0 ответов

Другие вопросы по тегам