| 原作者 | ダーン・ライジェン、パオロ・マルティーニ、アントワーヌ・ラッター |
|---|---|
| 開発者 | ハーバート・ヴァレリオ・リーデル、デレク・エルキンス、アントワーヌ・ラター、ローマン・チェプリャカ、ライアン・スコット |
| 初回リリース | 2006年11月2日[1] |
| 安定版リリース | 3.1.17.0 / 2024年4月5日[2] |
| リポジトリ | github.com/haskell/パーセック |
| 書かれた | ハスケル |
| オペレーティング·システム | Linux、macOS、Windows |
| プラットフォーム | Haskell プラットフォーム |
| 利用可能 | 英語 |
| タイプ | パーサーコンビネータ、ライブラリ |
| ライセンス | BSD-2 条項 |
| Webサイト | hackage.haskell.org/package/parsec |
Parsecは、プログラミング言語Haskellで書かれたパーサーを書くためのライブラリです。[3]これは高階パーサーコンビネータに基づいており、複雑なパーサーを多くの小さなパーサーから作ることができます。[4]これは、Erlang、[5] Elixir、[6] OCaml、[7] Racket、[8] F#、[9] [10]や命令型プログラミング言語C#、[11] Javaなど、他の多くの言語で再実装されています。[12]
パーサコンビネータベースのプログラムは一般にパーサジェネレータベースのプログラムよりも遅いため、[要出典] Parsecは通常、小規模なドメイン固有言語に使用され、HappyはGlasgow Haskellコンパイラ(GHC)などのコンパイラに使用されます。[13]
Parsecから派生した他のHaskellパーサーコンビネータライブラリには、Megaparsec [14]やAttoparsec [15]などがあります。
ParsecはBSD-3条項ライセンスの下でリリースされたフリーソフトウェアです。 [16]
例
Parsec で記述されたパーサーは、特定の文字列を認識するような単純なパーサーから始まり、それらを組み合わせてより複雑な動作をするパーサーを構築します。たとえば、 はdigit数字を解析し、 はstring特定の文字列 ( など"hello") を解析します。
Parsec のようなパーサー コンビネータ ライブラリは、実数値に対してパーサーを実行するためのユーティリティ関数を提供します。文字列から 1 つの数字を認識するパーサーは、2 つの関数に分割できます。1 つはパーサーを作成する関数、もう 1 つはパーサーを実行するためにmainこれらのユーティリティ関数の 1 つ (parseこの場合は) を呼び出す関数です。
import Text.Parsec -- 一般的な解析ユーティリティ関数がありますimport Text.Parsec.Char -- 特定の基本コンビネータが含まれていますtype Parser = Stream s m Char => ParsecT s u m String
パーサー::パーサーパーサー=文字列"hello"
main :: IO () main = print ( parse parser "<test>" "hello world" ) -- 'Right "hello"' を出力します
Parserの型シグネチャを読みやすくするために、型を定義します。このプログラムを変更して、文字列または文字列 のparserいずれかを読み取るようにしたい場合は、型クラスによって提供される演算子 を使用して、2 つのパーサーを 1 つのパーサーに結合し、次のいずれかを試みます。"hello""goodbye"<|>Alternative
パーサー=文字列"hello" <|>文字列"goodbye"
参考文献
- ^ 「parsec 2.0」。Hackage 。2019年9月3日閲覧。
- ^ “リリース”. Github . 2024年9月22日閲覧。
- ^ 「Parsec on Haskell wiki」。Haskell Wiki 。 2017年5月29日閲覧。
- ^ Leijen, Daan; Meijer, Erik (2001 年 7 月)。「Parsec: 現実世界向けの直接スタイル モナディック パーサー コンビネータ」(PDF)。Microsoft Research。2014年11 月 22 日閲覧。
- ^ 「Parsec Erlang」。BitBucket 。 2014年11月23日閲覧。
- ^ 「Nimble Parsec」. Github . 2018年12月18日閲覧。
- ^ 「Parsec OCaml」(PDF) 。OCamlサマープロジェクト。2014年11月23日閲覧。
- ^ 「Megaparsack: 実用的なパーサーコンビネータ」。
- ^ 「XParsec by corsis」。XParsec . 2017年5月29日閲覧。
- ^ 「FParsec」. Quanttec . 2017年5月29日閲覧。
- ^ 「CSharp モナド」。Github。2014年12 月 10 日閲覧。
- ^ "JParsec". Github . 2016年10月14日閲覧。
- ^ 「The Glasgow Haskell Compiler (AOSA Vol. 2)」。オープンソースアプリケーションのアーキテクチャ。 2014年11月23日閲覧。
- ^ 「megaparsec: モナドパーサーコンビネータ」Hackage . 2018年9月10日閲覧。
- ^ 「attoparsec: バイト文字列とテキストの高速コンビネータ解析」Hackage . 2018年9月10日閲覧。
- ^ 「Parsec」. 2021年10月25日.
外部リンク
- Haskell wiki の Parsec
- Hackage の Parsec
- GitHubのパーセック
