TtReplocessor - テキスト置き換えツール
目的
VHDLやVerilogなど、合成ツール依存の言語は、言語自体には優れた仕様があるにもかかわらず、合成ツールなどが対応していなかったり、思った通りに合成してくれなかったりします。FPGAなどの論理はカットアンドトライしながら使える仕様を切り分けてスマートに書くことも可能ですが、ASICなど、失敗が許されないケースでは、なかなか踏み込むことができません。そこで、Perlが好きなのでさまざまな言語にPerlを組み込めるようなツールを作成してみました。
注意
このツールは、まだ開発途中ですので、パッケージ名等は仮です。
概要
仕組みは極簡単です。識別文字の間に書かれた構文を解釈してその場所をその処理結果に置き換える。というものです。現在の識別文字は、"`<"と">`"で、今後オプションでカスタマイズ可能にする予定です。構文は、
`<処理関数名:処理関数に渡す文字列>`
となります。テキスト中にこの構文が現れると、Original::Replacerパッケージ中の"text" + 処理関数名が":"に続く文字列を引数として呼び出されます。処理関数名"code"と"load"は予約されています。
code
この関数はOriginal::Replacerパッケージにtextcodeとして登録されており、渡された文字列をPerlのコードとして実行します。eval()を使用しています。
load
この関数はOriginal::Replacerパッケージにtextloadとして登録されており、渡された文字列をXMLとして解釈し、データベースに情報を格納します。構文解析には、オリジナルのXMLパーサ(非常に貧弱)Original::XML::Parserを使用し、Original::DataBaseを使って情報を管理しています。なぜ、XML::Parserなどを使わなかったかというと、Perlを実行する環境が自分の管理下になく、expatなどのライブラリをインストールするのがわずらわしかったためです。今後は、DOM対応のパッケージに置き換えれればいいと思っています。
"-d"オプションによりコマンドラインからXMLファイルを指定することも可能です。
使用例
ファイル