我正在尝试在大小小于 700k 的 dimacs 文件上使用 instaparse,语法如下
<file>=<comment*> <problem?> clause+
comment=#'c.*'
problem=#'p\s+cnf\s+\d+\s+\d+\s*'
clause=literal* <'0'>
<literal>=#'[1-9]\d*'|#'-\d+'
像这样打电话
(def parser
(insta/parser (clojure.java.io/resource "dimacs.bnf") :auto-whitespace :standard))
...
(time (parser (slurp filename)))
大约需要一百秒。这比我希望的要慢三个数量级。有什么方法可以加快速度,有什么方法可以调整语法或我缺少的一些选项吗?