我想解析一种简单的语言,它基本上在一行文本的前面有几个特殊的字形或字符。如果它没有这些,那么文本行就被当作数据。
例如:
+ hfflsdjf dslfhsldfh sdlfkh sdlfkhs
! sdlfkhsdl sdfb sldflsdfh sldkfh sd
dsf sldfbbsf sdfjbs kfjbsd kjbsdf 第一行和第二行有特殊的含义,因为+和!在最前面,行的其余部分是该指令的数据。但第三行只是数据。
我如何在Instaparse中表达这一点呢?
基本上,我想说的是,任何其他规则都不匹配的字符串应该由数据终端匹配。
发布于 2018-11-17 23:39:07
(def as-and-bs
(insta/parser
"<text> = (rubbish | op ) *
<op> = plus | bang
<line> = #'[^\n]*(\n|$)'
rubbish = line
plus = '+' line
bang = '!' line"))
(as-and-bs "+ abc\n! def\ncu ")
;=> ([:plus "+" " abc\n"] [:bang "!" " def\n"] [:rubbish "cu "])https://stackoverflow.com/questions/53344656
复制相似问题