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

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

6月24日 00:49 投稿

カスタムレキサーの作成

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 投稿