Flap: 融合字句解析を備えた決定論的パーサー
本論文では、字句解析(lexing)と構文解析(parsing)を融合させた決定論的パーサー「Flap」を提案する。従来の段階的な処理とは異なり、これらを統合することで解析の効率と正確性を向上させる。Flapは、特にプログラミング言語の処理において、より高速で信頼性の高い構文解析を実現する。
背景メモ
- 「Flap」は、字句解析(lexing)と構文解析(parsing)を融合させた「決定論的パーサー」を提案する論文。著者は大学院生のSomeyaと、コンパイラ研究者の大堀氏(東京科学大学)。
- 従来のパーサー(例:YaccやBisonで生成されるLALR(1)パーサー)は「字句解析→構文解析」の2段階。Flapはこれを1段階に統合し、曖昧さ(例:「if」が識別子かキーワードか)を構文情報を使って解決する。
- Rustのパーサーとして初めて、既存ツール(tree-sitter、LALRPOPなど)よりも「決定論的かつ高速」を主張。決定論的=常に同じ結果で、パースに失敗しない設計。
- 背景:Rustの構文は文脈依存(例:マクロや型推論のため)。Flapはそれでも動く一般性を目指す。
- 発表は実装(crate)として公開されており、言語ツール(IDE、フォーマッター)での応用が期待される。