首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Clojure Instaparse匹配任何内容

使用Clojure Instaparse匹配任何内容
EN

Stack Overflow用户
提问于 2018-11-17 04:05:44
回答 1查看 152关注 0票数 0

我想解析一种简单的语言,它基本上在一行文本的前面有几个特殊的字形或字符。如果它没有这些,那么文本行就被当作数据。

例如:

代码语言:javascript
复制
+ hfflsdjf dslfhsldfh sdlfkh sdlfkhs 
! sdlfkhsdl sdfb sldflsdfh sldkfh sd
dsf sldfbbsf sdfjbs kfjbsd kjbsdf 

第一行和第二行有特殊的含义,因为+和!在最前面,行的其余部分是该指令的数据。但第三行只是数据。

我如何在Instaparse中表达这一点呢?

基本上,我想说的是,任何其他规则都不匹配的字符串应该由数据终端匹配。

EN

回答 1

Stack Overflow用户

发布于 2018-11-17 23:39:07

代码语言:javascript
复制
(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 "])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53344656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档