kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

PEGEX: PEGEX: a PEG-based pattern matching library EXtended by back reference with regex-like notation in Scala

PEGEXとは、自分が現在開発中の、ScalaによるPEGをベースとしたパターンマッチングライブラリです。従来のPEGは、構文解析などの用途に主として使われることを想定しているからか、シンタックスが「重い」ため*1、簡単な文字列マッチングに使用するにはやや面倒という欠点がありました。PEGEXは正規表現ライクな「軽い」シンタックスを提供することで、PEGを正規表現のように文字列のマッチングにも簡単に利用できることを目標としています。

現在、PEGEXはまだプロトタイプが動作している程度なのですが、今日のScala Hack-a-thon #2でPEGEXのデモをした際に、ソースなどを公開しているのかという質問があったので、とりあえずプロトタイプ版のソース/バイナリを公開しておきます(pegex-0.0.1-alpha.zip)。1か月後くらいまでには、githubなどのpublicなリポジトリに移行しようかと思っています(現在は、非公開のsvnリポジトリにソースが置いてあるので)。Pegexの文法や使い方などに関するドキュメントはまだ全然書いて無いので、exampleディレクトリやPegexParser.scalaのソース読んで文法を読解してください。すいません。

*1:たとえば、文字列abまたはcdにマッチする正規表現はab|cdと書けますが、PEGでは"ab"/"cd"と書く必要があります