JP3584204B2 - 原始プログラム自動変換装置 - Google Patents
原始プログラム自動変換装置 Download PDFInfo
- Publication number
- JP3584204B2 JP3584204B2 JP2000221335A JP2000221335A JP3584204B2 JP 3584204 B2 JP3584204 B2 JP 3584204B2 JP 2000221335 A JP2000221335 A JP 2000221335A JP 2000221335 A JP2000221335 A JP 2000221335A JP 3584204 B2 JP3584204 B2 JP 3584204B2
- Authority
- JP
- Japan
- Prior art keywords
- file
- database
- token
- source program
- data
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
Description
【発明の属する技術分野】
本発明は、特定のマイクロコンピュータ用に開発されたC言語記述による原始プログラムに基づいて、変換先のマイクロコンピュータで実行可能なC言語記述による目的プログラムを生成するソースプログラム変換装置及び方法に関する。
【0002】
なお、この明細書において、「原始プログラム」という語は特定のマイクロコンピュータの環境で動作することができるソースプログラムを意味し、「目的プログラム」という語は変換先のマイクロコンピュータの環境で動作可能なソースプログラムを意味し、「マイクロコンピュータ差分」という語は、変換元のマイクロコンピュータと変換先のマイクロコンピュータとの間のハードウェア及びコンパイラに関する差異を意味し、「リバース」という語はデータベースをC言語で記載された目的プログラムへ生成する処理を意味する。
【0003】
【従来の技術】
マイクロコンピュータへの組み込み開発において、システムの複雑化や多機能化により、スペックの高いマイクロコンピュータに移行する場合等、ソースプログラムの変更を行い、新しいソースプログラムを作成する必要がある場面が多くある。しかし、特定のマイクロコンピュータ用に開発されたソースプログラムを別のマイクロコンピュータに使用するには、双方のマイクロコンピュータの特性や使用されるコンパイラが異なるため、記述方法を変更する必要がある。しかも、変換対象となる、即ち変換元のプログラムは、保有する全プログラムになる場合があり、変換規模は膨大なものとなる。また、変換の際には品質の高い変換が求められるが、各マイクロコンピュータによって固有のマイクロコンピュータ差分が存在するため、変換作業の内容は多種多様にならざるを得ない。
【0004】
従来のソースプログラムの変換方法では、原始プログラムに存在する固有のマイクロコンピュータ差分にあたる文字列を検索し、変換個所と変換内容を確認した上で、原始プログラムを書き換えることで目的プログラムを作成している。しかしながら、原始プログラムを新しい記述に変換する際、文字列の一致検索だけでは、文法をまったく無視している為、正確な変換は困難であった。また、正確に変換を行うためには、原始プログラムを構文解析し、語句単位の意味を解析する必要があるが、プリプロセッサが出力する展開された中間プログラムだけでは正確な解析ができても、ソースプログラムを元通りに生成することは困難であった。
【0005】
【発明が解決しようとする課題】
本発明はこうした課題を解決するために提案されたものであり、本発明は、原始プログラムに対して、詳細部までの構文解析を行い、正確に変換情報を入手した上で自動変換を行い、目的プログラムを作成することが可能なソースプログラム自動変換装置及び方法を提供することにある。
【0006】
【課題を解決するための手段】
前記目的を達成するために、本発明は、
原始プログラムを目的プログラムへ変換するための原始プログラム自動変換装置であって、
前記原始プログラムを構成するファイルの相互関連を確認してファイルツリー情報ファイルを作成する入力依存性チェック手段(図1)と、
前記原始プログラムをマクロ展開してトークンを取得し、それぞれの前記トークンにそのデータ内容を示すトークンデータを付加し、それぞれの前記ファイルツリー毎に、全部の前記トークンとそれらに付加される前記トークンデータとの集合体をトークン構造体として生成するトークン構造体生成手段(図4)と、
前記ファイルツリー毎の前記トークン構造体の前記トークンデータについて、変数・関数であるか、マイクロコンピュータ差分であるか及びマクロであるかを検査し、その結果を用いて前記トークンデータを修正して、それぞれの前記ファイルツリー毎に、修正された前記トークン構造体を登録した個別データベースファイルを生成するとともに、前記トークン構造体の文字列のうちマクロ及び偽データを含む文字列を登録した個別中間ファイルを生成する個別ファイル生成手段(図6)と、
前記ファイルツリー毎に前記個別データベースについて重複部分を削除し、重複部分が削除された前記個別データベースをつなぎ合わせて最終データベースを生成する最終データベース生成手段(図8〜図10)と、
前記差異に基づいて前記最終データベースを前記目的プログラムに変換する変換手段(図12〜図15)と、
前記目的プログラムを構成するファイル間の過不足を確認する確認手段と、
を具備することを特徴とする原始プログラム自動変換装置、
を提供する。
【0007】
【作用】
本発明に係るソースプログラム自動変換装置は、変換元の特定のマイクロコンピュータと変換先の目的のマイクロコンピュータとの間のマイクロコンピュータ差分により生まれる記述の違いを自動検出し、それを自動修正もしくはリストアップして開発作業効率向上を目指す。
【0008】
【発明の実施の形態】
以下、本発明に係るソースプログラム自動変換装置の一つの実施の形態について図1〜図16を参照して説明する。
【0009】
図1は、上記自動変換装置において原始プログラムを目的プログラムへ自動変換するための8つのステップ、即ち、入力依存性チェック、データベース作成、データベース一体化、表示データ作成、自動変換、ユーザー変換、リバース及び出力依存性チェックのステップの相互関係とそれらのステップで実行される処理手順を示したものであり、各ステップにおける入力ファイルと出力ファイルは下記の表1に示すとおりである。
【0010】
【表1】
【0011】
以下、表1における8つのステップのそれぞれについて、順に説明する。
a)入力依存性チェック
プログラムの自動変換のために本発明に係るソースプログラム自動変換装置に入力ファイルを設定した際、原始プログラムの構成を知る必要がある。例えば、インクルードファイルが1つ欠けている状態でも、正確な構文解析を行うことができない。このため、「入力依存性チェック」のステップにおいては、原始プログラムを構成するファイル間の関連を確認し、ファイルの過不足が無いか否かを確認する。こうしたチェックの目的で、例えば図2に示すような、ファイルツリーを作成するもととなるファイル、即ちファイルツリー情報ファイル(図1の(2))が出力される。
【0012】
b)データベース作成
「データベース作成」のステップは、「独自マクロ展開」、「トークン構造体作成」、「独自構文解析」及び「データベース出力」の4つのサブステップからなる。以下、図3に示す原始プログラムを例に取って、図1の「データベース作成」のステップを説明する。このステップにおいては、まず、原始プログラムのトークンを1つずつ順番に取得し、解析する。その結果、従来技術における展開では、図3の(2)の矢印X、Yで指示するように、マクロや偽の部分がなくなってしまう。
【0013】
しかし、本発明においては、図3の(3)に示すように、原始プログラムをマクロ展開した上で、1トークン毎にトークンデータ(後述の表3を参照されたい)を付加し、メモリ上に整列させる。全部のトークンとそれらに付加されるトークンデータとの集合体を「トークン構造体」と呼ぶことにする。トークン構造体の文字列がマクロである場合や条件コンパイルで「偽」の部分の場合には、それらを中間ファイルに出力する。なお、「中間ファイル」とは、下記の表2に示すフォーマットを持つ各種のファイルの総称である。
【0014】
【表2】
【0015】
同時に、トークン構造体には、中間ファイルのデータとリンクした専用番号を入力する。例えば、図3の(3)においては、専用番号「/*inno1**/」や「/**mmno1**/」が付され、この専用番号が付された形で文字列は中間ファイルに保持される。これにより、従来の変換方法においては消えてしまう文字列を保存しておくことを可能とする。
以上説明した処理によって、図1の「データベース作成」のステップにおける「独自マクロ展開」及び「トークン構造体作成」のサブステップが行われたことになる。これを図4により詳細に説明すると、工程41において、入力ソースプログラムの1トークンを順番に取得し、工程42においてトークンがプリプロセッサコマンド(例えば、#define、#if、#ifdef、#ifndef、#else、#elif、#endif、#pragma、#include等)であれば、工程43において、各コマンドを種類に分け、別々の中間ファイルに専用番号と共に1コマンド分の文字列を出力する。
【0016】
工程42でプリプロセッサコマンドではないと判定されたときには、工程44においてコメントであるか否かが判定され、コメントであると判定されたときには、工程45において、コメント用中間ファイルに1コメント分の専用番号と共に文字列を出力する。工程43、45の後、及び、工程44でコメントではないと判定されたとき、工程46、47において、専用番号をトークン構造体に入力する。以上の工程は、入力ソースプログラム(原始プログラム)のファイル数分すべて行われ、トークン構造体48を1ファイルツリー毎に作成する。
【0017】
こうして作成されたトークン構造体48を構文解析することで、1つ1つのトークンの意味付けがされる。本発明に係るソースプログラム自動変換装置は、その内部に、原始プログラムのマイクロコンピュータ差分に関係する情報を集めた情報ファイルを持っており、この情報ファイルを参照して、トークン毎に、表3に示すデータ内容が取得され、トークン構造体の内容が埋められていく。
【0018】
【表3】
【0019】
図5はトークン構造体の構成を説明するための図である。図5において、四角で囲まれた部分が表3のトークンデータを示しており、これら全部を含むものがトークン構造体である。1つ1つのトークンデータは、図5に示すように、メモリ上で前後のトークンデータのアドレスを持つ。これにより、個々の情報をつなぎ合わせて考えることができ、トークン構造体上での構文解析が可能となる。
【0020】
構文解析が終了すると、各トークン構造体におけるトークンデータが入力されていき、テキストファイルの形で出力される。これにより、1ファイルツリー毎のデータベースが作成される。
【0021】
「独自マクロ展開」及び「トークン構造体作成」のサブステップに続いて、図6の「独自構文解析」及び「データベース出力」のサブステップが実行される。即ち、図4のサブステップで作成されたトークン構造体48を用いて、工程61においてトークンデータが取得される。工程61において取得されたトークンデータが変数・関数テーブルに登録されたデータと一致するならば(工程62)、変数・関数テーブルに登録されているデータを現在のトークンデータに追加し(工程63)、工程61で取得されたトークンデータがマイクロコンピュータ差分テーブルに登録されたデータと一致するならば(工程64)、現在のトークンデータにマイクロコンピュータ差分データを追加し(工程65)、工程61で取得したトークンデータがマクロテーブルに登録されたデータと一致するならば(工程66)、元マクロであるマクロ名を現在のトークンデータに追加する(工程67)。更に、工程62、64及び66で不一致と判定されたとき、変数・関数宣言部ならば、宣言されている名前を変数・関数テーブルに登録する(工程68)。以上の工程61〜68は全部のファイルが終了するまで反復され、全ファイルが終了すると、工程69においてトークン構造体をテキストファイルの形で出力する処理がなされる。このように、一般的な構文解析アルゴリズムとテーブルに登録されたデータとの比較を行ってデータベースに情報が追加されていき、個別中間ファイル及び個別データベースファイルが作成される。
図7にまとめて示すように、「データベース作成」のステップを構成する「独自マクロ展開」、「トークン構造体作成」、「独自構文解析」及び「データベース出力」のサブステップにおける処理内容を要約すると以下のとおりである。入力ソースプログラムを構文解析するために、コンパイラでいうプリプロセス処理を通すと、#define、#if、#ifdef、#else、#elif、#endif、#pragma、#include等のコンパイラ指令が消えてしまう。そこで、「独自マクロ展開」のサブステップ71は、これらの消えてしまう情報とコメントを中間ファイルに保存するようにして構文解析が可能な状態を作り、目的プログラムの生成を可能とする。
【0022】
「トークン構造体作成」のサブステップ72においては、「独自マクロ展開」のサブステップで解析し終えた状態を、1トークン毎の情報を保持できるメモリに入力していく。1トークン中で取得することができるデータは27個あり、現時点でわかるトークンが存在する場所を示すファイル名やデータは、この段階で埋められる。1トークン情報をメモリ上ですべて順番につなぐことで、1つのデータ配列が作成される。
【0023】
「独自構文解析」のサブステップ73においては、「トークン構造体作成」のサブステップ72で作成されたトークン構造体のつながりを見ていくことで、構文解析が行われる。構文解析においては、変数、関数の宣言部が見付かると、以後、そのトークンに対しては、すべてそれらの情報が付加される。更に、入力ソースプログラム専用のマイクロコンピュータ差分の文字情報を内部に持っており、それと照合することでマイクロコンピュータ差分の発見を行う。
【0024】
「データベース出力」のサブステップ74は、独自構文解析済みのトークン構造体を、決められたフォーマットで個別中間ファイル及び個別データベースファイルに出力する。
【0025】
以上のサブステップ71〜74は1ファイルツリー毎に行われる。そのため、出力される個別データベース75と個別中間ファイル76とはすべて、入力ソースプログラムのファイルツリーの構成のとおりに出力される。
【0026】
c)データベース一体化
「データベース作成」のステップの後に、「データベース一体化」のステップが実行される。「データベース一体化」のステップは、「データベースリンク」、「中間ファイル整理」、「共通部分一体化」及び「最終データベース出力」の4つのサブステップからなる。
【0027】
図8は、「データベース一体化」のステップにおける処理手順を、図2で示すシステム「A」を入力した場合を例に取って概略的に示している。即ち、前の「データベース作成」のステップで出力されたデータベースは、図8の(1)に示すように、ファイルツリー毎に出力された状態である。そこで、データベースの内容に含まれている「ファイル名」の項目でソートを掛け、図8の(2)に示すように、データベースをファイル毎に分解する。
【0028】
「データベース作成」のステップで出力される中間ファイルには、表2に示すフォーマットの情報が全部は入力されていない状態にあるので、分解された個別のデータベースを参照して、各情報を中間ファイルに追加する。図8の(2)に示すとおり、ファイル毎に分解されたデータベースを見ると、何回も重複しているファイルが存在していることがわかる。そこで、重複しているデータが存在するファイルに対して、「行数」でソートを掛け、同じ行内のデータベースに含まれる情報が全く同一である場合には一方のデータベースを削除し、情報が異なる場合には変換不能情報をデータベースに追加する。この処理を、重複しているファイル分繰り返して行い、図8の(3)に示すように、重複データの無いファイル別のデータベースを作成する。これを1つのファイルにつなぎ合わせ、図8の(4)のようにデータベースを完成する。
【0029】
以上の処理手順を図9及び図10を用いて詳細に説明する。まず、図9は、「データベース一体化」のステップの中の前半である「データベースリンク」及び「中間ファイル整理」のサブステップにおける処理内容を示している。工程91において、個別データベースファイル75及び個別中間ファイル76について、1ファイルツリー毎のデータベースを1つの中間データベースファイルにつなぎ合わせる。工程92において、出来上がった中間データベースファイルを「ファイル名」でソートし、ファイル毎に分解する。次いで、工程93において、ファイル毎のデータベースを参照して、表2に示す情報を中間ファイルに追加する。こうして、「中間ファイル整理」のサブステップにより、ファイル別データベースファイル94と中間ファイル95とが出力される。
【0030】
「中間ファイル整理」のサブステップに続いて、図10に示す「共通部分一体化」及び「最終データベース出力」のサブステップが実行される。同図において、工程101において、ファイル別データベースファイル94をデータベース中の「行数」でソートする。工程102において、重複データに対して行単位でデータの比較が行われる。データが同じであることが工程103において判定されると、工程104において重複データの一方が削除される。工程103においてデータが同じではないと判定されたときには、工程105において変更不能情報がデータベースに追加される。以上の工程101〜105は全ファイルについて終了するまで反復され、全ファイルについて処理が終了したことが工程106において判定されると、工程107は、全ファイルをつなぎ合わせて1つのデータベースとして出力する。
【0031】
このように、「共通部分一体化」及び「最終データベース出力」のサブステップにより、ファイル毎にデータベースを整列した後、すべてのファイルを1つにまとめる作業が行われて、最終データベースファイル108が出力されることになる。
【0032】
以上説明した「データベース一体化」のステップは図11のフロー図に示すようにまとめることができ、「データベースリンク」、「中間ファイル整理」、「共通部分一体化」及び「最終データベース出力」のサブステップにより中間ファイルとデータベースファイルとが出力される。即ち、「データベースリンク」のサブステップ111においては、前の「データベース作成」のステップで作られた個別データベースファイル75を、そのデータベースを構成するファイル毎に、すべて1つのファイルにつなぎ合わせる。したがって、登録されたファイル数分のデータベースファイルが存在することになる。
【0033】
次いで、「中間ファイル整理」のサブステップ112においては、前の「データベース作成」のステップで作られた個別中間ファイル76に対して、表2のフォーマットどおりにデータベースを参照して情報を付加する。「共通部分一体化」のサブステップ113は、「データベースリンク」のサブステップ111で出来上がった各ファイル毎のデータに対して、重複する部分を一体化する処理を行う。「最終データベース出力」のサブステップ114は、分解されたファイルをつなぎ合わせて1つの最終データベースを出力する。こうして、データベースファイル115と中間ファイル116とが作成される。
【0034】
d)表示データ作成
「表示データ作成」のステップは、「データベース一体化」のステップで出力されたデータベースファイル115の情報を部分的に抽出してcsv形式(カンマ区切り形式)のファイルにすることにより、それぞれの関連データだけをまとめたフォーマットで表示するものであり、「データベース読み込み」及び「表示データ作成」の2つのサブステップを経て表示データファイル(図1の(5))を出力する。
【0035】
「表示データ作成」のステップにより表示されるデータは、変数に関する情報、関数に関する情報、マクロに関する情報、特定のマイクロコンピュータ固有のマイクロコンピュータ差分に関する情報であるが、後述の「自動変換」のステップにおいて必要になるデータはマイクロコンピュータ差分情報である。
【0036】
e)自動変換
「データベース一体化」のステップの後、さらに、「自動変換」のステップが実行される。このステップは、「データベース一体化」のステップで出力されたデータベースファイル115及び中間ファイル116を参照して、マイクロコンピュータ差分情報の種類の中からどの項目に対して変換を行うかを選択した上で開始される。
【0037】
「自動変換」のステップは図12に示す手順にしたがって行われる。工程121において、「データベース一体化」のステップで出力されたデータベースファイル115及び中間ファイル116を参照して、1トークン分の情報をメモリに読み込み、工程122において、「データベース作成」のステップで追加したマイクロコンピュータ差分情報番号(後述の図13の(1)に示す)を検索する。番号の付されたトークンデータ、即ち、トークン構造体の中の1トークンに対するデータを見つけることができたら、工程123において、各マイクロコンピュータ差分情報を所定の変換アルゴリズムに通し、場合に応じて、工程124において「トークン名」を変更し、工程125において「リバース文字列情報欄」にデータを追加する(後述の図13の(2)参照)。また、変換対象が中間ファイル内にあった場合、工程126において当該中間ファイル内を変更する。さらに、工程127において、変換を行ったトークンデータに対しては「変更ビット」を立て、変換によりトークンデータが必要なくなった場合には「無効ビット」を立てる。
【0038】
メモリ上の変換を終えると、工程128において、その情報をデータベースファイル上に更新する。さらに、目的プログラムを生成するときに複数行になってしまう情報は工程129においてリバース用ファイル130に書き込まれ、それに対応して、トークンデータには専用の番号が追加される。以上の工程121〜129をデータベースファイルの終わりまで繰り返し行い、工程131において全データの更新を終了したと判定すると、リバース用ファイル130と共に、変換後データベースファイル132、変換後中間ファイル133が出力される。
【0039】
図13は、図12の工程122において、マイクロコンピュータ差分情報を検索し、マイクロコンピュータ差分情報ありの場合に行う処理を説明する図である。図13において、マイクロコンピュータ差分情報欄に番号(図13では53)が記入されているデータベースが検索されると、当該データベースのトークン名、変更ビット、リバース文字列及び無効ビットが変更される。
【0040】
図12に示す「自動変換」のステップは、要するに、図14に示す3つのサブステップにより実行されることになる。即ち、図14において、「データベース一体化」のステップで出力されたデータベースファイル115及び中間ファイル116を参照して、「データベース読み込み」のサブステップ141が実行され、データベースファイル及び中間ファイルを1トークン毎にメモリに読み込む。工程141は図12の工程121に対応する。次いで、「データベース変更」のサブステップ142において、1トークン分の情報からキーワードを検索し、キーワード別の検索手法により1トークン毎にデータベースを更新し、それをデータベースファイルのファイルの終わりまで反復し、置き換えを行う。工程142は図12の工程122〜129に対応する。それに続いて「リバースファイル作成」のサブステップ143が実行され、目的プログラムを生成するためにデータベース上の1トークンが複数行のトークンと置換される場合、リバース専用のデータ保持領域に目的文字列を出力する。工程143は図12の工程132に対応する。この結果、変換後データベースファイル132、変換後中間ファイル133及びリバース用ファイル130が作成される。
【0041】
f)ユーザー変換
「表示データ作成」のステップに続いて、「ユーザー変換」のステップが実行される。本発明に係るソースプログラム自動変換装置が図12の工程122において抽出するマイクロコンピュータ差分には大きく分けて2種類あり、その1つは、自動変換が可能なマイクロコンピュータ差分、もう1つは、変換の際にプログラム作成者の設計情報が必要なマイクロコンピュータ差分である。本発明に係るソースプログラム自動変換装置は後者のマイクロコンピュータ差分に対して、自動変換のために、「表示データ作成」のステップで作成した表示データファイル上でプログラム作成者に変更を加えさせ、その変更された表示データをデータベースファイルに反映させる。これによって、すべてのマイクロコンピュータ差分が変換後中間ファイル及び変換後データベースファイル上で変換可能となる。
【0042】
g)リバース
「自動変換」のステップで出力された変換後データベースファイル132、変換後中間ファイル133及びリバース用ファイル130を参照して、「リバース」のステップが、図15に示す手順にしたがって実行される。ここで、「リバース」とは、前記のとおり、データベースをC言語で記載された目的プログラムへ生成する処理を意味する。
【0043】
「リバース」のステップにおいては、工程151において、変換後データベースファイル132、変換後中間ファイル133及びリバース用ファイル130に含まれるデータを、下記の表4に示す内容の各出力形式を選択し、どのようなフォーマットで出力するかを決定する。
【0044】
【表4】
【0045】
次いで、工程152において、変換後のファイルを1行分メモリに読み込み、工程153において、トークンデータの各データを参照しながら判断を行って出力を行う。工程153で出力を判断する材料としては、「自動変換」のステップで追加されたデータが主になる。これを図13の(2)を用いて説明すると、「無効ビット」が立っているトークンデータは出力をせず、「変更ビット」が立っている状態で「リバース文字列欄」に追加データがある場合はその文字列を出力し、無い場合は「トークン名」を出力する。「変更ビット」が立ってないトークンデータに関しては、「元マクロ」に原始プログラム上でのマクロ名がある場合はそれを出力し、「トークン名」に専用番号があれば中間ファイルに検索をかけて文字列を出力する。
【0046】
しかし、この段階では、出力候補を決定しただけであって、まだ出力はされていない。次に、工程154において、「{」、「}」、switch文などのキーワードによって構文のネストを判断し、トークンの前に追加する空文の数を決定する。さらに、工程155において、出力フォーマットに合わせてこれらの情報を加味した上で、工程156において1トークン毎に出力する。以上の処理151〜156を全データベースファイル分だけ反復し、工程157が全データベースファイルについて処理が終了したと判定すると、目的プログラム158が出力される。
【0047】
以上説明した「リバース」のステップは、要するに、図16に示す3つのサブステップにより実行されることになる。図16において、「出力フォーマット選択」のサブステップ161が変換後データベースファイル132、変換後中間ファイル133及びリバース用ファイル130を参照し、生成動作の実行形式にパラメータを渡すことで出力フォーマットを選択する。これは、生成動作に種類があり、データベースの内容をどのように参照するかで出力形態を変えることができるからである。工程161は図15の工程151に対応する。
【0048】
次いで、「データベース読み込み」のサブステップ162は、「自動変換」のステップで作成されたファイルを1行毎にメモリに読み込む。工程162は図15の工程152に対応する。それに続いて、「出力ソースプログラム作成」のサブステップ163は、「出力フォーマット選択」のサブステップ161で選択したフォーマットに基づいて目的プログラム158を出力する。出力の際、構文のネストを判断し、構文毎に空文でネストを作成する。作成のポイントは「{」及び「}」であり、このトークンの出現でネストが作成されていく。また、特別なネストを作成する構文として、switch文がある。これらの構文の関係を解析しながら、1トークン毎に目的プログラム158が出力される。工程163は図15の工程153〜157に対応する。
【0049】
h)出力依存性チェック
「出力依存性チェック」のステップは、目的プログラムを構成するファイル間の関連を確認してファイルの過不足が無いか否かを確認するために、「リバース」のステップで生成されたC言語の目的プログラム158に対して、「入力依存性チェック」のステップにおけると同様の方法で解析を行い、出力ファイルツリー情報ファイルを作成する。これは、本発明に係るソースプログラム自動変換装置により新規に生成されるファイル等もあるからである。出力ファイルツリー情報ファイルは、原始プログラムのファイルと新規に生成されたファイルとを組み合わせた構成を有しており、原始プログラムのファイル構成は変わらない。
【0050】
【発明の効果】
以上、本発明に係るソースプログラム自動変換装置を詳細に説明したところから理解されるように、本発明は、従来の変換手法に比べて、特殊な構文解析方法により出力されるデータベースを使用して、より正確に変換個所が検出できるという格別の効果を奏する。さらに、他のマイクロコンピュータのマイクロコンピュータ差分情報を追加することで、自動変換できる種類を増やすことも可能になるだけでなく、データベースファイルの各種データを利用することにより、他の変換を行うことや、他の情報一覧を抽出することも可能になる。また、出力フォーマットもリバース処理での判断を変更することで、さらに多様なフォーマットで目的プログラムを作成することも可能になる。
【0051】
これにより、変換が必要な該当個所を正確にすべて検出することができ、文字列検索だけでは発見することができなかった変換個所に対する変換も容易に行うことができる。さらに、一度データベースに結果を保持することで、部分的な変換からすべてに対する変換や繰り返し変換まで、変換方法を選択するという応用した使用方法が可能になり、変換作業に対する確認も容易に行えるようになる。
加えて、データベースから、或る規則をもとにプログラムを生成することで、生成規則を変更しさえすれば、多様なフォーマットで目的プログラムを作成することができる。
【図面の簡単な説明】
【図1】本発明に係るソースプログラム自動変換装置で実行される処理の概要を示すフロー図である。
【図2】或るシステム「A」を構成するソースプログラムを示す図である。
【図3】或るシステムの具体的なソースの一例を示す図である。
【図4】図1における「独自マクロ展開」及び「トークン構造体作成」のサブステップにおける処理手順を示すフロー図である。
【図5】図3に示すソースにおけるトークン構造体のつながりを表す図である。
【図6】図1における「独自構文解析」及び「データベース出力」のサブステップにおける処理手順を示すフロー図である。
【図7】図1における「データベース作成」のステップにおいて実行されるサブステップを示すフローである。
【図8】本発明に係るソースプログラム自動変換装置におけるデータベースの並べ替えを説明するための図である。
【図9】図1における「データベースリンク」及び「中間ファイル整理」のサブステップをにおける処理手順を示すフロー図である。
【図10】図1における「共通部一体化」及び「最終データベース出力」のサブステップにおける処理手順を示すフロー図である。
【図11】図1における「データベース一体化」のステップにおいて実行されるサブステップを示すフロー図である。
【図12】図1の「自動変換」のステップにおける処理手順を示す図である。
【図13】図12の工程122における「マイクロコンピュータ差分番号検索」を説明するための図である。
【図14】図1における「自動変換」において実行されるサブステップを示すフロー図である。
【図15】図1の「リバース」のステップにおいて実行される処理手順を示すフロー図である。
【図16】図1における「リバース」のステップにおいて実行されるサブステップを示すフロー図である。
Claims (1)
- 原始プログラムを目的のソースプログラムへ変換するための原始プログラム自動変換装置であって、
前記原始プログラムを構成するファイルの相互関連を確認して各ファイルツリーの情報ファイルを作成する入力依存性チェック手段(図1)と、
前記原始プログラムをマクロ展開してトークンを取得し、それぞれの前記トークンにそのデータ内容を示すトークンデータを付加し、それぞれの前記ファイルツリー毎に、全部の前記トークンとそれらに付加される前記トークンデータとの集合体をトークン構造体として生成するトークン構造体生成手段(図4)と、
前記ファイルツリー毎の前記トークン構造体の前記トークンデータについて、変数・関数であるか、マイクロコンピュータ差分であるか及びマクロであるかを検査し、その結果を用いて前記トークンデータを修正して、それぞれの前記ファイルツリー毎に、修正された前記トークン構造体を登録した個別データベースファイル(75)を生成するとともに、前記トークン構造体の文字列のうちマクロ及び偽データを含む文字列を登録した個別中間ファイル(76)をそれぞれの前記ファイルツリー毎に生成する個別ファイル生成手段(図6、図7)と、
前記ファイルツリー毎に前記個別データベースファイルについて、1つのファイルにつなぎあわせ、該ファイル毎に分解して中間ファイルとファイル別データベースファイルとを生成し、該ファイル別データベースファイルについて重複部分を削除し、重複部分が削除された前記個別データベースファイルをつなぎ合わせて最終データベースファイル(115)を生成する手段(図8〜図11)と、
前記マイクロコンピュータ差分に基づいて、前記最終データベースファイルと前記中間ファイルとを前記目的のソースプログラムに変換する変換手段(図12〜図15)と、
前記目的のソースプログラムを構成するファイル間の関連を確認してファイルの過不足を確認する確認手段(段落0056)と、
を具備することを特徴とする原始プログラム自動変換装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000221335A JP3584204B2 (ja) | 2000-07-21 | 2000-07-21 | 原始プログラム自動変換装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000221335A JP3584204B2 (ja) | 2000-07-21 | 2000-07-21 | 原始プログラム自動変換装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002041286A JP2002041286A (ja) | 2002-02-08 |
JP3584204B2 true JP3584204B2 (ja) | 2004-11-04 |
Family
ID=18715764
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000221335A Expired - Fee Related JP3584204B2 (ja) | 2000-07-21 | 2000-07-21 | 原始プログラム自動変換装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3584204B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4115511B1 (ja) | 2007-05-08 | 2008-07-09 | 株式会社システムズ | プログラムパターン分析装置、パターン出現状況情報生産方法、パターン情報生成装置、およびプログラム |
CN112540766A (zh) * | 2020-12-24 | 2021-03-23 | 山东高云半导体科技有限公司 | 现场可编程门阵列编码方法、装置和系统 |
-
2000
- 2000-07-21 JP JP2000221335A patent/JP3584204B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002041286A (ja) | 2002-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10698682B1 (en) | Computerized software development environment with a software database containing atomic expressions | |
US5361357A (en) | Method and apparatus for optimizing computer file compilation | |
Tairas et al. | Phoenix-based clone detection using suffix trees | |
JPS6375835A (ja) | 目的コ−ド、プログラム・リスト及び設計文書を生成する装置 | |
US20070169023A1 (en) | Restructuring computer programs | |
US20050188323A1 (en) | Template creation apparatus and creation method | |
US11294665B1 (en) | Computerized software version control with a software database and a human database | |
JPH0816378A (ja) | プログラム・リバース解析方法および装置 | |
JPH11249875A (ja) | プログラミング支援方法及びその装置 | |
US20040010780A1 (en) | Method and apparatus for approximate generation of source code cross-reference information | |
JP3584204B2 (ja) | 原始プログラム自動変換装置 | |
Anderson et al. | Supporting analysis of SQL queries in PHP AiR | |
JPH0736680A (ja) | 並列化プログラム開発支援装置 | |
CN107577476A (zh) | 一种基于模块划分的安卓系统源码差异性分析方法、服务器及介质 | |
Mennie et al. | Giving meaning to macros | |
Grigorev et al. | String-embedded language support in integrated development environment | |
JP3194372B2 (ja) | パーザ生成器プリプロセッサシステム、パーザ生成器用プリプロセス方法 | |
JP2002108652A (ja) | プログラムの相関関係検出装置 | |
US20240202522A1 (en) | Device and method for generating deep learning model graph and abstract syntax tree for integrated compiler | |
JPH06290039A (ja) | プログラム変更方法 | |
Rahman | Pattern analysis of TXL programs | |
Hunold et al. | Pattern-based refactoring of legacy software systems | |
JPH01177165A (ja) | 配列の定義/引用関係検査方式 | |
JP2000242485A (ja) | プログラミング言語変換プログラム開発支援システム、方法及び記録媒体 | |
Yoshida et al. | A Pattern Search Method for Unpreprocessed C Programs based on Tokenized Syntax Trees |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040109 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040309 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040423 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040430 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040709 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040802 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20070806 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100806 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130806 Year of fee payment: 9 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |