人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Perl で トークナイズを行ってくれるライブラリ。もしくは、トークナイズをサポートしてくれるライブラリ。
とそのドキュメントがないでしょうか?
※正規表現を使わないでという意味です。正規表現で書くにはあまりにも複雑なBNF構文を展開したいというのが元の要望です。

●質問者: 心は萌え
●カテゴリ:コンピュータ
✍キーワード:BNF Perl サポート ドキュメント ライブラリ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kmon
●35ポイント

ライブラリではないので外しているかもしれませんが、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など)が必要です。

◎質問者からの返答

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

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


2 ● tera-p
●35ポイント ベストアンサー

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)文法の範囲なら,ですが).

◎質問者からの返答

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ