[英]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"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.