RustのLALRPOPにおける参照型トークンを利用したカスタム字句解析器の実装
カスタム字句解析器を実装する際、生成されるトークンに元の入力文字列への参照を持たせる設計が有効な場合があります。変数名や識別子などの任意の記号を扱う構文木を構築する際、文字列データを複製せず参照を保持することで、メモリアロケーションの削減と解析速度の向上が実現できます。
抽象構文木の定義
まず、識別子を含む計算機の抽象構文木を定義します。数値リ ...
7月22日 01:24 投稿
カスタムレキサーの作成
Whitespace言語のパースにおけるレキサー実装
Whitespace言語をパースする際、次のような文法構造を想定します:
pub Program = <Statement*>;
Statement: ast::Stmt = {
" " <StackOp>,
"\t" " " <MathOp>,
"\t" "\t" <HeapOp>,
"\n" <FlowCtrl>,
"\t" "\n" <Io>,
};
StackOp: ast::Stmt = {
" " <Nu ...
5月23日 21:29 投稿