(57)【特許請求の範囲】
【請求項１】
ドキュメントの表示を決定する制御タグの定義済みセットに応答するワールド・ワイド・ウェブを閲覧可能なブラウザ（ウェブ・ブラウザ）を使用してソース・コード形式のコンピュータ・プログラムを閲覧可能とするプログラミング補助装置であって、
ソース・コード形式のプログラムファイルを入力し、前記プログラムファイルのデータからコンストラクトデリミタを読み取り、該読み取ったコンストラクトデリミタがコンストラクト開始デリミタで或る場合に引き続き前記データからコンストラクトデリミタをさらに読み取り、該読み取ったコンストラクトデリミタがコンストラクト開始デリミタでない場合に該読み取ったコンストラクトデリミタをコンストラクト終了デリミタとして識別し、前記読み取ったコンストラクト開始デリミタおよび前記読み取ったコンストラクト終了デリミタの対の間にあるデータをトークンとして認識し、前記認識されたトークンを記号テーブルに書き込む手段と、
全ての前記トークンについて、前記トークンを参照する参照トークンの属性が前記参照トークンに参照されている被参照トークンの前記記号テーブルのテーブル項目に追加され、且つ前記被参照トークンの属性が前記参照トークンの前記記号テーブルのテーブル項目に追加されることによって、上記ウェブ・ブラウザで閲覧可能なマークアップ言語で記述されるハイパーテキスト・リンクを形成するための制御タグの位置を引き出す手段と、
上記引き出された位置に従って上記制御タグを上記プログラムに挿入し、上記ウェブ・ブラウザを使用して閲覧可能な出力ファイルを生成する手段と、
を具備するプログラミング補助装置。
【請求項２】
上記プログラムファイルに含まれるコンストラクトの間のリンクを生成してそれを上記記号テーブル内に記録する手段を備え、リンクされた上記コンストラクトに対応して上記出力ファイル中の位置がリンクされるように上記制御タグのいくつかが配列されることを特徴とする、請求項１に記載のプログラミング補助装置。
【請求項３】
上記制御タグがＢｏｏｋＭａｎａｇｅｒ制御タグかＨＴＭＬ制御タグであることを特徴とする、請求項１または請求項２に記載のプログラミング補助装置。
【請求項４】
上記プログラミング補助装置が、複数のプログラミング言語をサポートする複数の構文解析手段を含むことを特徴とする、請求項１から３のいずれか１項に記載のプログラミング補助装置。
【請求項５】
上記プログラミング補助装置が、複数のマークアップ言語の制御タグをサポートする複数の出力ファイル生成手段を含むことを特徴とする、請求項１から４のいずれか１項に記載のプログラミング補助装置。
【請求項６】
ドキュメントの表示を決定する制御タグの定義済みセットに応答するワールド・ワイド・ウェブを閲覧可能なブラウザ（ウェブ・ブラウザ）を使用してソース・コード形式のコンピュータ・プログラムを閲覧するプログラミング補助方法であって、
ソース・コード形式のプログラムファイルを入力し、前記プログラムファイルのデータからコンストラクトデリミタを読み取り、該読み取ったコンストラクトデリミタがコンストラクト開始デリミタで或る場合に引き続き前記データからコンストラクトデリミタをさらに読み取り、該読み取ったコンストラクトデリミタがコンストラクト開始デリミタでない場合に該読み取ったコンストラクトデリミタをコンストラクト終了デリミタとして識別し、前記読み取ったコンストラクト開始デリミタおよび前記読み取ったコンストラクト終了デリミタの対の間にあるデータをトークンとして認識し、前記認識されたトークンを記号テーブルに書き込むステップと、
全ての前記トークンについて、前記トークンを参照する参照トークンの属性が前記参照トークンに参照されている被参照トークンの前記記号テーブルのテーブル項目に追加され、且つ前記被参照トークンの属性が前記参照トークンの前記記号テーブルのテーブル項目に追加されることによって、上記ウェブ・ブラウザで閲覧可能なマークアップ言語で記述されるハイパーテキスト・リンクを形成するための制御タグの位置を引き出すステップと、
上記引き出された位置に従って上記制御タグを上記プログラムに挿入し、閲覧時に使用を希望するウェブ・ブラウザを使用して見ることのできる出力ファイルを生成するステップと、
を含む、前記プログラミング補助方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータに関し、さらに具体的には、ワールド・ワイド・ウェブを閲覧可能なブラウザ（ウェブ・ブラウザ）を使用してソース・コード形式のコンピュータ・プログラムを見ることができるようにするプログラミング補助方法および装置（プログラミング・エイド）に関する。
【０００２】
【従来の技術】
大部分のプログラマは、現存するソフトウェアの構造を理解しなければならない場面に遭遇するものである。それはソフトウェアの保守または開発のために必要となる。プログラムのドキュメントは不十分な場合が多く、プログラマはそのような仕事のために実際のソース・コードを検査する必要が生じる。大型で複雑なプログラムの場合、このような作業には時間がかかり、エラーを起こしやすい。したがって、プログラムの効率的で効果的な検査を助けるツールが非常に価値あるものとなる。そのようなツールの一つはプログラム・ブラウザである。
【０００３】
プログラム・ブラウザは、最近のコンパイラ製品に付属している場合があるが、言語に依存したプログラム・プロセッサを必要とする。そのようなプログラム・プロセッサは、ソースコードの徹底的な構文解析機能と意味分析機能を備えている。さらに、高性能の表示能力と検索能力、および便利なユーザ・インターフェースを備えていることが望ましい。
【０００４】
しかし、現在、ブラウザ技術の分野における非常に急速な変化と発展は、ブラウザ技術の最新の発展と歩調を合わせたプログラム開発ツールを提供できるかどうかの実際問題を引き起こしている。さらに、プログラミングの変化が新しいブラウザの必要性を引き起こしている。
【０００５】
ある種の制御タグを含むドキュメントを入力として受け取り、そのタグを解釈し、そのドキュメントをコンピュータ画面上でユーザに表示するドキュメント・ブラウザが利用されている。そのようなブラウザの例しては、ＩＢＭ社から市販されているＩＢＭ  ＢｏｏｋＭａｎａｇｅｒソフトウェア製品がある。この製品はＢｏｏｋＭａｓｔｅｒタグ言語を使用し、またＨＴＭＬタグを使用しているドキュメントを見るために使用できる各種のブラウザを含んでいる。ＨＴＭＬタグ言語はワールド・ワイド・ウェブ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）を構成するドキュメントによって使用される。
【０００６】
【発明が解決しようとする課題】
本発明は、ドキュメントの表示を決定する制御タグの定義済みセットに応答する汎用目的ドキュメント・ブラウザを使用して、ソース・コード形式のコンピュータ・プログラムを見ることができるプログラミング・エイドを提供することによって、改善されたプログラムブラウザを実現する。
【０００７】
【課題を解決するための手段】
このプログラミング・エイドは、プログラムが記憶された入力ファイルから記号テーブルを生成するパーサ（ｐａｒｓｅｒ）と、記号テーブルから制御タグの位置を引き出す手段と、上記引き出された位置に従ってプログラムへ制御タグを挿入し、汎用目的ドキュメントブラウザを使用して見ることのできる出力ファイルを生成する出力ファイル・ジェネレータ（ｇｅｎｅｒａｔｏｒ）とを含む。
【０００８】
このようにして、入手可能な汎用目的ドキュメント・ブラウザの全能力を、ソフトウェア開発と保守に利用でき、プログラムを便利な方法で見ることができる。プログラムを制御タグで自動的にマークアップするツールが備えられているので、ユーザは選択したドキュメント・ブラウザを強力なプログラム・ブラウザとして自由に使用できる。それによって、ユーザは好みのユーザインターフェースまたは機能をもっているブラウザ、またはよく知っているブラウザを、柔軟にまた便利に使用でき、新しいプログラミング・システムを使用するたびに新しいユーザ・インターフェースを勉強する必要性もなくなる。
【０００９】
さらに、本発明はコンパイラとプログラミング言語の開発者に対する負担も軽減する。なぜなら、それは潜在的に、新しいプログラミング言語が発表されるたびに高性能の表示検索能力と専用プログラムブラウザのユーザインターフェースを再実装しなければならないという必要性を除くからである。
【００１０】
制御タグがＨＴＭＬ制御タグである場合、またはそれに類した形式および目的のものである場合、本発明は分散型プログラムブラウザを提供し、プログラムはワールド・ワイド・ウェブ上で遠隔の場所に居る多数の異なったユーザによって便利に見ることができる。
【００１１】
【発明の実施の形態】
図１は、本発明の一つの実施例におけるプログラミング・エイドの主な機能的構成要素を示す図である。この装置はコンピュータ・プログラムをソース・コード形式で含んでいる入力ファイル１１０を受け取るように配列されたパーサ１００を含む。パーサは記号テーブル１２０を生成する。出力ファイル・ジェネレータ１３０は記号テーブル中の情報を使用して入力ファイルに第二段階の構文解析を行い出力ファイル１４０を生成する。この出力ファイルの要所要所の位置には制御タグが挿入されており、この制御タグに応答する汎用目的ドキュメント・ブラウザを使用してプログラムコードを見ることができる。制御タグはブラウザ上でのプログラムの表示を決定する。
【００１２】
図２と図３は、組み合わせられてシステムの全体的な動作を示す流れ図を構成する。プロセスはステップ２００から始まる。プログラムによって使用される各種のデータ構造がステップ２１０で初期化され、プロローグがステップ２２０で出力ファイル中に挿入される。次に、パーサ１００がステップ２３０で第一段階の構文解析を実行する。この段階は後で詳しく説明する。この構文解析ステップはループ２４０により以後の入力ファイルについて繰り返される。
【００１３】
構文解析ステップの目的は記号テーブル１２０を生成することである。記号テーブル１２０は、普通のコンパイラのパーサによって生成される通常の記号テーブルである。本発明の実施にあたっては、通常のコンパイラ記号テーブルに含まれている情報のすべてを必要とするわけではない。記号テーブルは入力ファイルを走査している間に見つかったトークンのすべてを含む。各トークンについては、そのトークンに関連した属性の集合が保存されている。
【００１４】
さらに、異なったトークンの間の相互関係がテーブル中に保存されている。トークンの例としては、キーワード（たとえば、ＩＦ、ＥＬＳＥ、ＦＯＲ）、変数名、ルーチン名などがある。相互関係の例としては、コール（ＣＡＬＬ）関係（ルーチンＸがルーチンＹを呼び出している）、コンストラクト（ＣＯＮＳＴＲＵＣＴ）関係（たとえば、ＥＬＳＥ  ＸはＩＦ  Ｙで始まるＩＦステートメントの一部である）などである。
【００１５】
当業者にとって、テーブルの実施方法としては多くの方法があり、大部分の実施形態では、テーブルは配列、ツリー、リンクされたリストなどのプリミティブなデータ構造を組み合わせたものであることが分かるであろう。記号テーブルの詳細構造は当業者に明らかであり、これ以上の詳細な説明は不要と思われる。
【００１６】
図４は第一段階の構文解析ステップを示す流れ図である。ステップ３００で、ポインタが入力ファイルの始めに初期化される。ステップ３１０で、データはコンストラクト開始デリミタ（ｄｅｌｉｍｉｔｅｒ）またはコンストラクト終了デリミタが識別されるまで読み取られる。コンストラクト開始デリミタは単にアルファベットの一文字を表すＡＳＣＩＩ文字に続いたスペースを表すＡＳＣＩＩコードであり、コンストラクト終了デリミタはスペースを表すＡＳＣＩＩコードにすることができる。もちろん、これは関連している特定のプログラミング言語による。コンストラクト開始とコンストラクト終了の対が識別されると、それらの間にあるデータはトークンとして認識され、ステップ３２０で記号テーブル１２０へ書き込まれる。
【００１７】
パーサ１００はプログラム言語に特有のものであり、本発明によってサポートされるプログラミング言語ごとに作成する必要がある。本発明の他の構成要素は、異なったプログラミング言語に対して共通になるように作成できる。複数のプログラミング言語をサポートできるように、複数のパーサ１００を設けてもよい。
【００１８】
ステップ２３０における第一段階の構文解析の後で、リンク作成処理２５０が実行される。この処理は、異なったトークン間の相互関係についてのすべての情報を、記号テーブル１２０へ付加する。
【００１９】
図５はリンク作成処理を示す流れ図である。
【００２０】
リンク作成処理のステップ４００では、テーブル中のすべてのトークンについて、そのトークンを参照しているすべてのトークンが見つけ出される。ステップ４１０では、参照しているトークン（以下、参照トークンと呼ぶ）の属性が、参照されているトークン（以下、被参照トークンと呼ぶ）のテーブル項目へ付け加えられる。
【００２１】
次に、リンク作成処理のステップ４２０で、参照トークンのすべてが記号テーブル中で識別される。ステップ４３０で、参照トークンの各々について、そのトークンと関連している被参照トークンが識別され、ステップ４４０で、被参照トークンの属性が参照トークンのテーブル項目へ付け加えられる。
【００２２】
参照トークンの例はＣＡＬＬステートメント、マクロ（ＭＡＣＲＯ）使用、または変数使用である。対応する被参照トークンの例は、ＣＡＬＬステートメントによって呼び出されたルーチン、ＭＡＣＲＯ定義、および変数定義である。
【００２３】
図３のステップ２６０で示される「第二段階の構文解析」処理では、リンク作成処理の間にテーブル中に記録された属性が使用され、参照している実体と参照されている実体との間の必要なハイパーテキスト・リンクを作成するために、適切なマークアップ言語タグが生成される。
【００２４】
図６は第二段階の構文解析処理を示す流れ図である。ステップ５００で、ファイル・ポインタが入力ファイルの始めに初期化される。ステップ５１０で、テーブルからのトークンが、入力ファイル中での順序特性に従って読み取られる。ステップ５２０で、トークンに対応したデータが入力ファイルから読み取られる。次に、ステップ５３０で、データが出力ファイルへ書き込まれる。この出力ファイルには、入力ファイルからのデータと、トークンの種類に応じた適切な制御タグと、さらに当てはまる場合には、関連している参照とが含まれる。
【００２５】
このようにして、一度すべての入力ファイルが処理されてしまうと、適当なエピローグが出力ファイルの終わりに挿入される（図３のステップ２７０を参照）。
【００２６】
ここで、出力ファイルは、挿入されたタグの特定のタグ言語をサポートする汎用目的ドキュメント・ブラウザを使用して見ることのできる適切な形式になっている。
【００２７】
理解すべきは、出力ファイル・ジェネレータ１３０が特定のタグ言語に対応したものであり、本発明によってサポートされるタグ言語ごとに作成する必要があることである。本発明の他の構成要素は、異なったタグ言語に共通したものとして実施できる。本発明に従うツールは複数の出力ファイル・ジェネレータ１３０を備えることができ、したがって複数のタグ言語をサポートできる。
【００２８】
各種のタグ言語機能を多くの異なった方法で使用して、プログラム・コードの表示を改善することができる。次に、実現できる改善のいくつかを例として示す。
【００２９】
強調タグを使用して、キーワード、定数、および識別子のような異なった言語コンストラクトへ特別のフォントと色を適用することができる。関数名の各々は見出しタグでマークすることができる。それによって、関数名のリストを含む目次を生成できる。ネストされた関数に階層見出しを使用すれば、ネストされた関数の可視表示が改善される。
【００３０】
垂直線を使用して、プログラムのブロック構造を強調することができる。ハイパーテキスト・リンクを付け加えて、プログラム・ブロックの始めと終わりをリンクしたり、プログラム変数の宣言と使用をリンクしたりできる。このようにして、ある種のドキュメント・ブラウザを使用すれば、変数をマウスでクリックするだけで直ちにその宣言を表示できる。
【００３１】
関数呼び出しまたはｇｏｔｏステートメントの各々は、それらのターゲットへリンクすることが可能であり、また索引付けによって、関数の呼び出し位置またはすべてのラベルの効果的検索が可能となる。
【００３２】
削除タグを使用して、コメントアウトされたコードをマークすることができる。通常のテキスト制御タグ（たとえばパラグラフ・マーカなど）をコメント・ステートメントの中で使用して、印刷物で実現される通常品質のテキストを得ることができる。
【００３３】
プログラム中のコメントは、ソフト・コピー形式で記憶された他の関連ドキュメント（たとえば、ユーザ・ドキュメントまたは機能仕様ドキュメント）へリンクすることができ、またワールド・ワイド・ウェブ上の他の情報源へリンクすることができる。
【００３４】
上記のマークアップ要素とタグについて、ＩＢＭ  ＢｏｏｋＭａｓｔｅｒ言語で使用される場合の要約を表Ｉに示す。
【００３５】
ＩＢＭ  ＢｏｏｋＭａｓｔｅｒのタグ言語の説明は、ＩＢＭ出版物番号ＧＣ３４−５００６−６の「ＢｏｏｋＭａｓｔｅｒ  Ｇｅｎｅｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ」（１９９３）、およびその製品関係のＩＢＭマニュアルに書かれている。
0004007562.tif 000002
【００３６】
一度マークアップされたプログラム・ファイルが生成されると、それはソフト・コピー・システムによってサポートされるすべてのオペレーティング・システムによって使用することができる。たとえば、ＩＢＭ  ＢｏｏｋＭａｎａｇｅｒシステムは、ＶＭ、ＤＯＳ、ＯＳ／２、ＡＩＸ、およびＭＶＳオペレーティング・システム環境で使用できる。マークアップされたファイルを生成するために、本発明に従うプログラミング・ツールによって使用された環境は、そのファイルを見ることができる環境を制約しない。一つのオペレーティング環境内で入力コードを構文解析し、他のオペレーティング環境でそれを見ることが可能である。
ＨＴＭＬタグ言語を使用すれば、ワールド・ワイド・ウェブを使用してプログラムを見ることができ、したがって分散型ブラウザの形態となる。ワールド・ワイド・ウェブの詳細情報は、Ａｎｄｒｅｗ  Ｆｏｒｄによる「Ｓｐｉｎｎｉｎｇ  ｔｈｅ  Ｗｅｂ」（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｔｈｏｍｓｏｎ  Ｐｕｂｌｉｓｈｉｎｇ，Ｌｏｎｄｏｎ  １９９５）およびＪｏｈｎ  ＤｅｃｅｍｂｅｒとＮｅｉｌ  Ｒａｎｄａｌｌによる「Ｔｈｅ  Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ  Ｕｎｌｅａｓｈｅｄ」（ＳＡＭＳ  Ｐｕｂｌｉｓｈｉｎｇ，Ｉｎｄｉａｎａｐｏｌｉｓ  １９９４）に書かれている。
【００３７】
フロント・エンドのコンパイラ技術と既存の汎用目的ドキュメント・ブラウザとを使用するプログラム・ブラウザを開発する新しいアプローチを説明した。既存の汎用目的ドキュメント・ブラウザは、効率的なブラウジング機能と高性能のユーザ・インターフェースをすでに備えている。このアプローチは、新しいプログラミング言語と新しいプログラミング・システムに対するプログラム・ブラウザを実現するのに必要な労力を軽減し、既存のドキュメント・ブラウジング・システムの全能力をプログラムの検査に使用できるようにする。注意すべきは、本発明に従うプログラミング・ツールを使用してソース・コードを処理するとき、この処理によってソース・コードを変更する必要は全然ないことである。
【００３８】
これまでの説明から明らかなように、本発明はコンピュータ・プログラムの形式で実施され、コンピュータ使用可能媒体を含む製造物の形態で頒布される。この媒体の中には適切なプログラム・コードが収められており、前述したプログラミング・エイドの機能をコンピュータに実行させる。
【００３９】
本発明のプログラミング・エイドは、「単独型」システムの形式を取るか、マークアップされたファイルをエクスポートできるコンパイラまたは他のプログラミング・ツールの一部として実施することができる。マークアップされたファイルは汎用目的ブラウザを使用して表示される。
【００４０】
本発明はコンピュータおよびコンピュータプログラム開発システムの産業分野に適用可能である。
【００４１】
まとめとして、本発明の構成に関して以下の事項を開示する。
（１）ドキュメントの表示を決定する制御タグの定義済みセットに応答する汎用目的ドキュメント・ブラウザを使用して、ソース・コード形式のコンピュータ・プログラムを見ることができるようにするプログラミング・エイドであって、
プログラムが記憶されている入力ファイルから記号テーブルを生成する構文解析手段と、
上記記号テーブルから制御タグの位置を引き出す手段と、
上記引き出された位置に従って制御タグを上記プログラムに挿入し、汎用目的ドキュメント・ブラウザを使用して見ることのできる出力ファイルを生成する出力ファイル生成手段と、
を具備するプログラミング・エイド。
（２）上記（１）において、上記プログラムに含まれるコンストラクトの間のリンクを生成してそれを上記記号テーブル内に記録する手段を備え、リンクされた上記コンストラクトに対応して上記出力ファイル中の位置がリンクされるように上記制御タグのいくつかが配列されることを特徴とするプログラミング・エイド。
（３）上記（１）または上記（２）において、上記制御タグのいくつかがハイパーテキスト・リンクを形成することを特徴とするプログラミング・エイド。
（４）上記（１）から（３）までの１つにおいて、上記制御タグがＢｏｏｋＭａｎａｇｅｒ制御タグかＨＴＭＬ制御タグであることを特徴とするプログラミング・エイド。
（５）上記（１）から（４）までの１つにおいて、上記プログラミング・エイドが、上記制御タグを含むファイルをエクスポートできるコンパイラの形式になっていることを特徴とするプログラミング・エイド。
（６）上記（１）から（５）までの１つにおいて、上記プログラミング・エイドが、複数のプログラミング言語をサポートする複数の構文解析手段を含むことを特徴とするプログラミング・エイド。
（７）上記（１）から（６）までの１つにおいて、上記プログラミング・エイドが、複数の制御タグ言語をサポートする複数の出力ファイル生成手段を含むことを特徴とするプログラミング・エイド。
【図面の簡単な説明】
【図１】  本発明のプログラミング・エイドを示す図である。
【図２】  本発明のプログラミング・エイドの動作の概略を示す流れ図である。
【図３】  本発明のプログラミング・エイドの動作の概略を示す流れ図である。
【図４】  第一段階の構文解析処理を示す流れ図である。
【図５】  リンク作成処理を示す流れ図である。
【図６】  第二段階の構文解析処理を示す流れ図である。
【符号の説明】
１００          パーサ
１１０          入力ファイル
１２０          記号テーブル
１３０          出力ファイル・ジェネレータ
１４０          出力ファイル
２００          ステップ
２１０          ステップ
２２０          ステップ
２３０          ステップ
２４０          ループ
２５０          リンク作成処理
２６０          ステップ
２７０          ステップ
３００          ステップ
３１０          ステップ
３２０          ステップ
４００          ステップ
４１０          ステップ
４２０          ステップ
４３０          ステップ
４４０          ステップ
５００          ステップ
５１０          ステップ
５２０          ステップ
５３０          ステップ
【図１】
0004007562.tif 000003
【図２】
0004007562.tif 000004
【図３】
0004007562.tif 000005
【図４】
0004007562.tif 000006
【図５】
0004007562.tif 000007
【図６】
0004007562.tif 000008