如何优化Lark解析器的语法

2024-09-21 03:18:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目标是创建一个可以用来解析DBC文件的解析器。 文件格式的语法为given here

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

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

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


Tags: 文件文档脚本json解析器目标here进程
1条回答
网友
1楼 · 发布于 2024-09-21 03:18:36

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

例如:

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"]

See github issue

相关问题 更多 >

    热门问题