(57)【特許請求の範囲】
【請求項１】
原始プログラムを目的のソースプログラムへ変換するための原始プログラム自動変換装置であって、
前記原始プログラムを構成するファイルの相互関連を確認して各ファイルツリーの情報ファイルを作成する入力依存性チェック手段（図１）と、
前記原始プログラムをマクロ展開してトークンを取得し、それぞれの前記トークンにそのデータ内容を示すトークンデータを付加し、それぞれの前記ファイルツリー毎に、全部の前記トークンとそれらに付加される前記トークンデータとの集合体をトークン構造体として生成するトークン構造体生成手段（図４）と、
前記ファイルツリー毎の前記トークン構造体の前記トークンデータについて、変数・関数であるか、マイクロコンピュータ差分であるか及びマクロであるかを検査し、その結果を用いて前記トークンデータを修正して、それぞれの前記ファイルツリー毎に、修正された前記トークン構造体を登録した個別データベースファイル（７５）を生成するとともに、前記トークン構造体の文字列のうちマクロ及び偽データを含む文字列を登録した個別中間ファイル（７６）をそれぞれの前記ファイルツリー毎に生成する個別ファイル生成手段（図６、図７）と、
前記ファイルツリー毎に前記個別データベースファイルについて、１つのファイルにつなぎあわせ、該ファイル毎に分解して中間ファイルとファイル別データベースファイルとを生成し、該ファイル別データベースファイルについて重複部分を削除し、重複部分が削除された前記個別データベースファイルをつなぎ合わせて最終データベースファイル（１１５）を生成する手段（図８〜図１１）と、
前記マイクロコンピュータ差分に基づいて、前記最終データベースファイルと前記中間ファイルとを前記目的のソースプログラムに変換する変換手段（図１２〜図１５）と、
前記目的のソースプログラムを構成するファイル間の関連を確認してファイルの過不足を確認する確認手段（段落００５６）と、
を具備することを特徴とする原始プログラム自動変換装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、特定のマイクロコンピュータ用に開発されたＣ言語記述による原始プログラムに基づいて、変換先のマイクロコンピュータで実行可能なＣ言語記述による目的プログラムを生成するソースプログラム変換装置及び方法に関する。
【０００２】
なお、この明細書において、「原始プログラム」という語は特定のマイクロコンピュータの環境で動作することができるソースプログラムを意味し、「目的プログラム」という語は変換先のマイクロコンピュータの環境で動作可能なソースプログラムを意味し、「マイクロコンピュータ差分」という語は、変換元のマイクロコンピュータと変換先のマイクロコンピュータとの間のハードウェア及びコンパイラに関する差異を意味し、「リバース」という語はデータベースをＣ言語で記載された目的プログラムへ生成する処理を意味する。
【０００３】
【従来の技術】
マイクロコンピュータへの組み込み開発において、システムの複雑化や多機能化により、スペックの高いマイクロコンピュータに移行する場合等、ソースプログラムの変更を行い、新しいソースプログラムを作成する必要がある場面が多くある。しかし、特定のマイクロコンピュータ用に開発されたソースプログラムを別のマイクロコンピュータに使用するには、双方のマイクロコンピュータの特性や使用されるコンパイラが異なるため、記述方法を変更する必要がある。しかも、変換対象となる、即ち変換元のプログラムは、保有する全プログラムになる場合があり、変換規模は膨大なものとなる。また、変換の際には品質の高い変換が求められるが、各マイクロコンピュータによって固有のマイクロコンピュータ差分が存在するため、変換作業の内容は多種多様にならざるを得ない。
【０００４】
従来のソースプログラムの変換方法では、原始プログラムに存在する固有のマイクロコンピュータ差分にあたる文字列を検索し、変換個所と変換内容を確認した上で、原始プログラムを書き換えることで目的プログラムを作成している。しかしながら、原始プログラムを新しい記述に変換する際、文字列の一致検索だけでは、文法をまったく無視している為、正確な変換は困難であった。また、正確に変換を行うためには、原始プログラムを構文解析し、語句単位の意味を解析する必要があるが、プリプロセッサが出力する展開された中間プログラムだけでは正確な解析ができても、ソースプログラムを元通りに生成することは困難であった。
【０００５】
【発明が解決しようとする課題】
本発明はこうした課題を解決するために提案されたものであり、本発明は、原始プログラムに対して、詳細部までの構文解析を行い、正確に変換情報を入手した上で自動変換を行い、目的プログラムを作成することが可能なソースプログラム自動変換装置及び方法を提供することにある。
【０００６】
【課題を解決するための手段】
前記目的を達成するために、本発明は、
原始プログラムを目的プログラムへ変換するための原始プログラム自動変換装置であって、
前記原始プログラムを構成するファイルの相互関連を確認してファイルツリー情報ファイルを作成する入力依存性チェック手段（図１）と、
前記原始プログラムをマクロ展開してトークンを取得し、それぞれの前記トークンにそのデータ内容を示すトークンデータを付加し、それぞれの前記ファイルツリー毎に、全部の前記トークンとそれらに付加される前記トークンデータとの集合体をトークン構造体として生成するトークン構造体生成手段（図４）と、
前記ファイルツリー毎の前記トークン構造体の前記トークンデータについて、変数・関数であるか、マイクロコンピュータ差分であるか及びマクロであるかを検査し、その結果を用いて前記トークンデータを修正して、それぞれの前記ファイルツリー毎に、修正された前記トークン構造体を登録した個別データベースファイルを生成するとともに、前記トークン構造体の文字列のうちマクロ及び偽データを含む文字列を登録した個別中間ファイルを生成する個別ファイル生成手段（図６）と、
前記ファイルツリー毎に前記個別データベースについて重複部分を削除し、重複部分が削除された前記個別データベースをつなぎ合わせて最終データベースを生成する最終データベース生成手段（図８〜図１０）と、
前記差異に基づいて前記最終データベースを前記目的プログラムに変換する変換手段（図１２〜図１５）と、
前記目的プログラムを構成するファイル間の過不足を確認する確認手段と、
を具備することを特徴とする原始プログラム自動変換装置、
を提供する。
【０００７】
【作用】
本発明に係るソースプログラム自動変換装置は、変換元の特定のマイクロコンピュータと変換先の目的のマイクロコンピュータとの間のマイクロコンピュータ差分により生まれる記述の違いを自動検出し、それを自動修正もしくはリストアップして開発作業効率向上を目指す。
【０００８】
【発明の実施の形態】
以下、本発明に係るソースプログラム自動変換装置の一つの実施の形態について図１〜図１６を参照して説明する。
【０００９】
図１は、上記自動変換装置において原始プログラムを目的プログラムへ自動変換するための８つのステップ、即ち、入力依存性チェック、データベース作成、データベース一体化、表示データ作成、自動変換、ユーザー変換、リバース及び出力依存性チェックのステップの相互関係とそれらのステップで実行される処理手順を示したものであり、各ステップにおける入力ファイルと出力ファイルは下記の表1に示すとおりである。
【００１０】
【表１】
0003584204.tif 000002
【００１１】
以下、表１における８つのステップのそれぞれについて、順に説明する。
ａ）入力依存性チェック
プログラムの自動変換のために本発明に係るソースプログラム自動変換装置に入力ファイルを設定した際、原始プログラムの構成を知る必要がある。例えば、インクルードファイルが１つ欠けている状態でも、正確な構文解析を行うことができない。このため、「入力依存性チェック」のステップにおいては、原始プログラムを構成するファイル間の関連を確認し、ファイルの過不足が無いか否かを確認する。こうしたチェックの目的で、例えば図２に示すような、ファイルツリーを作成するもととなるファイル、即ちファイルツリー情報ファイル（図１の(2)）が出力される。
【００１２】
ｂ）データベース作成
「データベース作成」のステップは、「独自マクロ展開」、「トークン構造体作成」、「独自構文解析」及び「データベース出力」の４つのサブステップからなる。以下、図３に示す原始プログラムを例に取って、図１の「データベース作成」のステップを説明する。このステップにおいては、まず、原始プログラムのトークンを１つずつ順番に取得し、解析する。その結果、従来技術における展開では、図３の(2)の矢印Ｘ、Ｙで指示するように、マクロや偽の部分がなくなってしまう。
【００１３】
しかし、本発明においては、図３の(3)に示すように、原始プログラムをマクロ展開した上で、１トークン毎にトークンデータ（後述の表３を参照されたい）を付加し、メモリ上に整列させる。全部のトークンとそれらに付加されるトークンデータとの集合体を「トークン構造体」と呼ぶことにする。トークン構造体の文字列がマクロである場合や条件コンパイルで「偽」の部分の場合には、それらを中間ファイルに出力する。なお、「中間ファイル」とは、下記の表２に示すフォーマットを持つ各種のファイルの総称である。
【００１４】
【表２】
0003584204.tif 000003
【００１５】
同時に、トークン構造体には、中間ファイルのデータとリンクした専用番号を入力する。例えば、図３の(3)においては、専用番号「／＊ｉｎｎｏ１＊＊／」や「／＊＊ｍｍｎｏ１＊＊／」が付され、この専用番号が付された形で文字列は中間ファイルに保持される。これにより、従来の変換方法においては消えてしまう文字列を保存しておくことを可能とする。
以上説明した処理によって、図１の「データベース作成」のステップにおける「独自マクロ展開」及び「トークン構造体作成」のサブステップが行われたことになる。これを図４により詳細に説明すると、工程４１において、入力ソースプログラムの１トークンを順番に取得し、工程４２においてトークンがプリプロセッサコマンド（例えば、#define、#if、#ifdef、#ifndef、#else、#elif、#endif、#pragma、#include等）であれば、工程４３において、各コマンドを種類に分け、別々の中間ファイルに専用番号と共に１コマンド分の文字列を出力する。
【００１６】
工程４２でプリプロセッサコマンドではないと判定されたときには、工程４４においてコメントであるか否かが判定され、コメントであると判定されたときには、工程４５において、コメント用中間ファイルに１コメント分の専用番号と共に文字列を出力する。工程４３、４５の後、及び、工程４４でコメントではないと判定されたとき、工程４６、４７において、専用番号をトークン構造体に入力する。以上の工程は、入力ソースプログラム（原始プログラム）のファイル数分すべて行われ、トークン構造体４８を１ファイルツリー毎に作成する。
【００１７】
こうして作成されたトークン構造体４８を構文解析することで、１つ1つのトークンの意味付けがされる。本発明に係るソースプログラム自動変換装置は、その内部に、原始プログラムのマイクロコンピュータ差分に関係する情報を集めた情報ファイルを持っており、この情報ファイルを参照して、トークン毎に、表３に示すデータ内容が取得され、トークン構造体の内容が埋められていく。
【００１８】
【表３】
0003584204.tif 000004
【００１９】
図５はトークン構造体の構成を説明するための図である。図５において、四角で囲まれた部分が表３のトークンデータを示しており、これら全部を含むものがトークン構造体である。１つ１つのトークンデータは、図５に示すように、メモリ上で前後のトークンデータのアドレスを持つ。これにより、個々の情報をつなぎ合わせて考えることができ、トークン構造体上での構文解析が可能となる。
【００２０】
構文解析が終了すると、各トークン構造体におけるトークンデータが入力されていき、テキストファイルの形で出力される。これにより、１ファイルツリー毎のデータベースが作成される。
【００２１】
「独自マクロ展開」及び「トークン構造体作成」のサブステップに続いて、図６の「独自構文解析」及び「データベース出力」のサブステップが実行される。即ち、図４のサブステップで作成されたトークン構造体４８を用いて、工程６１においてトークンデータが取得される。工程６１において取得されたトークンデータが変数・関数テーブルに登録されたデータと一致するならば（工程６２）、変数・関数テーブルに登録されているデータを現在のトークンデータに追加し（工程６３）、工程６１で取得されたトークンデータがマイクロコンピュータ差分テーブルに登録されたデータと一致するならば（工程６４）、現在のトークンデータにマイクロコンピュータ差分データを追加し（工程６５）、工程６１で取得したトークンデータがマクロテーブルに登録されたデータと一致するならば（工程６６）、元マクロであるマクロ名を現在のトークンデータに追加する（工程６７）。更に、工程６２、６４及び６６で不一致と判定されたとき、変数・関数宣言部ならば、宣言されている名前を変数・関数テーブルに登録する（工程６８）。以上の工程６１〜６８は全部のファイルが終了するまで反復され、全ファイルが終了すると、工程６９においてトークン構造体をテキストファイルの形で出力する処理がなされる。このように、一般的な構文解析アルゴリズムとテーブルに登録されたデータとの比較を行ってデータベースに情報が追加されていき、個別中間ファイル及び個別データベースファイルが作成される。
図７にまとめて示すように、「データベース作成」のステップを構成する「独自マクロ展開」、「トークン構造体作成」、「独自構文解析」及び「データベース出力」のサブステップにおける処理内容を要約すると以下のとおりである。入力ソースプログラムを構文解析するために、コンパイラでいうプリプロセス処理を通すと、#define、#if、#ifdef、#else、#elif、#endif、#pragma、#include等のコンパイラ指令が消えてしまう。そこで、「独自マクロ展開」のサブステップ７１は、これらの消えてしまう情報とコメントを中間ファイルに保存するようにして構文解析が可能な状態を作り、目的プログラムの生成を可能とする。
【００２２】
「トークン構造体作成」のサブステップ７２においては、「独自マクロ展開」のサブステップで解析し終えた状態を、１トークン毎の情報を保持できるメモリに入力していく。１トークン中で取得することができるデータは２７個あり、現時点でわかるトークンが存在する場所を示すファイル名やデータは、この段階で埋められる。１トークン情報をメモリ上ですべて順番につなぐことで、１つのデータ配列が作成される。
【００２３】
「独自構文解析」のサブステップ７３においては、「トークン構造体作成」のサブステップ７２で作成されたトークン構造体のつながりを見ていくことで、構文解析が行われる。構文解析においては、変数、関数の宣言部が見付かると、以後、そのトークンに対しては、すべてそれらの情報が付加される。更に、入力ソースプログラム専用のマイクロコンピュータ差分の文字情報を内部に持っており、それと照合することでマイクロコンピュータ差分の発見を行う。
【００２４】
「データベース出力」のサブステップ７４は、独自構文解析済みのトークン構造体を、決められたフォーマットで個別中間ファイル及び個別データベースファイルに出力する。
【００２５】
以上のサブステップ７１〜７４は１ファイルツリー毎に行われる。そのため、出力される個別データベース７５と個別中間ファイル７６とはすべて、入力ソースプログラムのファイルツリーの構成のとおりに出力される。
【００２６】
ｃ）データベース一体化
「データベース作成」のステップの後に、「データベース一体化」のステップが実行される。「データベース一体化」のステップは、「データベースリンク」、「中間ファイル整理」、「共通部分一体化」及び「最終データベース出力」の４つのサブステップからなる。
【００２７】
図８は、「データベース一体化」のステップにおける処理手順を、図２で示すシステム「Ａ」を入力した場合を例に取って概略的に示している。即ち、前の「データベース作成」のステップで出力されたデータベースは、図８の(1)に示すように、ファイルツリー毎に出力された状態である。そこで、データベースの内容に含まれている「ファイル名」の項目でソートを掛け、図８の(2)に示すように、データベースをファイル毎に分解する。
【００２８】
「データベース作成」のステップで出力される中間ファイルには、表２に示すフォーマットの情報が全部は入力されていない状態にあるので、分解された個別のデータベースを参照して、各情報を中間ファイルに追加する。図８の(2)に示すとおり、ファイル毎に分解されたデータベースを見ると、何回も重複しているファイルが存在していることがわかる。そこで、重複しているデータが存在するファイルに対して、「行数」でソートを掛け、同じ行内のデータベースに含まれる情報が全く同一である場合には一方のデータベースを削除し、情報が異なる場合には変換不能情報をデータベースに追加する。この処理を、重複しているファイル分繰り返して行い、図８の(3)に示すように、重複データの無いファイル別のデータベースを作成する。これを１つのファイルにつなぎ合わせ、図８の(4)のようにデータベースを完成する。
【００２９】
以上の処理手順を図９及び図１０を用いて詳細に説明する。まず、図９は、「データベース一体化」のステップの中の前半である「データベースリンク」及び「中間ファイル整理」のサブステップにおける処理内容を示している。工程９１において、個別データベースファイル７５及び個別中間ファイル７６について、１ファイルツリー毎のデータベースを１つの中間データベースファイルにつなぎ合わせる。工程９２において、出来上がった中間データベースファイルを「ファイル名」でソートし、ファイル毎に分解する。次いで、工程９３において、ファイル毎のデータベースを参照して、表２に示す情報を中間ファイルに追加する。こうして、「中間ファイル整理」のサブステップにより、ファイル別データベースファイル９４と中間ファイル９５とが出力される。
【００３０】
「中間ファイル整理」のサブステップに続いて、図１０に示す「共通部分一体化」及び「最終データベース出力」のサブステップが実行される。同図において、工程１０１において、ファイル別データベースファイル９４をデータベース中の「行数」でソートする。工程１０２において、重複データに対して行単位でデータの比較が行われる。データが同じであることが工程１０３において判定されると、工程１０４において重複データの一方が削除される。工程１０３においてデータが同じではないと判定されたときには、工程１０５において変更不能情報がデータベースに追加される。以上の工程１０１〜１０５は全ファイルについて終了するまで反復され、全ファイルについて処理が終了したことが工程１０６において判定されると、工程１０７は、全ファイルをつなぎ合わせて１つのデータベースとして出力する。
【００３１】
このように、「共通部分一体化」及び「最終データベース出力」のサブステップにより、ファイル毎にデータベースを整列した後、すべてのファイルを１つにまとめる作業が行われて、最終データベースファイル１０８が出力されることになる。
【００３２】
以上説明した「データベース一体化」のステップは図１１のフロー図に示すようにまとめることができ、「データベースリンク」、「中間ファイル整理」、「共通部分一体化」及び「最終データベース出力」のサブステップにより中間ファイルとデータベースファイルとが出力される。即ち、「データベースリンク」のサブステップ１１１においては、前の「データベース作成」のステップで作られた個別データベースファイル７５を、そのデータベースを構成するファイル毎に、すべて１つのファイルにつなぎ合わせる。したがって、登録されたファイル数分のデータベースファイルが存在することになる。
【００３３】
次いで、「中間ファイル整理」のサブステップ１１２においては、前の「データベース作成」のステップで作られた個別中間ファイル７６に対して、表２のフォーマットどおりにデータベースを参照して情報を付加する。「共通部分一体化」のサブステップ１１３は、「データベースリンク」のサブステップ１１１で出来上がった各ファイル毎のデータに対して、重複する部分を一体化する処理を行う。「最終データベース出力」のサブステップ１１４は、分解されたファイルをつなぎ合わせて１つの最終データベースを出力する。こうして、データベースファイル１１５と中間ファイル１１６とが作成される。
【００３４】
ｄ）表示データ作成
「表示データ作成」のステップは、「データベース一体化」のステップで出力されたデータベースファイル１１５の情報を部分的に抽出してｃｓｖ形式（カンマ区切り形式）のファイルにすることにより、それぞれの関連データだけをまとめたフォーマットで表示するものであり、「データベース読み込み」及び「表示データ作成」の２つのサブステップを経て表示データファイル（図１の(5)）を出力する。
【００３５】
「表示データ作成」のステップにより表示されるデータは、変数に関する情報、関数に関する情報、マクロに関する情報、特定のマイクロコンピュータ固有のマイクロコンピュータ差分に関する情報であるが、後述の「自動変換」のステップにおいて必要になるデータはマイクロコンピュータ差分情報である。
【００３６】
ｅ）自動変換
「データベース一体化」のステップの後、さらに、「自動変換」のステップが実行される。このステップは、「データベース一体化」のステップで出力されたデータベースファイル１１５及び中間ファイル１１６を参照して、マイクロコンピュータ差分情報の種類の中からどの項目に対して変換を行うかを選択した上で開始される。
【００３７】
「自動変換」のステップは図１２に示す手順にしたがって行われる。工程１２１において、「データベース一体化」のステップで出力されたデータベースファイル１１５及び中間ファイル１１６を参照して、１トークン分の情報をメモリに読み込み、工程１２２において、「データベース作成」のステップで追加したマイクロコンピュータ差分情報番号（後述の図１３の(1)に示す）を検索する。番号の付されたトークンデータ、即ち、トークン構造体の中の１トークンに対するデータを見つけることができたら、工程１２３において、各マイクロコンピュータ差分情報を所定の変換アルゴリズムに通し、場合に応じて、工程１２４において「トークン名」を変更し、工程１２５において「リバース文字列情報欄」にデータを追加する（後述の図１３の(2)参照）。また、変換対象が中間ファイル内にあった場合、工程１２６において当該中間ファイル内を変更する。さらに、工程１２７において、変換を行ったトークンデータに対しては「変更ビット」を立て、変換によりトークンデータが必要なくなった場合には「無効ビット」を立てる。
【００３８】
メモリ上の変換を終えると、工程１２８において、その情報をデータベースファイル上に更新する。さらに、目的プログラムを生成するときに複数行になってしまう情報は工程１２９においてリバース用ファイル１３０に書き込まれ、それに対応して、トークンデータには専用の番号が追加される。以上の工程１２１〜１２９をデータベースファイルの終わりまで繰り返し行い、工程１３１において全データの更新を終了したと判定すると、リバース用ファイル１３０と共に、変換後データベースファイル１３２、変換後中間ファイル１３３が出力される。
【００３９】
図１３は、図１２の工程１２２において、マイクロコンピュータ差分情報を検索し、マイクロコンピュータ差分情報ありの場合に行う処理を説明する図である。図１３において、マイクロコンピュータ差分情報欄に番号（図１３では５３）が記入されているデータベースが検索されると、当該データベースのトークン名、変更ビット、リバース文字列及び無効ビットが変更される。
【００４０】
図１２に示す「自動変換」のステップは、要するに、図１４に示す３つのサブステップにより実行されることになる。即ち、図１４において、「データベース一体化」のステップで出力されたデータベースファイル１１５及び中間ファイル１１６を参照して、「データベース読み込み」のサブステップ１４１が実行され、データベースファイル及び中間ファイルを１トークン毎にメモリに読み込む。工程１４１は図１２の工程１２１に対応する。次いで、「データベース変更」のサブステップ１４２において、１トークン分の情報からキーワードを検索し、キーワード別の検索手法により１トークン毎にデータベースを更新し、それをデータベースファイルのファイルの終わりまで反復し、置き換えを行う。工程１４２は図１２の工程１２２〜１２９に対応する。それに続いて「リバースファイル作成」のサブステップ１４３が実行され、目的プログラムを生成するためにデータベース上の１トークンが複数行のトークンと置換される場合、リバース専用のデータ保持領域に目的文字列を出力する。工程１４３は図１２の工程１３２に対応する。この結果、変換後データベースファイル１３２、変換後中間ファイル１３３及びリバース用ファイル１３０が作成される。
【００４１】
ｆ）ユーザー変換
「表示データ作成」のステップに続いて、「ユーザー変換」のステップが実行される。本発明に係るソースプログラム自動変換装置が図１２の工程１２２において抽出するマイクロコンピュータ差分には大きく分けて2種類あり、その１つは、自動変換が可能なマイクロコンピュータ差分、もう１つは、変換の際にプログラム作成者の設計情報が必要なマイクロコンピュータ差分である。本発明に係るソースプログラム自動変換装置は後者のマイクロコンピュータ差分に対して、自動変換のために、「表示データ作成」のステップで作成した表示データファイル上でプログラム作成者に変更を加えさせ、その変更された表示データをデータベースファイルに反映させる。これによって、すべてのマイクロコンピュータ差分が変換後中間ファイル及び変換後データベースファイル上で変換可能となる。
【００４２】
ｇ）リバース
「自動変換」のステップで出力された変換後データベースファイル１３２、変換後中間ファイル１３３及びリバース用ファイル１３０を参照して、「リバース」のステップが、図１５に示す手順にしたがって実行される。ここで、「リバース」とは、前記のとおり、データベースをＣ言語で記載された目的プログラムへ生成する処理を意味する。
【００４３】
「リバース」のステップにおいては、工程１５１において、変換後データベースファイル１３２、変換後中間ファイル１３３及びリバース用ファイル１３０に含まれるデータを、下記の表４に示す内容の各出力形式を選択し、どのようなフォーマットで出力するかを決定する。
【００４４】
【表４】
0003584204.tif 000005
【００４５】
次いで、工程１５２において、変換後のファイルを１行分メモリに読み込み、工程１５３において、トークンデータの各データを参照しながら判断を行って出力を行う。工程１５３で出力を判断する材料としては、「自動変換」のステップで追加されたデータが主になる。これを図１３の(2)を用いて説明すると、「無効ビット」が立っているトークンデータは出力をせず、「変更ビット」が立っている状態で「リバース文字列欄」に追加データがある場合はその文字列を出力し、無い場合は「トークン名」を出力する。「変更ビット」が立ってないトークンデータに関しては、「元マクロ」に原始プログラム上でのマクロ名がある場合はそれを出力し、「トークン名」に専用番号があれば中間ファイルに検索をかけて文字列を出力する。
【００４６】
しかし、この段階では、出力候補を決定しただけであって、まだ出力はされていない。次に、工程１５４において、「｛」、「｝」、switch文などのキーワードによって構文のネストを判断し、トークンの前に追加する空文の数を決定する。さらに、工程１５５において、出力フォーマットに合わせてこれらの情報を加味した上で、工程１５６において１トークン毎に出力する。以上の処理１５１〜１５６を全データベースファイル分だけ反復し、工程１５７が全データベースファイルについて処理が終了したと判定すると、目的プログラム１５８が出力される。
【００４７】
以上説明した「リバース」のステップは、要するに、図１６に示す３つのサブステップにより実行されることになる。図１６において、「出力フォーマット選択」のサブステップ１６１が変換後データベースファイル１３２、変換後中間ファイル１３３及びリバース用ファイル１３０を参照し、生成動作の実行形式にパラメータを渡すことで出力フォーマットを選択する。これは、生成動作に種類があり、データベースの内容をどのように参照するかで出力形態を変えることができるからである。工程１６１は図１５の工程１５１に対応する。
【００４８】
次いで、「データベース読み込み」のサブステップ１６２は、「自動変換」のステップで作成されたファイルを１行毎にメモリに読み込む。工程１６２は図１５の工程１５２に対応する。それに続いて、「出力ソースプログラム作成」のサブステップ１６３は、「出力フォーマット選択」のサブステップ１６１で選択したフォーマットに基づいて目的プログラム１５８を出力する。出力の際、構文のネストを判断し、構文毎に空文でネストを作成する。作成のポイントは「｛」及び「｝」であり、このトークンの出現でネストが作成されていく。また、特別なネストを作成する構文として、switch文がある。これらの構文の関係を解析しながら、１トークン毎に目的プログラム１５８が出力される。工程１６３は図１５の工程１５３〜１５７に対応する。
【００４９】
ｈ）出力依存性チェック
「出力依存性チェック」のステップは、目的プログラムを構成するファイル間の関連を確認してファイルの過不足が無いか否かを確認するために、「リバース」のステップで生成されたＣ言語の目的プログラム１５８に対して、「入力依存性チェック」のステップにおけると同様の方法で解析を行い、出力ファイルツリー情報ファイルを作成する。これは、本発明に係るソースプログラム自動変換装置により新規に生成されるファイル等もあるからである。出力ファイルツリー情報ファイルは、原始プログラムのファイルと新規に生成されたファイルとを組み合わせた構成を有しており、原始プログラムのファイル構成は変わらない。
【００５０】
【発明の効果】
以上、本発明に係るソースプログラム自動変換装置を詳細に説明したところから理解されるように、本発明は、従来の変換手法に比べて、特殊な構文解析方法により出力されるデータベースを使用して、より正確に変換個所が検出できるという格別の効果を奏する。さらに、他のマイクロコンピュータのマイクロコンピュータ差分情報を追加することで、自動変換できる種類を増やすことも可能になるだけでなく、データベースファイルの各種データを利用することにより、他の変換を行うことや、他の情報一覧を抽出することも可能になる。また、出力フォーマットもリバース処理での判断を変更することで、さらに多様なフォーマットで目的プログラムを作成することも可能になる。
【００５１】
これにより、変換が必要な該当個所を正確にすべて検出することができ、文字列検索だけでは発見することができなかった変換個所に対する変換も容易に行うことができる。さらに、一度データベースに結果を保持することで、部分的な変換からすべてに対する変換や繰り返し変換まで、変換方法を選択するという応用した使用方法が可能になり、変換作業に対する確認も容易に行えるようになる。
加えて、データベースから、或る規則をもとにプログラムを生成することで、生成規則を変更しさえすれば、多様なフォーマットで目的プログラムを作成することができる。
【図面の簡単な説明】
【図1】本発明に係るソースプログラム自動変換装置で実行される処理の概要を示すフロー図である。
【図2】或るシステム「Ａ」を構成するソースプログラムを示す図である。
【図3】或るシステムの具体的なソースの一例を示す図である。
【図4】図１における「独自マクロ展開」及び「トークン構造体作成」のサブステップにおける処理手順を示すフロー図である。
【図5】図３に示すソースにおけるトークン構造体のつながりを表す図である。
【図6】図１における「独自構文解析」及び「データベース出力」のサブステップにおける処理手順を示すフロー図である。
【図7】図１における「データベース作成」のステップにおいて実行されるサブステップを示すフローである。
【図8】本発明に係るソースプログラム自動変換装置におけるデータベースの並べ替えを説明するための図である。
【図9】図１における「データベースリンク」及び「中間ファイル整理」のサブステップをにおける処理手順を示すフロー図である。
【図10】図１における「共通部一体化」及び「最終データベース出力」のサブステップにおける処理手順を示すフロー図である。
【図11】図１における「データベース一体化」のステップにおいて実行されるサブステップを示すフロー図である。
【図12】図１の「自動変換」のステップにおける処理手順を示す図である。
【図13】図１２の工程１２２における「マイクロコンピュータ差分番号検索」を説明するための図である。
【図14】図１における「自動変換」において実行されるサブステップを示すフロー図である。
【図15】図１の「リバース」のステップにおいて実行される処理手順を示すフロー図である。
【図16】図１における「リバース」のステップにおいて実行されるサブステップを示すフロー図である。
【図１】
0003584204.tif 000006
【図２】
0003584204.tif 000007
【図３】
0003584204.tif 000008
【図４】
0003584204.tif 000009
【図５】
0003584204.tif 000010
【図６】
0003584204.tif 000011
【図７】
0003584204.tif 000012
【図８】
0003584204.tif 000013
【図９】
0003584204.tif 000014
【図１０】
0003584204.tif 000015
【図１１】
0003584204.tif 000016
【図１２】
0003584204.tif 000017
【図１３】
0003584204.tif 000018
【図１４】
0003584204.tif 000019
【図１５】
0003584204.tif 000020
【図１６】
0003584204.tif 000021