繁体   English   中英

如何优化 Lark 解析器的语法

[英]How to optimze grammar for Lark parser

我的目标是创建一个可用于解析 DBC 文件的解析器。 文件格式的语法在此处给出

为了实现这一点,我选择了基于优秀的 JSON 解析器教程的 Lark 解析器。

我根据上面的链接文档创建了一个语法文件并启动了独立的解析器生成器脚本。 不幸的是,它在 30 分钟后仍在运行,该过程现在消耗 7.5 Gb 的 memory。 这当然是不可接受的。

我该怎么做才能成功生成解析器代码?

事实证明,该问题是由单个规则中的可选终端过多引起的。 它可以通过将规则分解为更多来修复,但每个都具有较少的可选终端。

例如。:

start : [ "a" ["b"]  ["b1"]  ["b2"]  ["b3"] ["c"]  ["c1"]  ["c2"]  ["c3"] ["d"]  ["d1"]  ["d2"]  ["d3"] ["e"]  ["e1"]  ["e2"]  ["e3"] ["f"]  ["f1"]  ["f2"]  ["f3"]]

取而代之:

start : [ "a" b c d e f ]
b: ["b"]  ["b1"]  ["b2"]  ["b3"]
c: ["c"]  ["c1"]  ["c2"]  ["c3"]
d: ["d"] ["d1"]  ["d2"]  ["d3"] 
e:  ["e"]  ["e1"]  ["e2"]  ["e3"]
f:  ["f"]  ["f1"]  ["f2"]  ["f3"]

见 github 问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM