Parse(Lambda)

 最近因為用 purescript parsec (parser combinator) 寫的 lambda script parser 真的太慢了

才一千多行的 code 就要 parse 30 to 60 sec

決定改用手寫的 top down parser


重新複習了一下 grammar 的部份

溫習了 associativity (left/right) 還有 grammar 的轉換 參考 wiki

left recursion 的 elimination (direct/indirect)

了解了 top down 如何去寫 left/right associativity
以及如何用 while loop 或是 recursion 去寫 precedence

可以在 class 指定 precedence level, 然後 while 下去  像是這篇 python code
或是直接把 precedence level 表達成 recursion 的層級 像是這篇 stack overflow

其實好像都是要會的 但就不太熟
LL LR 的 parsing table 其實也忘得差不多了 有時間再複習吧 (可能練習用 yacc 實作一次)

現在先把 parser 弄出來再說

留言

這個網誌中的熱門文章

[Antergos] disable touchpad

[Editor] 入坑 Atom => Markdown 轉 PDF