以下のプログラムは Tiny C のパーサをParsec ライブラリを使って書きかけたものである。 Tiny Cの構文を適切な代数的データ型として定義し、Tiny Cのパーサーを完成させよ。 (Tiny CのBNFはこのページの最後に示す。) 補足: パーサプリミティブの説明 tinyCStyleとlexerは、 C言語のトークンの定義(実際にはJava言語のものを流用)に合わせて、後述の whiteSpace〜reservedOpを用意するための補助的定義である。 whiteSpace〜reservedOpは、C言語のトークンをパースするための パーサ関数である。また、runLexはパーサをテストするための関数である。 これらは組み合わせて、例えば次のように使用する。 Parser> runLex (do {parseId; parseAddSub; parseId; return ()