Я написал небольшую часть комбинированной грамматики ANTLR4:
grammar TestCombined;
NL
: [\r\n]
;
SUBHEADLINE
: '##' .*? '##'
;
HEADLINE
: '#' .*? '#'
;
LEAD
: '###' .*? '###'
;
SUBHEADING
: '####' .*? '####'
;
TEXT
: .+?
;
/* ---- */
dnpMD
: subheadline headline lead bodyElements*
;
subheadline
: SUBHEADLINE NL NL
;
headline
: HEADLINE NL NL
;
lead
: LEAD NL NL
;
subheading
: SUBHEADING
;
bodyElements
: TEXT
| subheading
;
Первые три типа заголовков работают очень хорошо. Благодаря другому вопросу (и ответу) это стало для меня яснее, чем раньше.
Но у меня проблемы с пониманием, почему правило/токен TEXT не сопоставляется правильно. Я новичок в ANTLR4 и думаю, что упускаю что-то очень важное, что мешает мне понять основную проблему.
Это пример ввода:
## Test ##
# Test123 #
### Test1234 ###
#### Another Test ####
this is not getting recognized.
Что мне не хватает? Неужели невозможно написать эти вещи в/с ANTLR4? Текст может содержать больше элементов синтаксиса, таких как курсив и тому подобное.