RustのLALRPOPにおける参照型トークンを利用したカスタム字句解析器の実装

カスタム字句解析器を実装する際、生成されるトークンに元の入力文字列への参照を持たせる設計が有効な場合があります。変数名や識別子などの任意の記号を扱う構文木を構築する際、文字列データを複製せず参照を保持することで、メモリアロケーションの削減と解析速度の向上が実現できます。 抽象構文木の定義 まず、識別子を含む計算機の抽象構文木を定義します。数値リ ...

7月22日 01:24 投稿

LALRPOP における型推論と構文糖衣

LALRPOP では、アクションコードを省略可能な構文糖衣を提供しており、これによりパーサ定義をより簡潔に記述できる。特に、他の非終端記号から値をそのまま受け取るようなケースでは、明示的なアクションコードを書く必要がない。 例えば、次のような Term の定義があるとする: pub Term: i32 = { <n:Num> => n, "(" <t:Term> ")" => t, }; ...

6月24日 00:49 投稿