プログラムのPAD図自動描画ソフト pad2ps

English version
Home page
Updated on July 5, 2006

TeX は American Mathematical Society の商標です。
PostScript は Adobe Systems Incorporated の登録商標です。
その他、一般に会社名、製品名は、各社の登録商標、商標、または製品名、商 品名です。

---------------------------------------------------------------------

パッケージに付属しているマニュアルをここから閲覧できます。

P A D manual

第7回大川功記念賞佳作論文

プログラムのPAD図自動描画ソフト pad2ps

---------------------------------------------------------------------

  1. pad2ps とは
  2. 最新版
  3. pad.sty について
  4. 不都合/バグ
  5. 今後の課題

---------------------------------------------------------------------

pad2ps とは

pad2ps シリーズ (pad2ps, pad2tex, pad2eps) は、テキストファイルとして書いた PADPostScript形式、LaTeX形式、Encapsulated PostScript(EPS)形式に変換するツールです。

PAD (Problem Analysis Diagram) とはプログラムの流れや構造を図示したもので、同様なものにフローチャートがあります。PAD の特徴は、構造化されたアルゴリズムを良く表すことができる、ということです。フローチャートは GOTO のある BASIC のような言語のプログラムを図示するのに向いていますが、C のような構造化プログラミング言語を表すのには、この PAD の方が向いています。

この pad2ps を使ってアルゴリズムのPAD図を描く時には、まずエディタでPADEL (PAD Expression Language) のファイルを作成します。このPADELの書式は C 言語に良く似ており、たいていの人はすぐに PAD を描いてみることができます。

例を挙げておきましょう。

        /* pad2ps: title = Ackermann Function */
        ack(m,n)
        {
            if(m = 0)
                return (n+1)
            else{
                if(n = 0)
                    return ack(m-1,1)
                else
                    return ack(m-1,ack(m,n-1))
            }
        }
という PADEL の文を pad2ps で変換すると、

PAD

というPAD図を得ることができます。

また、pad2ps は既存のプログラムを読んで、その PAD を自動で描き出すことができます。現在のバージョンでは、C, C++, Bourne shell, C shell, Java, AWK のプログラムに対応 しています。

この pad2ps は、自分で作ったプログラムをきちんと整理しておきたい方、他人の作ったプログラムの構造を直観的に見てみたい方、プログラムの間違いを探すのに苦労している方、レポートとして提出するのにひと工夫したい方などのためのツールです。

pad2ps はフリーソフトです。その著作権は吉田 誠一 (comet@aerith.net) が保持しています。

最新版

pad2ps の日本語版の最新版は、1996年11月23日に公開された 3.11j です。英語版の最新版は 3.11 で、同じく1996年11月23日に公開されています。

pad2ps の最新版はここから入手できます。

電気通信大学の桑田正行氏のページでは、下記の修正が施されたパッチが公開されています。
  • Linux,FreeBSD でのコンパイル時の不具合への対処
  • PDF 出力対応 (電通大 永井氏)

pad.sty について

pad2ps のパッケージの中には、倉持 聡 (satoshi@ueda.info.waseda.ac.jp) 氏作のスタイルファイル pad.sty が入っています。 これは pad2tex を使って LaTeX形式のPAD図を作成する場合に必要なものです。 pad2tex の作成する LaTeX コードは、pad.sty で定義されている一連のマクロを使用します。

現在の pad2ps に含まれている pad.sty のバージョンは 1.1j です。pad.sty についての詳しい情報、及びその最新版については、 LaTeX用PADスタイルファイルのホームページ を参照して下さい。

pad.sty はフリーソフトです。その著作権は倉持 聡氏が保持しています。

電気通信大学の桑田正行氏のページでは、不具合を修正した最新版 pad.sty が公開されています。

不都合/バグ

pad2ps 3.1j には、以下のような不都合やバグがあります。もし他に何かあったら、作者まで連絡して下さい。

  • 実行ファイル及びモジュールは gzexe すると正常に動作しなくなります。

  • 何らかの原因でプログラムが Segmentation Fault となったり、ユーザが C-c を押して強制終了した場合、/tmp にゴミファイルが残る場合があります。

  • PADEL の関数内部の先頭に try 〜 catch 文がある場合はうまく出力されません。

    例:

            function()
            {
                try {
                    x = x / 2
                } catch (x < 1) {
                    EXIT
                }
    
                :
            }
    

  • pad2tex では文字列の折り曲げを行っていません。そのため、長い行や深いネストは右にはみ出してしまいます。

  • lex でコンパイルした時は、ラベルの省略形に日本語は使えません。

  • LaTeX形式にした場合には、パラメータ変数vspや空行による間隔調節が効きません。

  • 条件分岐などの分岐部を省略した場合など、LaTeX形式にした場合にうまく描けない場合があります。

  • 今後の課題

    最後にリリースした1996年の時点で、次のような構想がありました。ただ、いずれも今後しばらく実現されない見込みです。

    • Tcl/Tk, fortran などのプログラムの PAD も自動で描けるようにする
      次のバージョンでは、Tcl/Tk, Pascal, Fortran, Perl が候補に上がっています。

    • C 以外のプログラム言語に似た書式で PADEL を記述する
      現在の PADEL は C に似た書式となっています。そのため、C のプログラムを作る場合にはまず PADEL で概要を書いておくことができますが、その他の言語のプログラムを作ろうとしている場合には、まず PADEL で書いてあとで変換するか、最初からそのプログラミング言語の文法に従うかのどちらかしかありません。但し、作者は当分これには手をつけないつもりです。

    • フローチャートをサポートする
      具体的には、フローチャートを記述する簡易言語 FLOWEL を定め、それに従ってテキストファイルとして .flow というファイルを書き、それを flow2pad で PADEL に変更し、pad2ps で PAD を描くようにします。 しかし、この場合は .flow からフローチャートの図を描くツールも必要になります。既存の Flow.sty、fchart.sty、flowchart.sty 等のスタイルファイル、または flow というプログラムをうまく利用できないか考慮中です。

    • C のプログラムのマクロ展開 (cppと違って、そのファイル中で定義されているものだけ展開し、ソースの可読性は保つ)

    • ページの境に文字が来たときにうまく調節するようにする

    • カラーPADを描けるようにする

    • PADの形のカスタマイズをできるようにする

    ---------------------------------------------------------------------

    Copyright(C) Seiichi Yoshida (comet@aerith.net). All rights reserved.