カラクリスタ

『輝かしい青春』なんて失かったヒトのブログ

Parse::RecDescentの文法の中でモジュールを使う

概要: Parse::RecDescentの文法定義の中でモジュールの関数を使う方法。


最近自作記法のモジュールを一から作り直していて、 Parse::RecDescentでパーサを書いてるんだけど、 そのときに文法の中で他のモジュールの関数とかを使う方法。

Parse::RecDescentの文法に書いたコードブロックは、 Parse::RecDescentの名前空間で実行されるので、パーサの中で、

package My::Parser;
use strict;
use warnings;
use Parse::RecDescent;
{
    package Parse::RecDescent;
    use Some::Module qw( foo bar );
}

見たいにしてやれば、Parse::RecDescentの文法の中で他のモジュールの関数が使えるようになる。

Parse::RecDescentはパーサをプリコンパイルできるらしいんだけど、 そっちの方は試してないのでこの方法で出来るかどうか不明。

最近やってることっていうと自作記法のモジュール作ってるぐらいなので、 本当にBlogに書くことがない。Plaggerもいじってないし。

更新するネタがないのはしばらく続きそうだ。