JPH08314728A - ソースプログラムをオブジェクトプログラムに変換する方法および装置 - Google Patents

ソースプログラムをオブジェクトプログラムに変換する方法および装置

Info

Publication number
JPH08314728A
JPH08314728A JP8097754A JP9775496A JPH08314728A JP H08314728 A JPH08314728 A JP H08314728A JP 8097754 A JP8097754 A JP 8097754A JP 9775496 A JP9775496 A JP 9775496A JP H08314728 A JPH08314728 A JP H08314728A
Authority
JP
Japan
Prior art keywords
macro
error
source program
source
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP8097754A
Other languages
English (en)
Inventor
Leonid M Arbouzov
エム アルボーゾフ レオニド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH08314728A publication Critical patent/JPH08314728A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/423Preprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis

Abstract

(57)【要約】 【課題】 ソフトウエアプログラムのコンパイル時によ
り有用なエラーメッセージを発生する。 【解決手段】 ソフトウエアプログラムは、マクロ定
義、および、このマクロ定義によって定義されたマクロ
を呼出す命令とを含む。前記マクロは、コンパイル処理
実行時に展開される。前記マクロの展開の経歴をセーブ
するいくつかのテーブルが発生される。前記マクロのコ
ンパイル時にエラーが発生した場合、セーブされた経歴
情報を使用して、前記エラーのソースプログラム内での
位置、および、前記マクロ展開の経歴を具体的に特定す
るエラーメッセージが印刷される。入れ子状のマクロコ
ールについては、マルチラインマクロ経歴が印刷され
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、ソフトウエアプ
ログラムをコンパイルするための方法および装置に関
し、特に、ソフトウエアプログラムをコンパイルしてい
る時に検出されたエラーに関する正確な情報を供給する
ための方法および装置に関するものである。
【0002】
【従来の技術】例えばC言語のようなコンピュータ言語
は、“高水準言語”と呼ばれている。高水準言語によっ
て、プログラマは、人が容易に読み理解できるフォーム
でコンピュータプログラムを書くことができる。このよ
うなコンピュータプログラムは、“ソースプログラム”
と呼ばれている。ソースプログラムは、該ソースプログ
ラムを“オブジェクトプログラム”に変換する“コンパ
イラ”と呼ばれる他のコンピュータプログラムに入力さ
れる。オブジェクトプログラムは、コンピュータによっ
て容易に理解され実行されるフォーマットを有する。コ
ンパイル時において、コンパイラは、ソースプログラム
のプログラム要素を複数の“トークン(字句)”に分解
し、これらのトークンをさらに処理することによってオ
ブジェクトプログラムを作成する。
【0003】従来のコンパイラは、コンパイル処理の状
態を詳述する印刷されたレポートを作成する。このよう
なレポートは、コンパイル時においてソースプログラム
中に発見されたエラーを列挙するエラーメッセージを含
むものである。エラーメッセージを発生可能性のあるソ
ースプログラム中のエラーの一例としては、ソースプロ
グラム中における“未定義の記号”の使用がある。Cプ
ログラミング言語のような高水準言語は、“マクロ”と
呼ばれるプログラミング構成要素を含んでいる。一般
に、マクロとは、ソースプログラム内における2つ以上
の箇所で使用されるコンピュータプログラム部分であ
る。マクロの内容は、ソースプログラム内の“マクロ定
義”に明記されている。コンパイル時において、マクロ
は、ソースプログラム内における該マクロに関する“マ
クロコール”を含んだ位置に挿入される。このソースプ
ログラム内におけるマクロコールの位置にマクロを挿入
する処理は、“マクロ展開”と呼ばれている。ほとんど
の高水準の言語において、第2のマクロに対するマクロ
コールは、入れ子状(ネスト:nested)のマクロコール
を形成するために、第1のマクロのマクロ定義内に組み
入れ(ネスト)されることができる。
【0004】
【発明が解決しようとする課題】しかし、マクロコール
を含んだソースプログラムをコンパイルしている時にエ
ラーが発生した場合、従来のコンパイラは、有用なエラ
ーメッセージを発生することができなかった。すなわ
ち、従来のコンパイラは、そのマクロコールの行ナンバ
を特定するのみであり、コンパイルエラーが実際に発生
したマクロ内の行ナンバを特定するものではなかった。
さらに、従来のコンパイラは、マクロ展開の経歴を示す
エラーメッセージを印刷出力するものではなかった。従
来のコンパイラは、特に、入れ子状のマクロコールをコ
ンパイルする場合、有用ではなかった。入れ子状のマク
ロコールはソースプログラムの多数の行に展開する可能
性があるにも関わらず、従来のコンパイラは、ソースプ
ログラムにおけるオリジナルのマクロコールの行ナンバ
を特定するだけである。従って、マクロコールをコンパ
イルしている時にエラーの位置をより詳しく特定するエ
ラーメッセージを印刷するコンパイラが、現在要望され
ている。この発明は上述の点に鑑みてなされたもので、
ソースプログラムをオブジェクトプログラムに変換する
方法および装置において、ソフトウエアプログラムをコ
ンパイルしている時に検出されたエラーに関して、精確
な情報を供給できるようにすることを目的とする。
【0005】
【課題を解決するための手段】上記目的を達成するた
め、この発明に係る方法は、ソースプログラムをオブジ
ェクトプログラムに変換する方法であって、オブジェク
トプログラムを作成するために、マクロ定義と該マクロ
定義に定義されたマクロを呼出す命令とを含むソースプ
ログラムをコンパイルするステップであって、前記マク
ロを呼出す前記命令を展開するサブステップを含むステ
ップと、前記ソースプログラム内での前記マクロ定義の
位置および前記マクロを呼出す前記命令の位置がセーブ
されるよう、前記マクロを展開する前記サブステップを
示す経歴情報をメモリに生成するステップと、前記コン
パイルするステップにおいて前記マクロが展開されたと
きにエラーが発生したか否かを判定するステップと、エ
ラーが発生した場合、エラーメッセージによって前記ソ
ースプログラム内での前記マクロ定義のエラーの位置お
よび前記マクロを呼出す前記命令の位置が具体的に特定
されるよう、前記経歴情報に従ってエラーメッセージを
印刷するステップとを具備し、これらのステップをコン
ピュータシステムによって実行するものである。
【0006】さらに、この発明に係る装置は、ソースプ
ログラムをオブジェクトプログラムに変換する装置であ
って、前記ソースプログラムを格納したメモリと、前記
メモリに接続されており、オブジェクトプログラムを作
成するために、マクロ定義と、該マクロ定義によって定
義されたマクロを呼出す命令とを含む前記ソースプログ
ラムをコンパイルするコンパイラ部であって、前記マク
ロを呼出す命令を展開するものと、前記メモリに接続さ
れており、前記ソースプログラムにおける前記マクロ定
義の位置および前記マクロを呼出す命令の位置がセーブ
されるよう、前記マクロの展開を示し前記メモリに格納
される経歴情報を発生する経歴情報発生部と、前記コン
パイラ部に接続されており、コンパイル時において前記
マクロが展開されたか否かを判定する判定部と、エラー
が発生した場合、エラーメッセージによって前記ソース
プログラム内での前記マクロ定義のエラーの位置および
前記マクロを呼出す命令の位置が具体的に特定されるよ
う、前記経歴情報に従ってエラーメッセージを印刷する
印刷部とを具備したものである。
【0007】この発明は、マクロコールをコンパイルし
ている時にエラーの位置を詳しく特定するエラーメッセ
ージをコンパイルするための装置および方法である。前
記エラーメッセージは、単純なマクロコールおよび入れ
子状のマクロコールの両方に関するマクロ展開の経歴情
報を提供する。特に、この発明は、コンパイルエラーを
含んだマクロ記述の位置を特定するコンパイルエラーメ
ッセージを発生し、印刷する。さらに、この発明は、前
記コンパイルエラーを発生したマクロ展開の経歴を発生
する。
【0008】
【発明の実施の形態】以下、添付図面を参照してこの発
明の一実施の形態を詳細に説明する。図1は、この発明
の好ましい実施の形態に従うコンピュータシステムのブ
ロック図であり、該コンピュータシステム100は、C
PU102とメモリ104とを備えている。該コンピュ
ータシステム100は、各種のディスクドライブ、プリ
ンタ、キーボード、入出力装置、ネットワーク接続部等
(図示せず)をさらに含んでいてもよい。前記メモリ1
04は、以下に詳述するような、コンパイラプロセッサ
ソフトウエアプログラム108を有するコンパイラソフ
トウエアプログラム106と、ソースプログラム110
と、オブジェクトプログラム111と、各種のテーブル
/データ構造112とを格納している。当業者に理解さ
れるように、前記メモリ104は、さらに、当該コンピ
ュータシステム100が動作するために必要な、例えば
Unixのようなオペレーティングシステム、および、その
他の様々なソフトウエアプログラムおよびデータをも格
納している。しかし、明確さのために、これらの要素は
図示されていない。前記コンピュータシステム100
は、Sun Microsystem社のSparcstation、Intel社の8048
6プロセッサに基づいたコンピュータシステム、Power P
CプロセッサまたはHewlett Packard社のHP9000プロセッ
サであるのが好ましいが、以下に説明するステップを実
行可能なその他のコンピュータを使用してこの発明を実
施してもよい。
【0009】前記コンパイラソフトウエアプログラム1
06は、Unixの“リント(lint)”コードチェッカによ
って実現される。しかし、この発明は、Cタイプマクロ
をコンパイルする任意のシステムによって実施されても
よい。好ましい実施の形態において、この発明は、リン
トプリプロセッサのコマンド行からのオプションとして
呼びされる。しかし、この発明は、その他の適当な方法
で呼びされてもよい。図2は、図1のコンピュータシス
テム100のメモリ104に格納された3つのテーブル
のフォーマットを示す図。これらのテーブルは、ソース
位置テーブル202と宛先テーブル204とソーステー
ブル206とである。以下に詳述するように、前記ソー
ス位置テーブル202は、コンパイル処理時にプリプロ
セッサ108によってソースプログラム110から発生
されるトークンの、ソースプログラム110内での位置
を保持するものである。また、前記ソース位置テーブル
202はタッグ付きのエントリを有し、各前記エントリ
は、コンパイル中のソースプログラム110でのトーク
ンの位置(例えば、ファイル、行ナンバ、および、該行
内における位置)を示す。さらに、前記ソース位置テー
ブル202は、図3の(a)〜(d)に関して後述する
様々なフォーマットを有する複数のエントリ208を格
納している。
【0010】宛先テーブル204およびソーステーブル
206は、コンパイル処理時にプリプロセッサ108に
よって発生されるものであり、前記ソースプログラム1
10に格納されたマクロ展開の“経歴”(history)を
保持するために使用される。これら宛先テーブル204
およびソーステーブル206は、後述するようなフォー
マットを有する。各前記テーブルにおけるエントリは、
順次大きくなるトークンナンバによって構成されている
が、すべてのトークンナンバがこれらテーブル204お
よび206にエントリを有さなくてもよい。前記宛先テ
ーブル204の各エントリ210は、3つのフィールド
からなるフォーマットを有する。第1のフィールド21
2は、ソーストークンのトークンナンバを格納してい
る。第2のフィールド214は、宛先トークンのトーク
ンナンバを格納している。第3のフィールド216は、
そのテーブルのエントリのソーストークンから始まるソ
ーストークンリストの長さを格納している。前記宛先テ
ーブル204におけるエントリの一例、および、その使
用については、図12を参照して後で説明する。
【0011】前記ソーステーブル206の各エントリ2
18は、3つのフィールドからなるフォーマットを有す
る。第1のフィールド220は、ソーストークンのトー
クンナンバを格納している。第2のフィールド222
は、宛先トークンのトークンナンバを格納している。第
3のフィールド224は、そのテーブルのエントリの宛
先トークンから始まるソーストークンリストの長さを格
納している。前記ソーステーブル206におけるエント
リの一例、および、その使用については、図13を参照
して後で説明する。好ましい実施の形態において、
“K”が9〜12であり、“N”が前記ソースプログラ
ムに含まれたマクロコールの数とした場合、前記ソース
テーブル206および宛先テーブル204は、メモリの
KNバイトを必要とする。メモリ格納スペースを節約す
るために、様々な既知のメモリ圧縮技術を使用すること
ができる。
【0012】図3の(a)〜(d)は、図2のソース位
置テーブル202におけるエントリの様々なフォーマッ
トを示す図である。好ましい実施の形態において、前記
様々なエントリフォーマットは、ソース位置テーブル2
02のスペースを節約するために使用されているが、こ
の発明の動作には必要ではない。前記ソース位置テーブ
ル202は、コンパイル中のソースプログラムの一行に
おける各トークンのエントリを格納している。図3の
(a)〜(d)における矩形ボックスの各々は、1バイ
トを示している。従って、図3の(a)および(b)に
示すフォーマットを有する前記ソーステーブル202の
エントリは1バイトを有し、図3の(c)および(d)
に示すフォーマットを有するエントリは5バイトを有す
る。図3の(a)フォーマットは、トークンの位置が前
のトークンの位置と同一行内における位置のみにおいて
異なる場合、すなわち、現在のトークンのファイルおよ
び行ナンバが前のトークンのファイルおよび行ナンバと
同じである場合に使用される。図示のように、そのエン
トリのMSB(最大位ビット)が“0”である場合、前
記エントリは、1つの行内の位置に関する相対的なオフ
セット値を表す。ここで説明する実施の形態において、
前記オフセット値は、0〜7F(16進数)、すなわ
ち、最大7ビットの長さの値をとることができる。図3
の(a)および(b)における“X”は、“任意の値で
よい”ことを示す。
【0013】図3の(b)のフォーマットは、トークン
が前のトークンとは異なる行ナンバに位置している場
合、すなわち、現在のトークンのファイルナンバが前の
トークンのファイルナンバと同じである場合に使用され
る。前記行内での位置が“1”であると仮定する。図示
のように、そのエントリのMSBが“1”であり(且
つ、そのエントリの最初のバイトがEF(16進数)ま
たはFF(16進数)を含まない)場合、前記エントリ
は、行ナンバに関する相対的なオフセット値を表す。こ
こで説明する実施の形態において、前記オフセット値
は、0〜7F(16進数)、すなわち、最大7ビットの
長さの値をとることができる。図3の(c)のフォーマ
ットは、トークンの位置が前のトークンとは所定行数以
上異なる場合に使用される。図示のように、エントリの
最初のバイトがFE(16進数)を含むものである場
合、該エントリには、行オフセット値を含む4バイトが
続くことになる。ここで説明する実施の形態において、
図3の(b)のフォーマットは0〜125の行オフセッ
ト値のみを含むことができるので、図3の(c)フォー
マットは、行オフセット値が125を超える場合に使用
される。ここで説明する実施の形態において、行オフセ
ット値格納用に4バイトが割り当てられているので、前
記行オフセット値は、0〜FFFFFFFF(16進数)の値と
することができる。その行内における位置は“1”であ
ると仮定する。
【0014】図3の(d)のフォーマットは、トークン
が前のトークンとは異なるファイルに位置している場合
に使用される。図示のように、エントリの最初のバイト
がFF(16進数)を含むものである場合、該エントリ
には、ファイルナンバを含む4バイトが続くことにな
る。ここで説明する実施の形態において、ファイルナン
バ格納用に4バイトが割り当てられているので、前記フ
ァイルナンバは、0〜FFFFFFFF(16進数)の値とする
ことができ、前記メモリ104に格納されたファイル名
テーブル(図示せず)によって決定されるファイル名に
対応する。その行ナンバおよび位置は“1”であると仮
定する。好ましい実施の形態において、前記ソース位置
テーブルは、当業者に知られた方法で、ハフマン符号化
方式を使用して格納されている。図3の(a)〜(d)
に示された各“デルタ(delta)”は4ビット値として
格納されている。従って、前記ソース位置テーブルは、
メモリのKNバイトを必要とする(ここで、Kは約0.
5〜1の小さな数であり、Nはオリジナルのソーストー
クンの数である)。しかし、前記ソーステーブルおよび
宛先テーブルを格納するために使用される表記法は、こ
の発明の最も重要な特徴ではなく、任意の適当な格納用
表記法を使用してこの発明を実施してよい。
【0015】図4は、Cプログラミング言語で書かれた
ソースプログラム400の一例を示す図。ここに示す例
はCプログラミング言語で書かれたマクロを取り扱うも
のであるが、この発明は、C言語に類似した言語で書か
れたマクロを含む他のコンパイル言語用のコンパイラで
実施されてもよい。図4のソースプログラム400は、
3つの行を有する。該ソースプログラム400の第1の
行402は、“AA”と名付けられた第1のマクロに関す
るマクロ定義である。このマクロ定義は、前記マクロAA
のボディが“AR”と名付けられたアレイを呼出すことを
明示する。該ソースプログラム400の第2の行404
は、“B”と名付けられた第2のマクロに関するマクロ
定義である。この“B”のためのマクロ定義は、パラメ
ータとして送られるマクロ名に対する呼出し、および、
前記マクロAAに対する呼出しを含んでいる。前記ソース
プログラム400の第3の行406は、前記マクロBに
対する呼出しを含む変数“x”の定義である。また、前
記第3の行406は、前記マクロAAに対する呼出しを第
1の独立引き数としてマクロBBに送る。前記ソースプロ
グラム400は、前記アレイARに関する定義を含んでい
ない。故に、前記コンパイラ108が前記ソースプログ
ラム400をコンパイルする場合、前記アレイARは未定
義の記号となる。この未定義のマクロ記号によって、コ
ンパイラ108は、図6に示すようなエラーメッセージ
を発生する。このエラーメッセージは、図5のデータ構
造に従って発生される。
【0016】図5は、図4のソースプログラム400か
ら作成されたツリーデータ構造の一部を示す図である。
特に、図5に示されたツリーは、前記記号ARに関するマ
クロ展開の経歴を示している。前記ツリーデータ構造
は、この実施の形態においては前記宛先テーブル204
およびソーステーブル206において構築されている
が、任意の適当なデータ構造または方法を使用して実施
されることができる。図5において、トークンARはツリ
ーの先頭部である。前記ツリーの左側の分枝は、マクロ
がマクロコール時に展開される場合、該マクロの宛先を
示す。従って、図5の左側の分枝に従い、前記アレイAR
はマクロAA(ノード72)の定義に使用され、この定義
はマクロBにおける定義c+AA(d)(ここで、記号“c”
は“AA”に結合されている)(ノード66)で呼出さ
れ、該定義c+AA(d)はソースプログラム文B(AA
(y),z)(ノード55)で呼出される。根ノードの右
側の分枝は、トークンARのソース(ノード29)を示
す。ノード72および66の右側の分枝は、これらのマ
クロコールのソースを示す。
【0017】図6は、図4のソースプログラムがこの発
明に従ってコンパイルされるときに発生されるエラーメ
ッセージの一例を示す図である。コンパイラがトークン
ARに関して未定義記号エラーを発見すると、該コンパイ
ラは、当業者に知られた再帰的手続きを使用することに
よって、図5のツリーを探索し、図6のマクロ経歴60
2を発生する。前記ツリーは左から右、上から下に探索
され、該ツリーの各々の葉は、エラーメッセージにおけ
る行を示す。こうして、前記コンパイラは、ノード55
(前記ツリーの最も左で最も下方のノード)にアクセス
し、前記ソースプログラムにおける“int x = B(AA
(y),z)”、すなわち、行3,ファイルex4.c、ポジシ
ョン7(エラーメッセージの行604を参照)を含む位
置を印刷する。前記コンパイラは、以下に述べるよう
に、前記ソース位置テーブル202からノード55の位
置を得る。前記エラーメッセージにおけるマクロ経歴6
02のその他の行は、前記ツリーの探索を続行し、該ツ
リーにおける各葉ノードの前記エラーメッセージでの行
を印刷することによって、上記と同様に発生される。こ
うして、前記ツリーの葉に対応する前記ソースプログラ
ムの行は、未定義の記号ARの展開経歴を発生する。最後
に、前記コンパイラは、前記エラーメッセージの行60
6として発見されたエラー(ここで、”エラー”とは、
未定義の記号AR)の種類を印刷する。
【0018】図7〜図13は、図4〜図6に示した例の
実行を示すものである。このうち、図7および図8は、
コンパイル時において、図11〜図13のテーブルを作
成するために実行されるステップを示すフローチャート
である。また、図9は、コンパイル時において、図11
〜図13のテーブルを使用してエラーメッセージを発生
するために実行されるステップを示すフローチャートで
ある。この実施の形態において、図7〜図9のステップ
は、(コンパイラ108における)プリプロセッサ10
8またはコンパイラ108のソフトウエア命令のような
ソフトウエア命令を実行するCPU102によって実行
される。
【0019】図7および図8のステップは、前記プリプ
ロセッサ108がソースプログラム400を前処理し、
前記コンパイラ108に対してコンパイルすべきトーク
ンを送るのに伴って、前記プリプロセッサ108によっ
て実行される。ステップ702では、前記CPU102
は、前記コンパイラ108が前記ソースプログラム40
0のその他の行に関する情報を要求したか否かを調べ
る。YESである場合、前記CPU102は、ステップ
704において、前記ソースプログラム400のその他
の行を入力する。さらに、ステップ706において、前
記ソースプログラム400の前記新たな行が、当業者に
知られた方法で“トークン化処理”される。このトーク
ン化処理において、前記ソースプログラム400は複数
のトークンに分解され、これらトークンのナンバ付けが
なされる。この実施の形態において、前記トークン化処
理は、ISO(International Standards Organization)
規格9899に従って実行される。こうして、前記ソースプ
ログラム400は、図10の(a)および(b)に示す
ようなトークン群となる。この実施の形態において、前
記プリプロセッサ108は、前記ソースプログラム40
0を一度に一行ずつトークン化し、そのトークンをコン
パイルするためにコンパイラ108に送る。図10の
(a)および(b)は、トークンを例示するものであ
り、コンパイル中のいずれの時点においても、完全な形
態として存在しない。
【0020】ステップ708において前記ソースプログ
ラム400の現在の行におけるすべてのトークンが処理
されていない場合、ステップ709に進む。ステップ7
09において、前記メモリ104のトークンリスト(図
示せず)に、新たな現在のトークンが入れられる。ステ
ップ710において、前記トークンの位置は、図11の
ソース位置テーブル1102に登録される。該ソース位
置テーブル1102は、前記ソースプログラム400に
おける各トークンの位置を格納するものである。図11
は、前記ソース位置テーブル1102におけるソースプ
ログラム400に関する部分を示すものである。当業者
に理解されるように、前記ソース位置テーブル1102
は、前記コンパイラが前記ソースプログラム400にお
ける様々なトークンの位置を特定することを可能にする
任意のフォーマットを使用して、実現されてよい。例え
ば、図11において、前記ソース位置テーブル1102
は、トークンナンバ29(トークン“AR”)がソースプ
ログラム400における行1,ポジション15に位置し
ていることを示す。同様に、前記ソース位置テーブル1
102は、トークンナンバ44(トークン“c”)がソ
ースプログラム400における行2,ポジション16に
位置していることを示し、トークンナンバ55(トーク
ン“B”)がソースプログラム400における行3,ポ
ジション7に位置していることを示し、トークンナンバ
57(トークン“AA”)がソースプログラム400にお
ける行3,ポジション9に位置していることを示す。図
11に示したトークンは、図5のツリー構造の葉に対応
する。なお、前記ソース位置テーブル1102は、その
他のエントリ、すなわち、前記ソースプログラム400
における各トークンごとのエントリを格納している。該
ソース位置テーブル1102には、前記ツリーの内部ノ
ードに対応するエントリは存在しない。これらのノード
は、前記ソーステーブルおよび宛先テーブルにエントリ
を有する。ステップ712において、次のトークンがマ
クロコールの始めである場合、ステップ714に進む。
そうでない場合、ステップ708に戻る。ステップ71
4において、前記プリプロセッサ108は、前記マクロ
を展開し、コンパイラ108によって使用されることに
なる前記マクロ展開の結果を、トークンリストに入れ
る。
【0021】図8のステップは、コンパイル時にマクロ
展開が発生する毎に実行されるものであり、前記マクロ
展開の経歴を宛先テーブル1202およびソーステーブ
ル1302にセーブする。ステップ716において、前
記CPU102は、実行されたマクロ展開毎に、各前記
宛先テーブル1202およびソーステーブル1302に
エントリを格納することによって、マクロ展開の経歴を
セーブする。入れ子状マクロコールの場合、前記宛先テ
ーブル1202およびソーステーブル1302に多数の
エントリが格納されることになる。ステップ716の詳
細は図8に示されている。前記プリプロセッサ108に
よってマクロが展開される毎に、3つの値が前記宛先テ
ーブル1202に登録され、3つの値が前記ソーステー
ブル1302に登録される。
【0022】入れ子状マクロ展開の一例を下に説明す
る。前記ソースプログラム文B(AA(y),z)は、トーク
ン55〜62に対応する。このソースプログラム文は
“c+AA(d)”(トークン66〜71)に展開され、
“c”は“AA(y)”(トークン72〜75)に展開さ
れ、該“AA(y)”は“AR”(トークン76)に展開さ
れる。図5のツリー構造は、該ツリーの左側の分枝がこ
の展開に対応することを示している。さらに、図12の
宛先テーブル1202は、該テーブル1202の最初の
3つのエントリが左側の3つの分枝に対応することを示
している。同様に、図13のテーブル1302は、該テ
ーブル1302の最初の3つのエントリが右側の3つの
分枝に対応することを示している。該右側の分枝は、マ
クロコールの“ソース”を示している。
【0023】図12および図13のエントリは、図8の
フローチャートに従って作成されたものであり、図2に
示したフォーマットを有する。図5のツリー(図12お
よび図13のテーブルエントリによって示される)は、
その下方の最左側の葉から上方に作成される。こうし
て、マクロコール“B(AA(y),z)”に関して、トーク
ン値55が、宛先テーブル1202の現在のエントリの
Dst(宛先)フィールドに格納される(ステップ80
2)。前記マクロコールは“c+AA(d)”として展開さ
れるので、トークン値66および長さ6が、宛先テーブ
ル1202の現在のエントリのSrc(ソース)フィール
ドおよびLen(長さ)フィールドに格納される(ステッ
プ804および806)。
【0024】次に、前記文字列“c+AA(d)”は6つの
トークンを含んでいるので、トークン値66および長さ
6が、ソーステーブル1302の現在のエントリのDst
フィールドおよびLenフィールドに格納される(ステッ
プ808および812)。前記文字列“c”は“c+AA
(d)”のソースを有するので、トークン44が、ソー
ステーブル1302の現在のエントリのSrcフィールド
に格納される(ステップ810)。これら6つのステッ
プは、“c”の“AA(y)”への展開および“AA(y)”
の“AR”への展開のついて繰り返され、最初3つのエン
トリが前記テーブル1202および1302に格納され
る。これらテーブル1202および1302は、ここで
は詳述しないエントリも含んでいる。同様に、例えば
“AA(d)”(行2,ポジション18)の展開のための
エントリも示されていないが、上記と同様な方法で実行
される。図7の説明に戻ると、ステップ716の後、ス
テップ708に戻る。前記ソースプログラムの現在の行
に関するすべてのトークンが処理され終わると、前記現
在の行に関するトークンリストが前記コンパイラに送ら
れ(図9)、ステップ702に戻る。
【0025】図9は、コンパイル時においてエラーメッ
セージを発生するために実行されるステップを示すフロ
ーチャートである。前記コンパイラ108は、この発明
に従って任意のエラーメッセージを発生する。前記コン
パイラ108の全体的な動作は、当業者に知られている
ので、ここでは説明を省略する。ステップ902におい
て前記CPU102が(ステップ904で)マクロ展開
内に発生したコンパイルエラーを検出すると、前記CP
U102が、前記宛先テーブルおよびソーステーブルを
使用して、マクロ展開の経歴を印刷する(ステップ90
6)。特に、前記コンパイラ108は、そのエラー(例
えば、未定義の記号)に対応したルートノードを有する
前記テーブル204,206に格納されたツリーを探索
するエラールーチンを検出する。前記ツリーは、上から
下、および、左から右に探索される。こうして、例え
ば、前記コンパイラ108によって“AR”が未定義の記
号であると判定された場合、該コンパイラ108は、図
5の葉に従って図6のエラーメッセージを印刷する。
【0026】例えば、前記ルートノードに対応するエン
トリから開始し、最初のエントリのDstフィールドと等
しいSrcフィールド内容を持つ対応した2番目のエント
リを有さない最初のエントリ(例えば、宛先テーブル1
202における最初のエントリ)が見つかるまで、後の
ノードについて前記宛先テーブル1202を繰り返しサ
ーチすることによって、前記ツリーの左側の分枝が探索
される。このイベントが発生すると、前記Dstフィール
ドは葉ノードを示し、ソース位置テーブル1102から
該葉ノードの位置が得られる。このようなツリーの探索
は、当業者によってよく理解されると思うので、ここで
は詳述しない。最後に、ステップ908において、前記
コンパイラ108は、図6に示したように、検出された
エラーの種類(例えば、“未定義の記号”)を特定する
メッセージを印刷する。
【0027】要約すると、コンパイルエラーが発生した
マクロに関するマクロ展開の経歴を印刷し、マクロ定義
内における前記エラーの位置を特定することによって、
コンパイル時における有用な情報が提供され、このよう
にして、コンピュータプログラムのより速く、より効率
的な開発が可能になる。この発明のいくつかの好ましい
実施の形態について上述したが、様々な変更も可能であ
る。例えば、マクロ置換経歴ツリー追跡の順序を他のも
のに変えてもよい。ソース行およびエラーメッセージを
紙に印刷する代りに、前記コンパイラは、集積化された
開発環境のテキストエディタウィンドウにグラフィカル
ユーザインターフェイスを使用することによって、これ
らを表示してもよい。さらに、ソース位置テーブルを格
納する代りに、前記プリプロセッサによる2回目のソー
ステキスト通過を利用して、所望のトークンのソース位
置を格納するようにしてもよい。この最後の変更によっ
て、必要なメモリ量を相当減少することができる。
【0028】
【発明の効果】以上のように、この発明は、コンパイル
エラーが発生したマクロに関するマクロ展開の経歴を印
刷し、マクロ定義内における前記エラーの位置を特定す
ることによって、コンパイル時における有用な情報を提
供できる、という優れた効果を奏する。
【図面の簡単な説明】
【図1】この発明の好ましい実施の形態に従うコンピュ
ータシステムのブロック図。
【図2】図1のコンピュータシステムのメモリに格納さ
れた3つのテーブルのフォーマットを示す図。
【図3】図2のソース位置テーブルにおけるエントリの
様々な詳細フォーマットを示す図。
【図4】ソースプログラムの一例を示す図。
【図5】図4のソースプログラムから作成された宛先テ
ーブルおよびソーステーブルによって表されるツリーデ
ータ構造の一例を示す図。
【図6】図4のソースプログラムのコンパイル時に出力
されたエラーメッセージの一例を示す図。
【図7】ソースプログラムのコンパイル時に実行され、
ソース位置テーブル、宛先テーブルおよびソース位置テ
ーブルを発生するステップを示すフローチャート。
【図8】図7の詳細を示すフローチャート。
【図9】マクロ展開内に検出されたエラーのソースプロ
グラム内での位置を示すエラーメッセージ、および、該
マクロ展開の経歴を発生するために、前記ソースプログ
ラムのコンパイル時に実行されるステップを示すフロー
チャート。
【図10】図4のソースプログラムから発生されたトー
クン群を示す図。
【図11】図4のソースプログラムから発生されたソー
ス位置テーブルの一部を例示する図。
【図12】図4のソースプログラムから発生された宛先
テーブルの一例を示す図。
【図13】図4のソースプログラムから発生されたソー
ステーブルの一例を示す図。
【符号の説明】
102 CPU 104 メモリ 106 コンパイラ 108 プリプロセッサ 110 ソースプログラム 111 オブジェクトプログラム 112 テーブルおよびデータ構造 202 ソース位置テーブル 204 宛先テーブル 206 ソーステーブル

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】 ソースプログラムをオブジェクトプログ
    ラムに変換する方法であって、コンピュータシステムに
    よって実行される処理ステップとして、 オブジェクトプログラムを作成するために、マクロ定義
    と該マクロ定義に定義されたマクロを呼出す命令とを含
    むソースプログラムをコンパイルするステップであっ
    て、前記マクロを呼出す前記命令を展開するサブステッ
    プを含むステップと、 前記ソースプログラム内での前記マクロ定義の位置およ
    び前記マクロを呼出す前記命令の位置がセーブされるよ
    う、前記マクロを展開する前記サブステップを示す経歴
    情報をメモリに生成するステップと、 前記コンパイルするステップにおいて前記マクロが展開
    されたときにエラーが発生したか否かを判定するステッ
    プと、 エラーが発生した場合、エラーメッセージによって前記
    ソースプログラム内での前記マクロ定義のエラーの位置
    および前記マクロを呼出す前記命令の位置が具体的に特
    定されるよう、前記経歴情報に従ってエラーメッセージ
    を印刷するステップとを具備することを特徴とする方
    法。
  2. 【請求項2】 前記印刷するステップが、前記コンパイ
    ルするステップにおいて前記マクロが展開されたときに
    発生したエラーの種類を特定するメッセージを印刷する
    ステップを含む請求項1に記載の方法。
  3. 【請求項3】 前記ソースプログラムがCプログラミン
    グ言語で書かれている請求項1に記載の方法。
  4. 【請求項4】 前記経歴情報をメモリに生成するステッ
    プが、前記ソースプログラムにおける文字列が単一の特
    有のトークンナンバによって示される経歴情報を発生す
    るステップを含む請求項1に記載の方法。
  5. 【請求項5】 前記判定するステップが、コンパイルエ
    ラーの位置を判定するステップを含み、前記コンパイル
    エラーの位置が前記メモリに格納されたテーブルに格納
    された単一の特有のトークンナンバによって示される請
    求項1に記載の方法。
  6. 【請求項6】 前記経歴情報が、前記コンパイルするス
    テップにおいて実行されるマクロ展開のソースおよび宛
    先を格納したツリーデータ構造を含む請求項1に記載の
    方法。
  7. 【請求項7】 前記経歴情報が、前記メモリの宛先テー
    ブルおよびソーステーブルに格納される請求項1に記載
    の方法。
  8. 【請求項8】 Kが9〜12のいずれかの数であり、N
    が前記ソースプログラムに格納されたマクロコールの数
    であるとした場合において、前記宛先テーブルおよびソ
    ーステーブルがメモリの「K・N」バイトを必要とする
    ものである請求項7に記載の方法。
  9. 【請求項9】 前記ソースプログラムにおけるトークン
    の位置が、ソース位置テーブルに格納される請求項1に
    記載の方法。
  10. 【請求項10】 Kが0.5〜1のいずれかの数であ
    り、Nが前記ソースプログラムに格納されたオリジナル
    のソーストークンの数であるとした場合において、前記
    ソース位置テーブルがメモリの「K・N」バイトを必要
    とするものである請求項9に記載の方法。
  11. 【請求項11】 前記印刷するステップが、前記第1の
    マクロ定義におけるエラーのファイル名と行ナンバおよ
    び位置、ならびに、前記第1のマクロを呼出す第1の命
    令のファイル名と行ナンバおよび位置、を具体的に特定
    するエラーメッセージを印刷するステップを含むもので
    ある請求項1に記載の方法。
  12. 【請求項12】 ソースプログラムをオブジェクトプロ
    グラムに変換する方法であって、コンピュータシステム
    によって実行される処理ステップとして、 オブジェクトプログラムを作成するために、第1のマク
    ロ定義と該マクロ定義に定義された第1のマクロを呼出
    す第1の命令とを含むソースプログラムをコンパイルす
    るステップであって、前記第1のマクロを呼出す前記第
    1の命令を展開するサブステップを含むステップと、 前記ソースプログラム内での前記第1のマクロ定義の位
    置および前記第1のマクロを呼出す第1の命令の位置が
    セーブされるよう、前記第1のマクロを展開する前記サ
    ブステップを示す経歴情報をメモリに生成するステップ
    と、 前記コンパイルするステップにおいて前記第1のマクロ
    が展開されたときにエラーが発生したか否かを判定する
    ステップと、 エラーが発生した場合、エラーメッセージによって前記
    ソースプログラム内での前記第1のマクロ定義のエラー
    の位置および前記第1のマクロを呼出す前記第1の命令
    の位置が具体的に特定されるよう、前記経歴情報に従っ
    てエラーメッセージを印刷するステップとを具備し、 前記ソースプログラムが、第2のマクロ定義、および、
    該第2のマクロ定義に定義された第2のマクロを呼出す
    入れ子状の第2の命令を含み、前記入れ子状の第2の命
    令が前記第1のマクロ定義内に存在しており、 前記コンパイルするステップが、前記第1のマクロ定義
    および第2のマクロ定義を呼出す前記命令を展開するサ
    ブステップを含み、 前記経歴情報を発生するステップが、前記ソースプログ
    ラムにおける、前記第1のマクロ定義および第2のマク
    ロ定義の位置ならびに前記マクロを呼出す第1の命令お
    よび第2の命令の位置をセーブし、 前記判定するステップが、前記コンパイルするステップ
    において第2のマクロが展開されたときにエラーが発生
    したか否かを判定するステップを含み、 前記印刷するステップが、エラーが発生した場合、エラ
    ーメッセージが前記ソースプログラム内での前記第2の
    マクロ定義のエラーの位置および前記第1の命令および
    第2の命令の位置を具体的に特定するよう、前記経歴情
    報に従ってエラーメッセージを印刷するステップを含む
    ことを特徴とする方法。
  13. 【請求項13】 ソースプログラムをオブジェクトプロ
    グラムに変換する装置であって、 前記ソースプログラムを格納したメモリと、 前記メモリに接続されており、オブジェクトプログラム
    を作成するために、マクロ定義と、該マクロ定義によっ
    て定義されたマクロを呼出す命令とを含む前記ソースプ
    ログラムをコンパイルするコンパイラ部であって、前記
    マクロを呼出す命令を展開するものと、 前記メモリに接続されており、前記ソースプログラムに
    おける前記マクロ定義の位置および前記マクロを呼出す
    命令の位置がセーブされるよう、前記マクロの展開を示
    し前記メモリに格納される経歴情報を発生する経歴情報
    発生部と、 前記コンパイラ部に接続されており、コンパイル時にお
    いて前記マクロが展開されたか否かを判定する判定部
    と、 エラーが発生した場合、エラーメッセージによって前記
    ソースプログラム内での前記マクロ定義のエラーの位置
    および前記マクロを呼出す命令の位置が具体的に特定さ
    れるよう、前記経歴情報に従ってエラーメッセージを印
    刷する印刷部とを具備した装置。
  14. 【請求項14】 前記印刷部が、コンパイル時において
    前記マクロが展開されたときに発生したエラーの種類を
    特定するメッセージをも印刷する請求項13に記載の装
    置。
  15. 【請求項15】 前記経歴情報発生部が、前記ソースプ
    ログラムにおける文字列が単一の特有のトークンナンバ
    によって示される経歴情報を発生する請求項13に記載
    の装置。
  16. 【請求項16】 前記判定部が、コンパイルエラーの位
    置を判定し、前記コンパイルエラーの位置が前記メモリ
    に格納されたテーブルに格納された単一の特有のトーク
    ンナンバによって示される請求項13に記載の装置。
  17. 【請求項17】 前記ソースプログラムにおけるトーク
    ンの位置が、前記メモリ内のソース位置テーブルに格納
    される請求項13に記載の装置。
  18. 【請求項18】 前記経歴情報が、コンパイル時におい
    て実行されるマクロ展開のソースおよび宛先を格納した
    ツリーデータ構造を含む請求項13に記載の装置。
  19. 【請求項19】 前記印刷部が、前記マクロ定義におけ
    るエラーのファイル名と行ナンバおよび位置、ならび
    に、前記マクロを呼出す命令のファイル名と行ナンバお
    よび位置、を具体的に特定するエラーメッセージを印刷
    するものである請求項13に記載の装置。
  20. 【請求項20】 前記ソースプログラムが、入れ子状の
    マクロコールを含み、 前記コンパイル部が、前記入れ子状のマクロコールを展
    開し、 前記経歴情報発生部が、前記ソースプログラムにおける
    前記入れ子状のマクロコールの位置をセーブし、 前記判定部が、コンパイル時において前記入れ子状のマ
    クロコールが展開されたときにエラーが発生したか否か
    を判定し、 前記印刷部が、エラーが発生した場合、前記経歴情報に
    従ってエラーメッセージを印刷し、該エラーメッセージ
    が、前記ソースプログラム内での前記入れ子状のマクロ
    コールの位置を具体的に特定する請求項13に記載の装
    置。
JP8097754A 1995-03-27 1996-03-27 ソースプログラムをオブジェクトプログラムに変換する方法および装置 Pending JPH08314728A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/410672 1995-03-27
US08/410,672 US5701487A (en) 1995-03-27 1995-03-27 Method and apparatus for displaying locations of errors detected inside software macro calls

Publications (1)

Publication Number Publication Date
JPH08314728A true JPH08314728A (ja) 1996-11-29

Family

ID=23625725

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8097754A Pending JPH08314728A (ja) 1995-03-27 1996-03-27 ソースプログラムをオブジェクトプログラムに変換する方法および装置

Country Status (5)

Country Link
US (1) US5701487A (ja)
EP (1) EP0735466A3 (ja)
JP (1) JPH08314728A (ja)
KR (1) KR960035260A (ja)
CA (1) CA2170939A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011113147A (ja) * 2009-11-24 2011-06-09 Nomura Research Institute Ltd ソース解析プログラム、プリプロセッサ、レキサ、および構文木解析プログラム
JP2011113148A (ja) * 2009-11-24 2011-06-09 Nomura Research Institute Ltd マクロ展開方法およびプリプロセッサ
CN102855306A (zh) * 2012-08-21 2013-01-02 飞天诚信科技股份有限公司 一种解析源文件的方法和装置

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5903859A (en) * 1996-03-27 1999-05-11 Dell Usa, L.P. Dynamic multi-lingual software module system
US5948107A (en) * 1997-05-28 1999-09-07 Intel Corporation Method of handling errors in complex inheritance hierarchies
US5978587A (en) * 1997-11-13 1999-11-02 Unisys Corp. Method for propagating source code locations into objects in a compiler
US5978586A (en) * 1997-11-26 1999-11-02 Unisys Corp. Method for tracking changes in source locations in a compiler
US6219828B1 (en) * 1998-09-30 2001-04-17 International Business Machines Corporation Method for using two copies of open firmware for self debug capability
US6654953B1 (en) * 1998-10-09 2003-11-25 Microsoft Corporation Extending program languages with source-program attribute tags
CN1129068C (zh) * 1998-10-16 2003-11-26 联合想象计算机公司 模型效果分析方法
US6353924B1 (en) * 1999-02-08 2002-03-05 Incert Software Corporation Method for back tracing program execution
US6381736B1 (en) * 1999-10-12 2002-04-30 Cisco Technology, Inc. Method for compile-time type-checking of arguments for externally-specified format strings
US20050160401A1 (en) * 1999-10-16 2005-07-21 Computer Associates Think, Inc. System and method for adding user-defined objects to a modeling tool
US7734457B2 (en) * 1999-10-16 2010-06-08 Computer Associates Think, Inc. Method and system for generating dynamic comparison models
US6715109B1 (en) 2000-02-04 2004-03-30 International Business Machines Corporation Method, computer program product, and system for making standard stream data accessible that would otherwise be lost in application programs
US6708333B1 (en) * 2000-06-23 2004-03-16 Microsoft Corporation Method and system for reporting failures of a program module in a corporate environment
US8032886B2 (en) * 2000-11-22 2011-10-04 Microsoft Corporation Tracking asynchronous execution of program using hierarchical structure of objects
US6813707B1 (en) * 2001-03-23 2004-11-02 Cisco Technology Inc. Enhancing instruction execution using built-in macros
US6931627B2 (en) * 2001-05-16 2005-08-16 Sun Microsystems, Inc. System and method for combinatorial test generation in a compatibility testing environment
US20030088810A1 (en) * 2001-11-02 2003-05-08 Sun Microsystems, Inc. Methods and apparatus for determining software component sizes associated with errors
US7337438B1 (en) 2003-03-31 2008-02-26 Applied Micro Circuits Corporation Macros to support structures for an assembler that does not support structures
US7571431B2 (en) * 2003-04-29 2009-08-04 Microsoft Corporation Processing macro information and displaying via GUI in different tools
US7971182B1 (en) * 2006-05-09 2011-06-28 Vmware, Inc. Application environment specifications for provisioning application specific runtime environments using undefined symbols
KR20080045545A (ko) * 2006-11-20 2008-05-23 삼성전자주식회사 조건부 영역을 전처리하는 방법
US8863148B1 (en) * 2007-01-09 2014-10-14 Marvell International Ltd. Small debug print
US8577937B1 (en) 2007-05-09 2013-11-05 Vmware, Inc. Repository including exclusion list
US7971047B1 (en) 2007-09-10 2011-06-28 Vmware, Inc. Operating system environment and installation
US8219987B1 (en) 2007-08-24 2012-07-10 Vmware, Inc. Optimized virtual machine specification for provisioning application specific runtime environment
US8001083B1 (en) 2007-05-09 2011-08-16 Vmware, Inc. Repository including version management
US9015180B1 (en) 2007-05-09 2015-04-21 Vmware, Inc. Repository including file identification
US11262996B2 (en) 2007-05-09 2022-03-01 Vmware, Inc. Repository including exclusion list
US8347263B1 (en) 2007-05-09 2013-01-01 Vmware, Inc. Repository including installation metadata for executable applications
US8171141B1 (en) 2009-04-02 2012-05-01 Vmware, Inc. Provisioning system including stack manager
US8473902B2 (en) * 2009-08-07 2013-06-25 International Business Machines Corporation Identifying source code elements for refactoring
US8863094B2 (en) 2010-05-18 2014-10-14 International Business Machines Corporation Framework for a software error inject tool
US10614432B2 (en) * 2016-01-29 2020-04-07 Ncr Corporation Channel integration processing
US10176104B2 (en) * 2016-09-30 2019-01-08 Arm Limited Instruction predecoding

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4931928A (en) * 1988-11-09 1990-06-05 Greenfeld Norton R Apparatus for analyzing source code
US4916810A (en) * 1989-05-12 1990-04-17 Amp Incorporated Method and apparatus for terminating wires to terminals
JPH03126133A (ja) * 1989-10-11 1991-05-29 Matsushita Electric Ind Co Ltd コンパイラ処理方法
US5293629A (en) * 1990-11-30 1994-03-08 Abraxas Software, Inc. Method of analyzing computer source code

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011113147A (ja) * 2009-11-24 2011-06-09 Nomura Research Institute Ltd ソース解析プログラム、プリプロセッサ、レキサ、および構文木解析プログラム
JP2011113148A (ja) * 2009-11-24 2011-06-09 Nomura Research Institute Ltd マクロ展開方法およびプリプロセッサ
CN102855306A (zh) * 2012-08-21 2013-01-02 飞天诚信科技股份有限公司 一种解析源文件的方法和装置

Also Published As

Publication number Publication date
US5701487A (en) 1997-12-23
EP0735466A3 (en) 1997-05-02
KR960035260A (ko) 1996-10-24
EP0735466A2 (en) 1996-10-02
CA2170939A1 (en) 1996-09-28

Similar Documents

Publication Publication Date Title
JPH08314728A (ja) ソースプログラムをオブジェクトプログラムに変換する方法および装置
JP4140980B2 (ja) プログラムツリーを表示するコンピュータプログラムの構文依存しない表示方法
JP2609093B2 (ja) ソフトウエアプログラムを生成するための装置及びその方法
US7162709B2 (en) System and method for common code generation
US5870608A (en) Method and apparatus for displaying text including context sensitive information derived from parse tree
JPH1078959A (ja) エッジデータ構造を統一する方法
JPS6375835A (ja) 目的コ−ド、プログラム・リスト及び設計文書を生成する装置
JP2002116914A (ja) コンパイラ
JPH10326255A (ja) 言語から独立したメッセージの操作方法
US20060200796A1 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
US7213243B2 (en) Program optimization by unused data item
GB2420638A (en) Method of substituting code fragments in Internal Representation
JP3003459B2 (ja) プログラム作成支援装置
JPH1185536A (ja) 原始プログラムのエラー自動修正装置及び方法
JP3248935B2 (ja) ソースプログラム解析処理装置
JP3417960B2 (ja) 文章校正支援方法および装置
KR970011897B1 (ko) 언어해석 처리장치
CN114780265A (zh) 一种基于dsl的跨系统服务调用方法、装置及相关设备
JPH08335228A (ja) テストパターン生成方法及び論理シミュレーション方法
Albano Jr A transportable cross-assembler
JP2000132405A (ja) インライン展開処理装置及び方法
WO1997007452A1 (en) Programmable compiler
JPH03186933A (ja) 言語処理システムのシンボル処理方式
JPH0695888A (ja) 問題向き言語コンパイラ処理方式
JPH052493A (ja) コンパイル方式