2024-09-21 03:18:36 发布
网友
我的目标是创建一个可以用来解析DBC文件的解析器。 文件格式的语法为given here
为了实现这一点,我选择了基于优秀JSON解析器教程的Lark解析器
我基于上面链接的文档创建了一个语法文件,并启动了独立的解析器生成器脚本。不幸的是,30分钟后它仍在运行,进程现在消耗了7.5 Gb的内存。这当然是不可接受的
我该怎么做才能成功地生成解析器代码
事实证明,该问题是由单个规则中的可选材料过多造成的。它可以通过将规则分解为更多的规则来修复,但每个规则都有更少的可选终端
例如:
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
事实证明,该问题是由单个规则中的可选材料过多造成的。它可以通过将规则分解为更多的规则来修复,但每个规则都有更少的可选终端
例如:
替换为:
See github issue
相关问题 更多 >
编程相关推荐