はじめに Rustと言語処理系の勉強のため、簡易的なマークダウンパーサーをスクラッチで実装し、生成したWASMをNuxt3+Viteの環境で動かしてみました。 言語処理系の概要 マークダウンパーサを実装する前に、一般的な言語処理系について考えてみます。 コンパイラやインタプリタに代表される処理系の構成は以下のようになっています。 字句解析 テキストを字句の列(トークン)に分解すること 字句解析を行うプログラムを 字句解析器(lexerまたはtokenizer) と呼びます。 構文解析 トークン列を 抽象構文木(abstract syntax treeまたはAST) に変換する。抽象構文木とは、言語の構文を解釈し、データ構造を取り出した(抽象化した)木構造のこと たとえばDOMツリーは、HTMLの構文を解釈(構文解析)し、要素(タグ)を木構造で表現したものです。 How browsers w