Markdown 使用Antlr4分析标记文件中的列表格式

Markdown 使用Antlr4分析标记文件中的列表格式,markdown,antlr4,Markdown,Antlr4,我正在尝试用Antlr4解析标记文本。为了方便起见,我先解析列表视图。 我发现了一个关于它的网页。 该网页中的语法对我来说似乎没问题,我将其更改为符合Antlr4格式,如下所示: grammar MarkDown; listItem : ORDERED inline NEWLINE | UNORDERED inline NEWLINE ; inline : (~ NEWLINE)+ ; ORDERED : DIGIT+ '.' (' '

我正在尝试用Antlr4解析标记文本。为了方便起见,我先解析
列表
视图。 我发现了一个关于它的网页。

该网页中的语法对我来说似乎没问题,我将其更改为符合Antlr4格式,如下所示:

grammar MarkDown;

listItem    : ORDERED inline NEWLINE
        | UNORDERED inline NEWLINE
        ;
inline      : (~ NEWLINE)+ ;
ORDERED     : DIGIT+ '.' (' ' | '\t')+ ;
UNORDERED   : ('*' | '-' | '+') (' ' | '\t')+ ;
DIGIT       : [0-9]+ ;

NEWLINE     : '\r'? '\n' ;
示例文件

1. abc
2. kljjkj
3. tree4545
但它不起作用,下面是错误消息

line 1:3 token recognition error at: 'a'
line 1:4 token recognition error at: 'b'
line 1:5 token recognition error at: 'c'
line 1:6 extraneous input '\r\n' expecting {ORDERED, UNORDERED, DIGIT}
line 2:3 token recognition error at: 'k'
line 2:4 token recognition error at: 'l'
line 2:5 token recognition error at: 'j'
line 2:6 token recognition error at: 'j'
line 2:7 token recognition error at: 'k'
line 2:8 token recognition error at: 'j'
(listItem 1.  (inline \r\n 2. ) \r\n)

你能帮我解决这个问题吗?

在解析器规则中,
~
否定标记,而不是字符。因此,
inline
将尝试匹配除
NEWLINE
之外的任何标记,该标记是
有序的
无序的
数字

ANTLR抱怨输入
“abc”
“kljjkj”
。。。因为没有lexer规则匹配这些字符


尽管以下问答是关于ANTLR3的,但同样的规则也适用于ANTLR4:

谢谢您的回复。你能直接给我一个修好它的建议吗?看看我是否能理解。