Perl で トークナイズを行ってくれるライブラリ。もしくは、トークナイズをサポートしてくれるライブラリ。

とそのドキュメントがないでしょうか?
※正規表現を使わないでという意味です。正規表現で書くにはあまりにも複雑なBNF構文を展開したいというのが元の要望です。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/04/18 12:58:07
  • 終了:2008/04/23 13:25:33

ベストアンサー

id:tera-p No.2

tera-p回答回数92ベストアンサー獲得回数212008/04/21 04:49:40

ポイント35pt

CPAN の以下のあたりを覗いてみるといろいろとあるようですが,

http://www.cpan.org/modules/by-category/11_String_Lang_Text_Proc...

以前(数年前ですが)ちょっと遊んでみた範囲では Parse::RecDescent というのがお手軽でした(はてな記法パーザのText::Hatena でも使われているみたいですね).

使い方ですが,下記の URL にあるコード例を見ると雰囲気がわかりやすいと思います.

http://d.hatena.ne.jp/nanra/20080131/1201761703

ただ,Perl であれば再帰降下パーザをスクラッチで書いてしまってもそんなに手間でないとは思います(LL(1)文法の範囲なら,ですが).

id:kokorohamoe

パーサを書くのはかまわないのですが・・・Perlレベルで遅めのレキサーを書くのを考えると正規表現でもと

おもわず思ってしまうので、なにか良いレキサーないかなぁと思っています。

ありがとうございました。

2008/04/21 10:16:26

その他の回答(1件)

id:kmon No.1

kmon回答回数27ベストアンサー獲得回数52008/04/19 08:05:32

ポイント35pt

ライブラリではないので外しているかもしれませんが、KMyaccはどうでしょう。

Yacc(やBison)と互換性があるパーサジェネレータで、C以外にJava, JavaScript,Perlのパーサプログラムを作成することが可能です。


KMYacc:

http://www005.upp.so-net.ne.jp/kmori/kmyacc/


KMYaccユーザガイド:

http://www005.upp.so-net.ne.jp/kmori/kmyacc/kmyacc.html


(注)KMYacc自身はC言語で書かれたプログラムなので、別途Cコンパイラ(GCCなど)が必要です。

id:kokorohamoe

ありがとうございます。欲しいのはどちらかというとlexの方だったのですが・・・。機能的には含まれているのでしょうか?

あとで詳しく読み込んでみます。

2008/04/19 18:11:23
id:tera-p No.2

tera-p回答回数92ベストアンサー獲得回数212008/04/21 04:49:40ここでベストアンサー

ポイント35pt

CPAN の以下のあたりを覗いてみるといろいろとあるようですが,

http://www.cpan.org/modules/by-category/11_String_Lang_Text_Proc...

以前(数年前ですが)ちょっと遊んでみた範囲では Parse::RecDescent というのがお手軽でした(はてな記法パーザのText::Hatena でも使われているみたいですね).

使い方ですが,下記の URL にあるコード例を見ると雰囲気がわかりやすいと思います.

http://d.hatena.ne.jp/nanra/20080131/1201761703

ただ,Perl であれば再帰降下パーザをスクラッチで書いてしまってもそんなに手間でないとは思います(LL(1)文法の範囲なら,ですが).

id:kokorohamoe

パーサを書くのはかまわないのですが・・・Perlレベルで遅めのレキサーを書くのを考えると正規表現でもと

おもわず思ってしまうので、なにか良いレキサーないかなぁと思っています。

ありがとうございました。

2008/04/21 10:16:26

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません