(57)【要約】      （修正有）【課題】コンパイラの差異によるコードを自動生成するコード自動生成システムを提供する。【解決手段】コード生成装置１は、記憶部１６に記録されている文法を参照して入力仕様の構文解析を行い、コードを生成するための内部データ構造を生成し、一時記憶部１９に供給する構文解析手段１１と、入力設定を解析する入力設定解析手段１３と入力設定解析手段１３が解析した入力設定により生成方法記憶部に対して生成方法の変更を行う生成方法変更手段１４を有する設定更新手段１２と、記憶部１６と構文解析手段１１が参照する文法を記憶する文法記憶部１７とコードを生成する方法を記憶する生成方法記憶部１８を有する一時記憶部１９と、生成方法記憶部１８に記憶されている生成方法に従い一時記憶部に１９に記憶されている内部データからコードを生成する生成実行手段１５とを備えて構成される。【選択図】図１
2006085496.tif 000002
【特許請求の範囲】
【請求項１】
コード生成のための情報を含む仕様を入力する入力部と、該入力部により入力した仕様の構文解析を行い、コードを生成するための内部データ構造を生成する構文解析手段と、該構文解析手段が参照する文法とコードの生成方法を記憶する記憶部と、前記構文解析手段が生成する内部データ構造を一時記憶する一時記憶部と、前記入力部により入力設定されたときに、その設定を解釈する入力設定解析手段と該入力設定解析手段が解釈した生成方法を変更することが可能な生成方法変更手段とを有する設定変更手段と、前記記憶部に記憶されている内部データ構造からコードを生成する生成実行手段と、該生成実行手段の出力によりコードを出力する出力部と、を備えたことを特徴とするコード自動生成システム。
【請求項２】
前記構文解析手段は、出力コードに対するテーブルを持ち、該テーブルにより前記生成方法記憶部に記憶された生成手段を設定可能としたことを特徴とする請求項１に記載のコード自動生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コード自動生成システムに関し、さらに詳しくは、コンパイラの差異によるコードを自動的に生成するコード自動生成システム関するものである。
【背景技術】
【０００２】
従来から装置に組込型のコード自動生成システムにおいては、生成されたコードはＣ言語やＣ＋＋言語で記述されることが一般的である。しかし、組み込みシステムでは種々のＣＰＵ（中央処理演算部）を持つため、これらのコンパイラはＣＰＵを供給する半導体メーカにより供給される場合が多い。また、これらのコンパイラは、バージョンアップが頻繁には行われないために、デファクト・スタンダードとなっているＧＮＵやマイクロソフトのコンパイラと比べ、古い文法または異なった文法で作成されているケースがある。
一般的な組み込み開発ではコンパイラにあわせてコードを修正すれば良いが、組み込み型のコード自動生成システムにおいては、標準的なコードを自動生成してしまうため、文法の差異があった場合エラーが発生しＢｕｉｌｄができなくなってしまう。更にコードを直接書き換えても再度自動生成するごとにコードの書き換え部が修正されてしまい、毎回修正を行う必要が発生する。同様にマイクロソフトのコンパイラをシミュレーション用とし、日立のコンパイラを組み込み機器の実行用として並行使用する場合、コードの書き換えもコンパイラによって必要だったり、必要なかったりする場面が発生する。
従来例として、特開２０００−３１１０８１公報には、新規にコード生成文法を追加できることを特徴とするコード生成システムについて開示されている。
また特開２０００−８９９４５公報には、設計情報を参照するだけでソースプログラムの内容を把握でき、保守性を向上させる手法を提供するソフトウエア開発支援システムについて開示されている。
また特開平６−２１４７７６号公報には、自然言語からプログラムソースを自動生成するシステムについて開示されている。
【特許文献１】特開２０００−３１１０８１公報
【特許文献２】特開２０００−８９９４５公報
【特許文献３】特開平６−２１４７７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、特許文献１〜３の従来技術は、ソフトウエア自動生成技術に関するものであり、本願発明とは主旨を異にするものである。
本発明は、かかる課題に鑑み、入力部により入力した仕様の構文解析を行い、コードを生成するための内部データ構造を生成する構文解析手段と、入力部により入力設定されたときに、その設定を解釈する入力設定解析手段とこの入力設定解析手段が解釈した生成方法を変更することが可能な生成方法変更手段とを有する設定変更手段を備えることにより、課題別のコードを自動生成するコード自動生成システムを提供することを目的とする。
また他の目的は、入力設定にコンパイラ名等を使用し、コンパイラ名から問題別のコード生成の設定をテーブルを参照して行う機能をさらに備えることにより、より操作性のよい形で課題の解決を行うことである。
【課題を解決するための手段】
【０００４】
本発明はかかる課題を解決するために、請求項１は、コード生成のための情報を含む仕様を入力する入力部と、該入力部により入力した仕様の構文解析を行い、コードを生成するための内部データ構造を生成する構文解析手段と、該構文解析手段が参照する文法とコードの生成方法を記憶する記憶部と、前記構文解析手段が生成する内部データ構造を一時記憶する一時記憶部と、前記入力部により入力設定されたときに、その設定を解釈する入力設定解析手段と該入力設定解析手段が解釈した生成方法を変更することが可能な生成方法変更手段とを有する設定変更手段と、前記記憶部に記憶されている内部データ構造からコードを生成する生成実行手段と、該生成実行手段の出力によりコードを出力する出力部と、を備えたことを特徴とする。
本発明は入力部から入力された入力設定が生成用のコード文法指定か否かの判定を行う。生成用のコード文法指定でない場合、旧来の設定データとして旧来の設定を行う。コード文法指定ならば、ポインタファンクションの引数に関して＊が必要であるか否かの設定データに変換して、生成方法変更手段に指示を行う。入力設定解析手段では生成方法記憶部の対応のコードを生成するデータを変更して、生成実行手段のコード生成時、指定のコード文法でコードが生成されるようにする。
請求項２は、前記構文解析手段は、出力コードに対するテーブルを持ち、該テーブルにより前記生成方法記憶部に記憶された生成手段を設定可能としたことを特徴とする。
本発明は入力により対応のコンパイラ名とバージョンが指定される。まず、入力されたコンパイラ名とバージョンがコンパイラ・データベース上のものと比較し一致したならば、データベース上のコード設定手順の設定データを取り出し生成方法変更手段に指示を与える。コンパイラがあり対応のバージョンがなかった場合は、指定のバージョンに近いものを選択する。コンパイラもバージョンもない場合は、警告を発生してデフォルトのコンパイラとバージョンにて設定を行う。
【発明の効果】
【０００５】
請求項１の発明によれば、生成のコード文法指定により、既存のコンパイラに対応したコードを生成することができる。
また請求項２では、コンパイラ名とバージョンを指定することにより、最良のコード文法を持つコードを生成することができる。
【発明を実施するための最良の形態】
【０００６】
以下、本発明を図に示した実施形態を用いて詳細に説明する。但し、この実施形態に記載される構成要素、種類、組み合わせ、形状、その相対配置などは特定的な記載がない限り、この発明の範囲をそれのみに限定する主旨ではなく単なる説明例に過ぎない。
汎用的なコード自動生成システムには種々の製品があるが、ＵＭＬのモデルに対して、アクション部の記述を特定プログラム言語で記述するものが多く、本課題に直面することは少ないように思われる。しかし、ＵＭＬとプログラム言語の依存しないアクション記述言語よりコード自動生成を行うコード自動生成ツールではこの問題に直面するケースが多い。この完全自動生成を行うシステムは米国では３、４種類あるようであるが、日本ではこの内、プロジェクト・テクノロジィ社のBridge Pointというツールが紹介されている。それに加えて、日本の有力半導体メーカは自社のＣＰＵを開発販売しているため、日本ではこのような課題が発生しやすい。Bridge Pointでは、このような課題に対して、文法記述部のデータベースを直接書き換えることにより対応を行っている。
図１は本発明の実施形態によるコード生成システムの構成を示すブロック図である。このコード生成システム１００は、入力部２により入力した仕様からコードを生成したり、入力設定に従って生成方法を変更するコード生成装置１と、所定の形式に従う入力仕様と入力設定を入力する入力部２と、コードを出力する出力部３とを備えて構成される。
またコード生成装置１は、記憶部１６に記録されている文法を参照して入力仕様の構文解析を行い、コードを生成するための内部データ構造を生成し、一時記憶部１９に供給する構文解析手段１１と、入力設定を解析する入力設定解析手段１３と入力設定解析手段１３が解析した入力設定により生成方法記憶部に対して生成方法の変更を行う生成方法変更手段１４を有する設定更新手段１２と、記憶部１６と、構文解析手段１１が参照する文法を記憶する文法記憶部１７とコードを生成する方法を記憶する生成方法記憶部１８を有する一時記憶部１９と、生成方法記憶部１８に記憶されている生成方法に従い一時記憶部に１９に記憶されている内部データからコードを生成する生成実行手段１５とを備えて構成される。
【０００７】
次に、上記構成によるコード生成システム１００の動作を説明する。まず、所定の形式で記述された仕様と入力設定が入力部２に入力された場合、入力仕様は構文解析手段１１へ供給される。構文解析手段１１は、文法記憶部１７に記憶されている文法を参照して入力仕様の構文解析を行いコードを生成するための内部データ構造を生成し、一時記憶部１９へ供給する。一時記憶部１９は供給された内部データを一時的に記憶する。入力設定は入力設定解析手段１３により解析され、生成方法変更手段１４にて生成方法に対する変更手順を作成して生成方法記憶部１８に対して設定を行う。生成実行手段１５は、この内部データに基づいて生成方法記憶部１８の方法を用いてコードを生成し、出力部３に送る。出力部３は生成実行手段１５の出力を受けてコードを出力する。
図２は本発明の第１の実施形態を説明するフローチャートである。入力部２から入力された入力設定が生成用のコード文法指定か否かの判定を行う（Ｓ１）。コード文法指定でない場合（Ｓ１でＮＯのルート）、別の設定解析を行う（Ｓ４）。ステップＳ１でコード文法指定ならば（Ｓ１でＹＥＳのルート）、ポインタファンクションの引数に関して＊が必要であるかどうかの設定データに変換して、生成方法変更手段１４に指示を行う（Ｓ２）。生成方法変更手段１４では生成方法記憶部１８の対応のコードを生成するデータを変更して、生成実行手段１５のコード生成時、指定のコード文法でコードが生成されるようにする（Ｓ３）。
【０００８】
図３は本発明の拡張を行った入力設定解析手段１３のブロック図である。入力設定解析手段１３は、入力設定を解析する入力設定解析部１０１と、入力設定としてコンパイラの指定が行われた場合のコンパイラ・データベース１０２とを備えて構成される。コンパイラ・データベース１０２は、コンパイラの名前とバージョンから複数のコード文法指定を取り出せる構成を持つ。
図４は本発明の第２の実施形態を説明するフローチャートである。コンパイラ・データベースから入力により対応のコンパイラ名とバージョンが指定される（Ｓ１１）。そして入力名と比較され（Ｓ１２）、入力されたコンパイラ名とバージョンがコンパイラ・データベース上のものと比較し一致したならば（Ｓ１２で一致したのルート）、データベース上のコード設定手順の設定データを取り出し生成方法変更手段１４に指示を与え（Ｓ１３）、生成方法変更手段１４に送る（Ｓ１４）。ステップＳ１２でコンパイラがあり対応のバージョンがなかった場合は（Ｓ１２で一致しないのルート）、ステップＳ１１に戻って指定のバージョンに近いものを選択する。ステップＳ１２でコンパイラもバージョンもない場合は（Ｓ１２でデータベースなしのルート）、警告を発生してデフォルトのコンパイラとバージョンにて設定を行い（Ｓ１５）、ステップ１３に進む。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態によるコード生成システムの構成を示すブロック図。
【図２】本発明の第１の実施形態を説明するフローチャート。
【図３】本発明の拡張を行った入力設定解析手段１３のブロック図。
【図４】本発明の第２の実施形態を説明するフローチャート。
【符号の説明】
【００１０】
１  コード生成装置、２  入力部、３  出力部、１１  構文解析手段、１２  設定更新手段、１３  入力設定解析手段、１４  生成方法変更手段、１５  生成実行手段、１６  記憶部、１７  文法記憶部、１８  生成方法記憶部、１９  一時記憶部、１００  コード生成システム
【図１】
2006085496.tif 000003
【図２】
2006085496.tif 000004
【図３】
2006085496.tif 000005
【図４】
2006085496.tif 000006