JP2008165342A - ソースコード生成方法及び装置並びにプログラム - Google Patents
ソースコード生成方法及び装置並びにプログラム Download PDFInfo
- Publication number
- JP2008165342A JP2008165342A JP2006351860A JP2006351860A JP2008165342A JP 2008165342 A JP2008165342 A JP 2008165342A JP 2006351860 A JP2006351860 A JP 2006351860A JP 2006351860 A JP2006351860 A JP 2006351860A JP 2008165342 A JP2008165342 A JP 2008165342A
- Authority
- JP
- Japan
- Prior art keywords
- source code
- processing
- platform
- analyzed
- processed
- 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
Links
Images
Landscapes
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【課題】 複数のプラットフォームまたはライブラリに対応するための差異部分を自動的に変更して出力することで、ソースコード生成システムを利用したソフトウェアの開発、修正、保守の効率を向上すること。
【解決手段】 ソースコードを生成する第1のステップと、生成されたソースコードをプログラム言語の文法定義に従って解析する解析する第2のステップと、解析済みのソースコードに対し、生成したソースコードを使用するプラットフォームに対応した加工ルールを適用し、前記解析済みのソースコードを加工し、プラットフォーム対応のソースコードを出力する第3のステップとを備える。
【選択図】 図1
【解決手段】 ソースコードを生成する第1のステップと、生成されたソースコードをプログラム言語の文法定義に従って解析する解析する第2のステップと、解析済みのソースコードに対し、生成したソースコードを使用するプラットフォームに対応した加工ルールを適用し、前記解析済みのソースコードを加工し、プラットフォーム対応のソースコードを出力する第3のステップとを備える。
【選択図】 図1
Description
本発明は、例えば携帯電話機等に実装するプログラムのソースコードを効率的に生成するのに用いて好適なソースコード生成方法及び装置、並びにソースコード生成プログラムに関するものである。
従来、ソフトウェア開発の作業効率を改善するために様々なソースコード生成装置またはプログラムが利用されている。
ソフトウェア開発のプロジェクトにおいては、ベースとなるプラットフォームのバージョンおよび構成などの差異によりそれぞれ対応するために一部を変更する必要がある。そのような変更をソースコード生成装置に反映させるためには、ソースコード生成装置の内部ロジックや生成されるソースコードの原型となるテンプレートを変更することにより反映されていた。これは、文字コードの異なる英語版OSと日本語版OSを対象としてソースコードを出力する場合も同様である。
これらの修正は、プラットフォームの変更内容に応じて開発者の手で適用される必要があり、同内容の修正がソースコード生成ロジックの複数個所またはソースコードの原型となるテンプレートの複数個所に影響する場合、それらの変更点はソースコード生成装置を開発・運営する技術者によって個々に修正されていた。
ソフトウェア開発のプロジェクトにおいては、ベースとなるプラットフォームのバージョンおよび構成などの差異によりそれぞれ対応するために一部を変更する必要がある。そのような変更をソースコード生成装置に反映させるためには、ソースコード生成装置の内部ロジックや生成されるソースコードの原型となるテンプレートを変更することにより反映されていた。これは、文字コードの異なる英語版OSと日本語版OSを対象としてソースコードを出力する場合も同様である。
これらの修正は、プラットフォームの変更内容に応じて開発者の手で適用される必要があり、同内容の修正がソースコード生成ロジックの複数個所またはソースコードの原型となるテンプレートの複数個所に影響する場合、それらの変更点はソースコード生成装置を開発・運営する技術者によって個々に修正されていた。
また、従来のソースコード生成装置では、生成するソースコードが動作対象とするプラットフォームにおいて、複数の修正が同一の箇所に影響する場合にも、これらの影響を共通して取り込む形で適切な出力ソースコードを開発者が作成した後に、ソースコード生成ロジックまたは原型となるテンプレートを変更することで対応していた。
このような公知技術文献の例として、テンプレートとプログラム設計情報を組み合わせて動的にソースコードを出力することにより、変更による影響をテンプレートに限定したソースコード生成を可能とした、下記の特許文献1などがある。
ソースコード生成装置において、出力するソースコードが何らかのプラットフォームおよびライブラリの仕様変更の影響を受ける場合で、かつソースコード生成装置の製造元と生成されたソースコードの動作対象となるプラットフォームまたはライブラリの製造元が異なる場合においては、ソースコード生成装置の開発元はプラットフォーム製造元メーカーのリリースに合わせてソースコード生成装置の生成ロジックやテンプレートを更新せざるを得ない状況となるという問題が発生していた。これは、ソースコード生成装置が、差異のある複数のプラットフォームを対象としたソースコードを出力しようとする場合も同様である。
この場合、ソースコード生成装置の出力ソースコードをテンプレート等で外部的に変更可能としているシステムでは、テンプレートの変更のみでソースコード生成ロジックの修正は不要となるが、ソースコードの原型となるテンプレートに影響するプラットフォーム側の修正が複数個所に及ぶ場合、同一のルールの修正を、ソースコード生成ロジックまたはテンプレートの複数個所に正確に適用しなければならず、修正が面倒であるという問題があった。これはソースコード生成装置が出力し得る多数のパターンに対して、常に適切なソースコードが出力されることを保証する必要があり、ソースコード生成装置またはテンプレートの修正と動作確認のために大きな作業量が発生する点が問題であった。
さらに、複数のプラットフォーム側の修正がソースコード生成ロジックまたはテンプレートの同一箇所に影響する場合、対応するプラットフォーム側の修正同士の影響を適切に判断して、それぞれのプラットフォーム側修正に対応する変更が互いに干渉しないように注意を払ってテンプレートを修正しなければならないという問題があった。
例えばプラットフォーム仕様において、ある変数型Aに変更が発生し、さらにAを引数に用いる関数Fの仕様も同時に変更された場合、関数Fを呼出している処理を含むソースコード生成ロジックまたはテンプレートに対して、関数Fのインタフェース修正とAの変数型の修正を同時に適用しなければならない。
この場合、ソースコード生成装置の出力ソースコードをテンプレート等で外部的に変更可能としているシステムでは、テンプレートの変更のみでソースコード生成ロジックの修正は不要となるが、ソースコードの原型となるテンプレートに影響するプラットフォーム側の修正が複数個所に及ぶ場合、同一のルールの修正を、ソースコード生成ロジックまたはテンプレートの複数個所に正確に適用しなければならず、修正が面倒であるという問題があった。これはソースコード生成装置が出力し得る多数のパターンに対して、常に適切なソースコードが出力されることを保証する必要があり、ソースコード生成装置またはテンプレートの修正と動作確認のために大きな作業量が発生する点が問題であった。
さらに、複数のプラットフォーム側の修正がソースコード生成ロジックまたはテンプレートの同一箇所に影響する場合、対応するプラットフォーム側の修正同士の影響を適切に判断して、それぞれのプラットフォーム側修正に対応する変更が互いに干渉しないように注意を払ってテンプレートを修正しなければならないという問題があった。
例えばプラットフォーム仕様において、ある変数型Aに変更が発生し、さらにAを引数に用いる関数Fの仕様も同時に変更された場合、関数Fを呼出している処理を含むソースコード生成ロジックまたはテンプレートに対して、関数Fのインタフェース修正とAの変数型の修正を同時に適用しなければならない。
これは最も単純な例であるが、関数Fのインタフェースを変更するだけで、変数Aに設定するパラメータとして必要な情報が呼出し元に渡されておらず、呼出し元のインタフェース修正やグローバル変数参照などを必要とするようなケースが発生しうるものであり、その場合は変更されるソースコードがどのような呼出し関係の中で出力され、またユーザによって追記された非生成コードからどのように呼出される可能性があるかなどを判断して、ソースコード生成ロジックやテンプレートを修正することになる。
これには大きな調査作業量と、高度かつ正確な判断力が必要となり、プラットフォーム側の仕様変更に際してソースコード生成に係る作業量とコストが多大なものになるという問題があった。
これには大きな調査作業量と、高度かつ正確な判断力が必要となり、プラットフォーム側の仕様変更に際してソースコード生成に係る作業量とコストが多大なものになるという問題があった。
本発明は、上記のような問題点に鑑みなされたものであり、仕様の異なる複数のプラットフォームまたはライブラリに対応するための差異部分を自動的に変更して出力することで、ソースコード生成装置を利用したソフトウェアの開発、修正、保守の効率を向上させ、コストを低減することが可能なソースコード生成方法及び装置並びにプログラムを提供することである。
上記目的を達成するために、本発明のソースコード生成方法は、ソースコードを生成する方法であって、
ソースコードを生成する第1のステップと、生成されたソースコードをプログラム言語の文法定義に従って解析する解析する第2のステップと、解析済みのソースコードに対し、生成したソースコードを使用するプラットフォームに対応した加工ルールを適用し、前記解析済みのソースコードを加工し、プラットフォーム対応のソースコードを出力する第3のステップとを備えることを特徴とする。
また、ソースコードを生成する装置であって、
ソースコードを生成する第1の手段と、生成されたソースコードをプログラム言語の文法定義に従って解析する解析する第2の手段と、解析済みのソースコードに対し、生成したソースコードを使用するプラットフォームに対応した加工ルールを適用し、前記解析済みのソースコードを加工し、プラットフォーム対応のソースコードを出力する第3の手段とを備えることを特徴とする。
また、ソースコードをコンピュータに生成させるためのプログラムであって、
ソースコードを生成する第1の手段と、生成されたソースコードをプログラム言語の文法定義に従って解析する解析する第2の手段と、解析済みのソースコードに対し、生成したソースコードを使用するプラットフォームに対応した加工ルールを適用し、前記解析済みのソースコードを加工し、プラットフォーム対応のソースコードを出力する第3の手段としてコンピュータを機能させるステップを備えることを特徴とする。
ソースコードを生成する第1のステップと、生成されたソースコードをプログラム言語の文法定義に従って解析する解析する第2のステップと、解析済みのソースコードに対し、生成したソースコードを使用するプラットフォームに対応した加工ルールを適用し、前記解析済みのソースコードを加工し、プラットフォーム対応のソースコードを出力する第3のステップとを備えることを特徴とする。
また、ソースコードを生成する装置であって、
ソースコードを生成する第1の手段と、生成されたソースコードをプログラム言語の文法定義に従って解析する解析する第2の手段と、解析済みのソースコードに対し、生成したソースコードを使用するプラットフォームに対応した加工ルールを適用し、前記解析済みのソースコードを加工し、プラットフォーム対応のソースコードを出力する第3の手段とを備えることを特徴とする。
また、ソースコードをコンピュータに生成させるためのプログラムであって、
ソースコードを生成する第1の手段と、生成されたソースコードをプログラム言語の文法定義に従って解析する解析する第2の手段と、解析済みのソースコードに対し、生成したソースコードを使用するプラットフォームに対応した加工ルールを適用し、前記解析済みのソースコードを加工し、プラットフォーム対応のソースコードを出力する第3の手段としてコンピュータを機能させるステップを備えることを特徴とする。
本発明によれば、次のような効果がある。
(1)ソースコード生成装置が出力するソースコードの動作対象となるプラットフォームの仕様が変更になった場合、または仕様が異なる複数のプラットフォームに対してそれぞれソースコードを生成しようとする場合に、ソースコード生成ロジックやソースコードの原型テンプレートを修正することなく、ソースコードの加工ルールを適切に入力することで異なるプラットフォームに対応した形式に従って出力ソースコードを変更することが可能となる。
(2)プラットフォームの仕様変更、または仕様が異なる複数プラットフォームにソースコードを出力する際に、1種類のプラットフォーム側仕様変更が出力ソースコードの複数個所に影響を及ぼす場合であっても、ソースコードの加工ルールを1件だけ設定することによって複数のソースコード生成ロジックや生成ソースコードの原型となるテンプレートを変更することなく、プラットフォーム側の変更に対応することが可能となる。
(3)複数のプラットフォーム側仕様変更が、出力ソースコードの同一箇所に影響する場合において、ソースコードの加工ルールを適用することで、複数の変更の影響を自動的に回避してプラットフォーム変更に対応するソースコードを出力することが可能となるなど、ソースコード生成装置を利用したソフトウェアの開発、修正、保守の効率を向上させ、コストを低減することが可能になる。
(1)ソースコード生成装置が出力するソースコードの動作対象となるプラットフォームの仕様が変更になった場合、または仕様が異なる複数のプラットフォームに対してそれぞれソースコードを生成しようとする場合に、ソースコード生成ロジックやソースコードの原型テンプレートを修正することなく、ソースコードの加工ルールを適切に入力することで異なるプラットフォームに対応した形式に従って出力ソースコードを変更することが可能となる。
(2)プラットフォームの仕様変更、または仕様が異なる複数プラットフォームにソースコードを出力する際に、1種類のプラットフォーム側仕様変更が出力ソースコードの複数個所に影響を及ぼす場合であっても、ソースコードの加工ルールを1件だけ設定することによって複数のソースコード生成ロジックや生成ソースコードの原型となるテンプレートを変更することなく、プラットフォーム側の変更に対応することが可能となる。
(3)複数のプラットフォーム側仕様変更が、出力ソースコードの同一箇所に影響する場合において、ソースコードの加工ルールを適用することで、複数の変更の影響を自動的に回避してプラットフォーム変更に対応するソースコードを出力することが可能となるなど、ソースコード生成装置を利用したソフトウェアの開発、修正、保守の効率を向上させ、コストを低減することが可能になる。
以下に、本発明を適用したソースコード生成装置の一実施の形態について説明する。
図1は、本発明に係るソースコード生成装置の実施の形態を示すハードウェア構成図である。
この実施形態で示すソースコード生成装置は、コンピュータで構成される処理装置1、キーボード21及びマウス22で構成される入力装置2、表示装置3、加工ルールファイル4、ソースコード文法定義ファイル5、ソースコードファイル6で構成される。
処理装置1は、CPU11、メモリ12を備え、メモリ12にはOS(オペレーティングシステム)121、ソースコード生成プログラム121が記憶されている。
図1は、本発明に係るソースコード生成装置の実施の形態を示すハードウェア構成図である。
この実施形態で示すソースコード生成装置は、コンピュータで構成される処理装置1、キーボード21及びマウス22で構成される入力装置2、表示装置3、加工ルールファイル4、ソースコード文法定義ファイル5、ソースコードファイル6で構成される。
処理装置1は、CPU11、メモリ12を備え、メモリ12にはOS(オペレーティングシステム)121、ソースコード生成プログラム121が記憶されている。
図2は、ソースコード生成プログラム122の内部処理を機能的に示した機能構成図であり、原型ソースコード生成処理1221、ソースコード解析処理1222、加工ルール読込み処理1223、加工ルール適用処理1224、加工済みソースコード比較処理1225、加工済みソースコード結合処理1226、加工済みソースコード出力処理1228から構成され、加工ルールファイル4、ソースコード文法定義ファイル5とを入力とし、原型ソースコードを生成し、その原型ソースコードの文法上の意味を解析した後、プラットフォームの仕様に対応した加工ルールに従って加工し、ソースコードファイル6に出力するように構成されている。
本実施形態のソースコード生成装置の動作中に生成されるデータのうち、メモリ12上に生成されるデータとしては、原型ソースコード1321、解析済みソースコード1322、解析済みソースコードテーブル1323、加工ルールテーブル1324、解析済み加工ルールテーブル1325、ソースコード文法情報テーブル1326、加工済みソースコードテーブル1327、結合済みソースコードテーブル1328がある。
本実施形態のソースコード生成装置の動作中に生成されるデータのうち、メモリ12上に生成されるデータとしては、原型ソースコード1321、解析済みソースコード1322、解析済みソースコードテーブル1323、加工ルールテーブル1324、解析済み加工ルールテーブル1325、ソースコード文法情報テーブル1326、加工済みソースコードテーブル1327、結合済みソースコードテーブル1328がある。
加工ルールファイル4には、加工ルールの集合が記録されている。
解析済みソースコードテーブル1323には、原型ソースコード1321を文法解析結果に従って構造単位またはトークン単位に解析した解析済みソースコードが格納される。
加工ルールテーブル1324には、加工ルールファイル4から読み込んだ加工ルールが格納される。
解析済み加工ルールテーブル1325には、加工ルールを適用対象トークンと変更内容および影響トークンと変更内容の集合に分解した解析済み加工ルールが格納される。
ソースコード文法情報テーブル1326には、ソースコードの文法解析情報が格納される。
加工済みソースコードテーブル1327には、解析済みソースコードテーブルの内容に1つの加工ルールを適用した結果が格納される。
結合済みソースコードテーブル1328には、複数の加工済みソースコードの変更内容を結合した結果が格納される。
解析済みソースコードテーブル1323には、原型ソースコード1321を文法解析結果に従って構造単位またはトークン単位に解析した解析済みソースコードが格納される。
加工ルールテーブル1324には、加工ルールファイル4から読み込んだ加工ルールが格納される。
解析済み加工ルールテーブル1325には、加工ルールを適用対象トークンと変更内容および影響トークンと変更内容の集合に分解した解析済み加工ルールが格納される。
ソースコード文法情報テーブル1326には、ソースコードの文法解析情報が格納される。
加工済みソースコードテーブル1327には、解析済みソースコードテーブルの内容に1つの加工ルールを適用した結果が格納される。
結合済みソースコードテーブル1328には、複数の加工済みソースコードの変更内容を結合した結果が格納される。
原型ソースコード生成処理1221は、ユーザの指定に従って出力対象となる単一プラットフォーム向けのソースコードを出力するものである。例えば、データベース処理用のソースコードを出力するシステムではSQL文の制御処理を実現するソースコードを、UIデザイナのシステムではユーザのUIレイアウト結果に従って画面部品の描画を実行するソースコードを、またネットワーク通信システムではユーザが記述した状態マトリクスに従って非同期処理を実装するソースコードを出力する、などの処理を行うものである。
この場合、本発明においては、ソースコード生成装置が出力するソースコードはある特定のプラットフォーム上で動作するために必要十分な処理を含んでいるが、それ以外のプラットフォーム上で動作するためには一部修正が必要となるケースを想定しているものである。原型ソースコードの例を図3に示す。
この場合、本発明においては、ソースコード生成装置が出力するソースコードはある特定のプラットフォーム上で動作するために必要十分な処理を含んでいるが、それ以外のプラットフォーム上で動作するためには一部修正が必要となるケースを想定しているものである。原型ソースコードの例を図3に示す。
加工ルールファイル4の加工ルールの例を図4に示す。
加工ルールは、プラットフォーム側の仕様変更に伴ってソースコードに生じる変更の内容をルールとして記述した加工ルール50の集合と、加工ルール同士の優先順位を示す”優先度”パラメータからなる。加工ルールは、変更の対象となるソースコードのトークンの種別およびブロック位置およびシンボル名と、ソースコードの変更結果の対51を複数含むものである。
すなわち、1つの加工ルールファイル4は複数の加工ルール50からなり、1つの加工ルールは複数の変更内容の対51からなる。
変更内容の対51の例としては、「任意のブロックに存在する、変数型トークン”old_struct”を、”new_struct”に置換する」、「ヘッダファイルブロック中に存在する、関数プロトタイプ宣言トークン”func”の引数リストにおいて、”new_param”を末尾に追加する」などが挙げられる。
加工ルール読込み処理1223は、加工ルールファイル4を読込み、その内容を加工ルールテーブル1324に格納する。さらに加工ルール読込み処理1323は、加工ルールファイル4から加工ルール50と、それに含まれる変更内容の対51を解析して、解析済み加工ルールテーブル1325に格納する。本実施形態では例えばXML形式で保存されたルール情報を読込んで、加工ルールテーブル1324と解析済み加工ルールテーブル1325に追加するものである。
加工ルールは、プラットフォーム側の仕様変更に伴ってソースコードに生じる変更の内容をルールとして記述した加工ルール50の集合と、加工ルール同士の優先順位を示す”優先度”パラメータからなる。加工ルールは、変更の対象となるソースコードのトークンの種別およびブロック位置およびシンボル名と、ソースコードの変更結果の対51を複数含むものである。
すなわち、1つの加工ルールファイル4は複数の加工ルール50からなり、1つの加工ルールは複数の変更内容の対51からなる。
変更内容の対51の例としては、「任意のブロックに存在する、変数型トークン”old_struct”を、”new_struct”に置換する」、「ヘッダファイルブロック中に存在する、関数プロトタイプ宣言トークン”func”の引数リストにおいて、”new_param”を末尾に追加する」などが挙げられる。
加工ルール読込み処理1223は、加工ルールファイル4を読込み、その内容を加工ルールテーブル1324に格納する。さらに加工ルール読込み処理1323は、加工ルールファイル4から加工ルール50と、それに含まれる変更内容の対51を解析して、解析済み加工ルールテーブル1325に格納する。本実施形態では例えばXML形式で保存されたルール情報を読込んで、加工ルールテーブル1324と解析済み加工ルールテーブル1325に追加するものである。
ソースコード解析処理1222は、ソースコード文法定義ファイル5に従って原型ソースコード生成処理1221が出力した原型ソースコードの文法解析を行い、その原型ソースコードをトークン単位に分解して各トークンの種別、ブロック位置、シンボル名などに分解した結果をソースコード文法情報テーブル1326に記録する。
ソースコード文法定義ファイル5は、C言語文法などプログラム言語使用に由来する文法定義と、プロジェクトのコーディング規則などユーザの運用に由来する文法定義などを含むが、これらに限定するものではない。
さらにソースコード解析処理1222は、ソースコード文法情報テーブル1326の情報を原型ソースコード1321に関連付けた状態で、トークン解析では失われる空行、余白、タブ数などの状態を保存した解析済みソースコード1322を、解析済みソースコードテーブル1323に格納する。
解析済みソースコードの例を図5に示す。
ソースコード文法定義ファイル5は、C言語文法などプログラム言語使用に由来する文法定義と、プロジェクトのコーディング規則などユーザの運用に由来する文法定義などを含むが、これらに限定するものではない。
さらにソースコード解析処理1222は、ソースコード文法情報テーブル1326の情報を原型ソースコード1321に関連付けた状態で、トークン解析では失われる空行、余白、タブ数などの状態を保存した解析済みソースコード1322を、解析済みソースコードテーブル1323に格納する。
解析済みソースコードの例を図5に示す。
加工ルール適用処理1224は、解析済み加工ルールテーブル1325の各加工ルールに該当する箇所を解析済みソースコードテーブル1323およびそれに関連したソースコード文法情報テーブル1326から検索する。
1つの加工ルールに対して、全解析済みソースコードから検索を行い、該当箇所があればルールを適用してソースコードを変更する。このようにして得られた加工済みソースコードを加工済みソースコードテーブル1327に格納する。
加工ルール適用処理1224は、前述の加工済みソースコードを取得する処理を、全ての加工ルールの数だけ繰り返す。
この結果、加工済みソースコードテーブル1327には、各ルールを適用した加工済みソースコード一式の組が、ルールの件数分作成される。
加工済みソースコードの例を図6に示す。
1つの加工ルールに対して、全解析済みソースコードから検索を行い、該当箇所があればルールを適用してソースコードを変更する。このようにして得られた加工済みソースコードを加工済みソースコードテーブル1327に格納する。
加工ルール適用処理1224は、前述の加工済みソースコードを取得する処理を、全ての加工ルールの数だけ繰り返す。
この結果、加工済みソースコードテーブル1327には、各ルールを適用した加工済みソースコード一式の組が、ルールの件数分作成される。
加工済みソースコードの例を図6に示す。
次に、加工済みソースコード比較処理1225は、加工済みソースコードテーブル1227の各加工済みソースコードを比較し、相違点を抽出する。このとき、同一のトークンに対して複数の加工ルールが変更を行った場合、加工済みソースコード比較処理1225は変更が排他的なものであるか、同時に適用可能であるかを判定する。
変更が排他的な場合は、加工ルールの優先順位に従って判定を行い、最も優先度が高い変更を適用して他の変更内容はコメント化すると同時にワーニング発生のソースコードを出力する。
変更が排他的でない場合は、特に変更無しで加工済みソースコード結合処理1226に処理を渡す。
排他的でない加工の例としては次のようなケースが挙げられる。
「Func2( type1 param1, type2 param2 );」のような関数トークンのFunc2に対して、第2引数の型をtype2からtype2aに変更する加工「Func2( type1 param1, type2a param2);」と、第3引数を追加する加工「Func2( type1 param1, type2 param2, type3 param3);」が同時に発生した場合である。両方の加工箇所が重複していないため、同時に加工を適用することが可能であり、各加工済みソースは変更無く加工済みソースコード結合処理1226に渡される。
排他的な変更が存在する場合の加工済みソースコード比較処理1225の処理例を図7に示す。
変更が排他的な場合は、加工ルールの優先順位に従って判定を行い、最も優先度が高い変更を適用して他の変更内容はコメント化すると同時にワーニング発生のソースコードを出力する。
変更が排他的でない場合は、特に変更無しで加工済みソースコード結合処理1226に処理を渡す。
排他的でない加工の例としては次のようなケースが挙げられる。
「Func2( type1 param1, type2 param2 );」のような関数トークンのFunc2に対して、第2引数の型をtype2からtype2aに変更する加工「Func2( type1 param1, type2a param2);」と、第3引数を追加する加工「Func2( type1 param1, type2 param2, type3 param3);」が同時に発生した場合である。両方の加工箇所が重複していないため、同時に加工を適用することが可能であり、各加工済みソースは変更無く加工済みソースコード結合処理1226に渡される。
排他的な変更が存在する場合の加工済みソースコード比較処理1225の処理例を図7に示す。
加工済みソースコード結合処理1226は、各加工ルールに対応した加工済みソースコードテーブル1327の内容と、加工前の解析済みソースコードテーブル1323の内容を比較して、加工による変更点を解析済みソースコードに適用した結合済みソースコードを作成して、結合済みソースコードテーブル1328に格納する。この処理を、各加工ルールの数だけ繰り返して結合済みソースコードに反映する。
前述のように、排他的な加工による変更は、最優先の修正を除いてコメント化されているため、各変更点を重ね合わせて結合済みソースコードに適用することで、全ての加工ルールによる変更を集約した結合済みソースコードを得ることが出来る。
前述の加工例を結合する場合を例とすると、解析済みソースコードは「Func2( type1 param1, func2 param2 );」となっている。これに第2引数の型を変更した加工済みソースコードの変更点を結合すると、「Func2( type1 param1, type2a param2 );」となる。さらに第3引数を追加した加工済みソースコードの変更点を結合すると、「Func2( type1 param1, type2a param2, type3 param3); 」のような結合済みソースコードが得られる。
加工済みソースコード結合処理1226処理の例を図8に示す。
前述のように、排他的な加工による変更は、最優先の修正を除いてコメント化されているため、各変更点を重ね合わせて結合済みソースコードに適用することで、全ての加工ルールによる変更を集約した結合済みソースコードを得ることが出来る。
前述の加工例を結合する場合を例とすると、解析済みソースコードは「Func2( type1 param1, func2 param2 );」となっている。これに第2引数の型を変更した加工済みソースコードの変更点を結合すると、「Func2( type1 param1, type2a param2 );」となる。さらに第3引数を追加した加工済みソースコードの変更点を結合すると、「Func2( type1 param1, type2a param2, type3 param3); 」のような結合済みソースコードが得られる。
加工済みソースコード結合処理1226処理の例を図8に示す。
加工済みソースコード出力処理1227は、結合済みソースコードテーブル1228に格納されたソースコードを、ディスク装置のソースコードファイル6に出力する。出力されたソースコードは、各加工ルールに従って対象プラットフォームおよび対象ライブラリの最適なソースコードに変更されているため、プラットフォームの違いや仕様変更に対して、必要なソースコードを効率良く生成し、コストを低減させることができる。
1…処理装置、2…入力装置、3…表示装置、4…加工ルールファイル、5…ソースコード文法定義ファイル、6…ソースコードファイル、21…キーボード、22…マウス、50…加工ルール、51…変更内容の対、121…オペレーティングシステム、122…ソースコード生成プログラム、1221…原型ソースコード生成処理置、1222…ソースコード解析処理、1223…加工ルール読込み処理、1224…加工ルール適用処理、1225…加工済みソースコード比較処理、1226…加工済みソースコード結合処理、1227…加工済みソースコード出力処理、1321…原型ソースコード、1322…解析済みソースコード、1323…解析済みソースコードテーブル、1324…加工ルールテーブル、1325…解析済み加工ルールテーブル、1326…ソースコード文法情報テーブル、1327…加工済みソースコードテーブル、1328…結合済みソースコードテーブル。
Claims (3)
- ソースコードを生成する方法であって、
ソースコードを生成する第1のステップと、生成されたソースコードをプログラム言語の文法定義に従って解析する解析する第2のステップと、解析済みのソースコードに対し、生成したソースコードを使用するプラットフォームに対応した加工ルールを適用し、前記解析済みのソースコードを加工し、プラットフォーム対応のソースコードを出力する第3のステップとを備えることを特徴とするソースコード生成方法。 - ソースコードを生成する装置であって、
ソースコードを生成する第1の手段と、生成されたソースコードをプログラム言語の文法定義に従って解析する解析する第2の手段と、解析済みのソースコードに対し、生成したソースコードを使用するプラットフォームに対応した加工ルールを適用し、前記解析済みのソースコードを加工し、プラットフォーム対応のソースコードを出力する第3の手段とを備えることを特徴とするソースコード生成装置。 - ソースコードをコンピュータに生成させるためのプログラムであって、
ソースコードを生成する第1の手段と、生成されたソースコードをプログラム言語の文法定義に従って解析する解析する第2の手段と、解析済みのソースコードに対し、生成したソースコードを使用するプラットフォームに対応した加工ルールを適用し、前記解析済みのソースコードを加工し、プラットフォーム対応のソースコードを出力する第3の手段としてコンピュータを機能させるステップを備えることを特徴とするソースコード生成プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006351860A JP2008165342A (ja) | 2006-12-27 | 2006-12-27 | ソースコード生成方法及び装置並びにプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006351860A JP2008165342A (ja) | 2006-12-27 | 2006-12-27 | ソースコード生成方法及び装置並びにプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008165342A true JP2008165342A (ja) | 2008-07-17 |
Family
ID=39694802
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006351860A Pending JP2008165342A (ja) | 2006-12-27 | 2006-12-27 | ソースコード生成方法及び装置並びにプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008165342A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010050128A1 (ja) * | 2008-10-30 | 2010-05-06 | パナソニック株式会社 | コンパイル方法及びコンパイルプログラム |
JP2010140408A (ja) * | 2008-12-15 | 2010-06-24 | Nomura Research Institute Ltd | ソースコード変換装置 |
WO2014147783A1 (ja) * | 2013-03-21 | 2014-09-25 | 富士通株式会社 | データ変換方法、データ変換装置およびプログラム |
KR20200081502A (ko) | 2017-12-25 | 2020-07-07 | 미쓰비시덴키 가부시키가이샤 | 설계 지원 장치, 설계 지원 방법 및 기록 매체에 저장된 프로그램 |
CN116126304A (zh) * | 2023-02-21 | 2023-05-16 | 北京计算机技术及应用研究所 | 基于XML的扩展Lustre代码生成方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0540612A (ja) * | 1991-08-06 | 1993-02-19 | Fujitsu Ltd | 計算機資産変換処理装置 |
JPH05224943A (ja) * | 1992-02-14 | 1993-09-03 | Nec Corp | 原始プログラム変換装置 |
JP2006079484A (ja) * | 2004-09-13 | 2006-03-23 | Hitachi Software Eng Co Ltd | システム移行に伴うソースプログラム変換プログラム |
-
2006
- 2006-12-27 JP JP2006351860A patent/JP2008165342A/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0540612A (ja) * | 1991-08-06 | 1993-02-19 | Fujitsu Ltd | 計算機資産変換処理装置 |
JPH05224943A (ja) * | 1992-02-14 | 1993-09-03 | Nec Corp | 原始プログラム変換装置 |
JP2006079484A (ja) * | 2004-09-13 | 2006-03-23 | Hitachi Software Eng Co Ltd | システム移行に伴うソースプログラム変換プログラム |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010050128A1 (ja) * | 2008-10-30 | 2010-05-06 | パナソニック株式会社 | コンパイル方法及びコンパイルプログラム |
JP2010108258A (ja) * | 2008-10-30 | 2010-05-13 | Panasonic Corp | コンパイル方法及びコンパイルプログラム |
JP2010140408A (ja) * | 2008-12-15 | 2010-06-24 | Nomura Research Institute Ltd | ソースコード変換装置 |
WO2014147783A1 (ja) * | 2013-03-21 | 2014-09-25 | 富士通株式会社 | データ変換方法、データ変換装置およびプログラム |
KR20200081502A (ko) | 2017-12-25 | 2020-07-07 | 미쓰비시덴키 가부시키가이샤 | 설계 지원 장치, 설계 지원 방법 및 기록 매체에 저장된 프로그램 |
US10977032B2 (en) | 2017-12-25 | 2021-04-13 | Mitsubishi Electric Corporation | Assistance device, design assistance method and program |
CN116126304A (zh) * | 2023-02-21 | 2023-05-16 | 北京计算机技术及应用研究所 | 基于XML的扩展Lustre代码生成方法 |
CN116126304B (zh) * | 2023-02-21 | 2023-12-22 | 北京计算机技术及应用研究所 | 基于XML的扩展Lustre代码生成方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103218294B (zh) | 一种嵌入式系统的调试方法、调试转换装置和系统 | |
US20190310835A1 (en) | Application development method, tool, and device, and storage medium | |
KR102107872B1 (ko) | 컴파일러 기반 난독화 기법 | |
JP4057938B2 (ja) | コンパイラ、コンパイル方法、及びプログラム開発ツール | |
JP3762867B2 (ja) | コンパイラ装置、コンパイル方法、およびそのためのプログラムを格納した記憶媒体 | |
WO2017185606A1 (zh) | 基于overlay机制的APK开发方法及系统 | |
US20070266378A1 (en) | Source code generation method, apparatus, and program | |
US20100281463A1 (en) | XML based scripting framework, and methods of providing automated interactions with remote systems | |
JP2007141173A (ja) | コンパイルシステム、デバッグシステムおよびプログラム開発システム | |
US20070157183A1 (en) | Computer program code comparison using lexemes | |
CN111399840A (zh) | 一种模块开发方法及装置 | |
JP6479184B2 (ja) | コンピュータ実行可能なモデルリバースエンジニアリング方法及び装置 | |
CN111736954A (zh) | 多智能合约虚拟机实现方法、多智能合约虚拟机及系统 | |
CN113805882A (zh) | 应用程序开发的方法、装置、电子设备及存储介质 | |
JP2008165342A (ja) | ソースコード生成方法及び装置並びにプログラム | |
CN116540986A (zh) | 一种基于Web端的文本类编程语言代码编辑器构建方法 | |
CN114064218A (zh) | 用于机器学习组件中的镜像生成方法、系统、介质及应用 | |
CN114047968A (zh) | 一种硬件自动适配的方法、系统、存储介质及设备 | |
CN112540755A (zh) | 一种基于前端的组件处理方法、装置、设备及存储介质 | |
CN113778451B (zh) | 文件加载方法、装置、计算机系统和计算机可读存储介质 | |
JP2008140263A (ja) | 単体試験支援装置 | |
JP6175306B2 (ja) | 制御プログラム分割装置、制御プログラム分割方法及びその記録媒体 | |
CN112596751A (zh) | 应用程序安装包的编译方法、终端、服务器及存储介质 | |
JP2004133630A (ja) | プログラム作成方法、プログラム変換装置、プログラム及び記憶媒体 | |
JP2011180814A (ja) | コンパイラ装置、コンパイル方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Effective date: 20090716 Free format text: JAPANESE INTERMEDIATE CODE: A621 |
|
A02 | Decision of refusal |
Effective date: 20120328 Free format text: JAPANESE INTERMEDIATE CODE: A02 |