2010年05月17日

構文解析

今朝は少し肌寒いなぁと思って厚手の上着を着て家を出たのですが、意外と暖か…暑いexclamationふらふら
長袖のシャツの袖をまくって仕事をしているシラッチです。

この土日に、オープンソースのプロジェクトのソースを読んでいて、ふと
既存のソースコードを、特定のコーディングルールに従ったフォーマットに置き換えたり
関数の解説コメントのテンプレートを、特定のフォーマットで付加させたりできるような
C++の構文解析ツールがあれば、いろいろ便利そうだと思い、調べていたので
紹介したいと思います。

まず、伝統のある、というか定番なのが lex と yacc のようです。
lex http://ja.wikipedia.org/wiki/Lex
 「テキストを任意の規則に従って単語に切り分けていくプログラム」を作ってくれるプログラムです。
yacc http://ja.wikipedia.org/wiki/Yacc
 「単語毎に分けられたデータを順番に処理していくプログラム」を作ってくれるプログラムです。


lex/yacc を Python から使えるようにしたモジュールって無いのかな?と思ったらありました。
PLY http://www.dabeaz.com/ply/
他にも Python モジュールで pyparsing という構文解析モジュールがあるようです。
pyparsing http://pyparsing.wikispaces.com/


Eclipse という Java で記述されたオープンソースの IDE のプラグインで
C/C++の開発をできるようにする CDT というプラグインがあるのですが
CDT のパーサーもC++構文解析に利用できそうです。
『CDT ベースのエディターを構築する、第 3 回: 基本的な CDT 構文解析』
http://www.ibm.com/developerworks/jp/opensource/library/os-ecl-cdt3/


う〜ん、色々選択肢がありそうですね目
ここに挙げている以外にも様々な構文解析ツールがありそうで
調べれば調べるほど発見があり、奥が深い分野だと実感しましたぴかぴか(新しい)


<おまけ>喫茶店
構文解析ツールではないですが、以下のようなツールもソースコードの作成や解析に
役立ちそうです。

Artistic Style(astyle) http://astyle.sourceforge.net/
 C/C++/C#/Java ソースファイルを自動で再インデント&整形するためのツールです。

DoxyComment http://doxycomment.sourceforge.net/
 Doxygenというソースコード中の特定のフォーマットのコメントを基に
ドキュメントを生成するツールがあるのですが、Doxygen準拠のコメントの
テンプレートをソースコードに挿入できる Microsoft Visual Studio の
add-in です。
※add-in は Standard より上位のバージョンでなければ使えないので Express では利用できません。


posted by 管理人 at 15:56 | Comment(0) | ソフトウェア紹介
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。