Markdown 使用Antlr4分析标记文件中的列表格式
我正在尝试用Antlr4解析标记文本。为了方便起见,我先解析Markdown 使用Antlr4分析标记文件中的列表格式,markdown,antlr4,Markdown,Antlr4,我正在尝试用Antlr4解析标记文本。为了方便起见,我先解析列表视图。 我发现了一个关于它的网页。 该网页中的语法对我来说似乎没问题,我将其更改为符合Antlr4格式,如下所示: grammar MarkDown; listItem : ORDERED inline NEWLINE | UNORDERED inline NEWLINE ; inline : (~ NEWLINE)+ ; ORDERED : DIGIT+ '.' (' '
列表
视图。
我发现了一个关于它的网页。
该网页中的语法对我来说似乎没问题,我将其更改为符合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:谢谢您的回复。你能直接给我一个修好它的建议吗?看看我是否能理解。