スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Haskell の Parsec で JavaScript パーサを書いた

前にも書いたようにJavaScriptによるJavaScriptのパーサを書いてたんだが、JavaScriptでは速度にも記述性にも限界を感じ、HaskellでParsecを使い書き直す事にした。Haskellには代数データ型もパターンマッチもあるので、パース後のASTを変換するのもHaskellの方がやりやすいはずだ。また、静的型付けなのでバグも減るだろう。

というわけでParsecで(自分にとって初めての、Parsecを使う実用目的の)パーサを書いた。JavaScriptでは改行が意味を持つので、改行を読んだかどうかをパーサの状態に持たせる事にした。そのためにはwhiteSpace相当のものを自分で実装する必要がある。その場合、Text.ParserCombinators.Parsec.Tokenを使うことはできないので、Text.ParserCombinators.Parsec.Tokenにあるような関数を自作した。

いくつかのファイル(数百行)をパースしてみたが、意外に時間が掛かる。プロファイルをとってみるとwhiteSpaceで時間が掛かっているようだ。JavaScriptで書いていた時も字句解析の部分に時間が掛かっていた気がする。

スポンサーサイト

テーマ : プログラミング | ジャンル : コンピュータ

コメントの投稿

非公開コメント

承認待ちコメント

このコメントは管理者の承認待ちです
プロフィール

minoki

Author:minoki
好きなプログラミング言語:
Haskell,Lua
GitHubアカウント
Twitter

最新記事
月別アーカイブ
カテゴリ
検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。