JP2007265098A - マクロ定義情報取得装置 - Google Patents

マクロ定義情報取得装置 Download PDF

Info

Publication number
JP2007265098A
JP2007265098A JP2006090153A JP2006090153A JP2007265098A JP 2007265098 A JP2007265098 A JP 2007265098A JP 2006090153 A JP2006090153 A JP 2006090153A JP 2006090153 A JP2006090153 A JP 2006090153A JP 2007265098 A JP2007265098 A JP 2007265098A
Authority
JP
Japan
Prior art keywords
macro definition
subprogram
definition information
macro
information output
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
JP2006090153A
Other languages
English (en)
Inventor
Kazuyuki Shimada
一行 嶋田
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.)
Denso Ten Ltd
Original Assignee
Denso Ten Ltd
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 Denso Ten Ltd filed Critical Denso Ten Ltd
Priority to JP2006090153A priority Critical patent/JP2007265098A/ja
Publication of JP2007265098A publication Critical patent/JP2007265098A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】マクロ定義情報取得装置に関し、特に実際に使用するのと同じ状態におけるマクロ定義情報が得られるようにしたマクロ定義情報取得装置を提供する。
【解決手段】サブプログラムを含むメインプログラムを読み込み、該メインプログラムに含まれるすべてのサブプログラム情報を取得するサブプログラム情報取得手段と、前記手段で取得したサブプログラム情報を、前記メインプログラムにおけるサブプログラムの後に、コンパイラ・実行環境に適合するサブプログラム情報出力命令として挿入するサブプログラム情報出力命令挿入手段と、前記手段によりサブプログラム情報出力命令が挿入されたメインプログラムを、あらかじめ指定したコンパイラによってコンパイルし、取得した実行体を実行することで、挿入した命令により出力されたサブプログラム情報を記憶装置に記録するサブプログラム情報記録手段とを具備する。
【選択図】図1

Description

本発明はマクロ定義情報取得装置に関し、特に特定のコンパイラ使用時にそのプリプロセッサによって有効となるマクロ情報を出力させることで、実際に使用するのと同じ状態でのマクロ定義情報が得られるようにしたマクロ定義情報取得装置に関するものである。
コンパイルの時に行われるプリプロセッサにより、1つのソースコードから複数の異なる動きをするコードを得ることができる。この場合、どのようにプリプロセッサが行われたかは、プリプロセッサの条件判断の処理結果により有効になるマクロ定義の一覧を利用してソースコード作成者が把握していた。
有効なマクロ定義の一覧を得るには、人間の手によってマクロ定義の一覧を作成する以外に、コンパイラが持つマクロ定義一覧出力機能を使うか、またはコンパイラと同じようにプリプロセッサ処理を行い有効になるマクロの定義情報を得る装置を使う、という方法があった。
例えば、プリプロセッサ構文のマクロ定義文及び条件文を含むソースコードを読み込み、そのソースコードからマクロ定義文抽出する例が開示されている(引用文献1参照)。また、プリプロセッサがソースプログラムを入力としてマクロを展開する例が開示されている(引用文献2参照)。さらに、テーブルにマクロを保存し、構文テキスト作成時に命令に対応するマクロを併せて出力する例が開示されている(引用文献3参照)。
特開2002−366368号公報 特開平5−61653号公報 特開平11−143705号公報
しかしながら、すべてのコンパイラがマクロ定義の一覧を出力するわけではないので、開発に使用するコンパイラがマクロ定義の一覧を出力しないコンパイラの場合には、人間の手によってマクロ定義の一覧を作成するか、マクロ定義の一覧を出力する他のコンパイラか装置を使っていた。
例えば、C言語ではプリプロセッサにより1つのソースファイルから複数の実行コードを得ることができるが、その際にどのようにプリプロセッサ処理が行われたかをプログラム作成者が把握するために、プリプロセッサにより有効となる#define マクロ命令の一覧を利用していた。この場合、有効な#defineマクロの一覧を出力するコンパイラがある一方で、マクロの一覧を出力しないコンパイラも存在しており、後者の場合には人手によってマクロの一覧を作成せざるをえないという問題があった。
また、実際に使用するものとは別のコンパイラや装置によりマクロ定義の一覧を得ると、実際に使用するコンパイラではないのでプリプロセッサの処理が完全に同じものとはならず、またそこで得られるマクロ定義の一覧も実際に使用するコンパイラが有効と判断したものと同じとは限らないという問題があった。
なお、上記引用例1〜3は、単にプリプロセッサ構文のマクロ定義文及び条件文を含むソースコードを読み込み、そのソースコードからマクロ定義文を抽出して記録する技術を開示しているにすぎなかった。
そこで本発明の目的は、上記問題点に鑑み、実際の開発で使用するコンパイラで有効になるマクロ定義の一覧を得るため、ソースコードにあるすべてのマクロ定義の後に、そのマクロ定義に関する情報を出力する命令を挿入する手段を設けてソースコードを加工し、その後加工したソースコードを開発に使用するコンパイラでコンパイルし、得られた実行体を実行することで、挿入された出力命令により実行時に有効となるマクロ定義に関する情報を得るもことができるようにしたマクロ定義情報取得装置を提供することにある。
本発明による装置では、ソースコードにある全ての#defineマクロの後に、そのマクロに関する情報を出力する命令を挿入してソースコードを加工し、その加工したソースコードを自動的にコンパイルして実行することにより、プリプロセッサで処理されたマクロに関する情報を出力することで有効な#defineマクロの情報を得ることができる。
また、本発明による装置では、実際に使用するコンパイラのプリプロセッサを用いているので、他のコンパイラや装置を用いる場合とは異なり、実際に使用するのと同じ状態で有効なマクロ定義情報を得ることができ、正確で容易な開発プログラムの検証が可能となる。そして、最終製品の生成時には、挿入したマクロ定義に関する出力命令を削除した検証後のプログラム製品を生成させる。
サブプログラムを含むメインプログラムを読み込み、該メインプログラムに含まれるすべてのサブプログラム情報を取得するサブプログラム情報取得手段と、前記サブプログラム情報取得手段で取得したサブプログラム情報を、前記メインプログラムにおけるサブプログラムの後に、コンパイラ・実行環境に適合するサブプログラム情報出力命令として挿入するサブプログラム情報出力命令挿入手段と、前記情報出力命令挿入手段によりサブプログラム情報出力命令が挿入されたメインプログラムを、あらかじめ指定したコンパイラによってコンパイルし、取得した実行体を実行することで、挿入したサブプログラム情報出力命令により出力されたサブプログラム情報を記憶装置に記録するサブプログラム情報記録手段とを備える。
本発明では実際に使用するコンパイラを用いているので、他のコンパイラや装置を用いた場合とは異なり、実際に使用するコンパイラでプリプロセッサの処理が終わった段階で有効となったマクロ定義の情報を得ることができ、より正確で容易な開発プログラムの検証が可能となる。なお、最終プログラム製品の生成時には、挿入したマクロ定義に関する出力命令を削除したものを生成させる。
以下、本発明の実施の形態を示すマクロ定義情報取得装置について、図面を参照しながら具体的に説明する。
図1は本発明の実施の形態のマクロ定義情報取得装置の構成を示すブロック図である。このマクロ定義情報取得装置は、図1に示すように、取得対象となるソースコード21と、マクロ定義情報取得手段10と、マクロ定義情報取得手段10により出力命令が挿入された出力命令入りソースコード22と、出力命令入りソースコードをコンパイルするコンパイラ23と、コンパイラ23により作成された実行体24と、実行体24からマクロ定義情報取得手段10により得られるマクロ定義情報31とから構成される。
さらにマクロ定義情報取得手段10は、マクロ定義情報解析部11と、情報出力命令挿入部12と、マクロ定義情報記録部13とから構成される。
以上のように構成されたマクロ定義情報取得装置について、その動作を以下に説明する。図2は本実施の形態のマクロ定義情報取得装置における動作を示すフローチャートである。まずステップS201では、ソースコード21の先頭に関数を構成するための命令を挿入する。
次にステップS202では、ソースコード21から1行ソースコードを読み込む。
次にステップS203では、読み込んだソースコードにマクロ定義文(#define文等)が含まれているか否か判定をする。マクロ定義文が含まれている場合、ステップS204にてマクロの情報を得るべく解析を行う(図1の11)。解析後、ステップS205にて、解析の結果得られたマクロの情報を、マクロ定義より後の行に、具体的なコンパイラ・実行環境などに合わせた適切な命令としてソースコードに挿入する。
次にステップS206では、ソースコードの読み込みにより、ソースコードの終端に達したか否かを判定する。終端に達していない場合、再度ステップS202を実施する。終端に達した場合、ステップS207に進む。
次にステップS207では、ソースコードの最後に関数を構成するための命令を挿入する。
次にステップS208では、出力命令が挿入されている出力命令入りソースコード22(図1の22)を、実際に開発で使用するコンパイラ23でコンパイルし(図1の23)、実行体24を得る(図1の24)。
次にステップS209では、実行体24を実行し、実行体24に含まれる出力命令により出力されるマクロの定義情報をまとめ、マクロ定義情報(図1の31)として出力する。このように、コンパイラや実行環境に合わせた、マクロ定義に関する情報を出力する適切な命令を挿入したソースコードを、実際に使用するコンパイラでコンパイルし、作成された実行体を実行してマクロの定義情報を得るため、どのようなコンパイラでもマクロの定義情報を得ることができる。
実際に使用するコンパイラにてプリプロセッサの処理を行うので、他のコンパイラや装置を利用した場合に起こりうる、プリプロセッサの処理の違いによる誤った定義情報を得ることはなくなる。
図3には、出力命令入りソースコードの一例を示している。
図3(a)にはマクロ定義文(#define文)の出力命令を挿入する前のソースコードの一例を、そして図3(b)にはマクロ定義文(#define文)の出力命令(情報出力命令)を挿入した後のソースコードの一例をそれぞれ示している。実際に用いられるプリプロセッサが上記マクロを具体的に展開11、12し、実際に用いられるコンパイラ23がそれから実行体24を生成する。コンパルされたプログラムの実行時にマクロ定義情報が出力(記録)13及び31されることから、プログラム作成者は、プログラム運用時のマクロ種別やその展開を容易に知ることができる。なお、この検証後に最終的に生成されるプログラム実行体24の生成には、情報出力命令が削除されたソースコード(図3(a))が使用される。
ところで、複数のソースコードが存在する場合には、装置が保持している規則により、ソースコードの読み込む順番を定める。そして、その順番に従ってソースコードを読み込み、上述したマクロ定義情報の解析、および以降の処理を行う。この場合、複数のソースコードから、一度にマクロ定義に関する情報を入手することができるので、1つ1つを実行することによる作業漏れを防ぐことができる。
また、利用者が処理順番を指定しているときは、その指定順番に従って、ソースコードの読み込みを行う。そして、その順番に従って、マクロ情報の解析、および以降の処理を行う。利用者が定義した順番で実行することができるので、必要に応じてマクロ定義情報の取得を行うことができる。
さらに、情報出力命令挿入部12では、装置が保持している出力命令ではなく、利用者が指定した出力命令を代わりにソースコードに挿入させることができる。利用者が設定した命令を用いることにより、同じ装置を用いてさまざまなコンパイラに対応させることができる。
なお、装置にはあらかじめ利用環境に応じた特定のコンパイラを使うように指定されているが、複数のコンパイラが利用可能な場合には、利用可能なコンパイラの中から利用者がひとつ選択し、選択したコンパイラをマクロ定義情報記録手段において実行体の生成に用いるコンパイラとすることができる。複数のコンパイラの中から利用者が設定したコンパイラを用いることにより、複数のコンパイラが使用可能な環境においても、使用者が意図したコンパイラによる有効なマクロ定義情報を得ることができるようになる。
ところで、マクロ定義情報記録手段にてファイルに記録する定義情報と同じものを、装置からアクセス可能なメモリにも記録するようにもできる。メモリに取得結果を記録することにより、ファイルを扱えない他の装置でも、メモリにアクセスすることでマクロ定義情報を扱うことができるようになる。
さらにまた、定義情報としてファイルに記録する際には、装置が保持しているフォーマット以外に利用者が指定したフォーマットを代わりに用いてファイルへの記録を行うようにすることもできる。マクロ定義情報を記録するフォーマットを任意に指定できることにより、生成されるマクロ定義情報を他の装置から使いやすくできる。
本発明によるマクロ定義情報取得装置の一構成例を示すブロック図である。 図1のマクロ定義情報取得装置の一動作例を示すフローチャートである。 図1のマクロ定義情報取得装置により情報出力命令が挿入されたソースコードの一例を示した図である。
符号の説明
10 マクロ定義情報取得手段
11 マクロ定義情報解析部
12 情報出力命令挿入部
13 マクロ情報取得部
21 ソースコード
22 出力命令入りソースコード
23 コンパイラ
24 実行体
31 マクロ定義情報

Claims (3)

  1. サブプログラムを含むメインプログラムを読み込み、該メインプログラムに含まれるすべてのサブプログラム情報を取得するサブプログラム情報取得手段と、
    前記サブプログラム情報取得手段で取得したサブプログラム情報を、前記メインプログラムにおけるサブプログラムの後に、コンパイラ・実行環境に適合するサブプログラム情報出力命令として挿入するサブプログラム情報出力命令挿入手段と、
    前記情報出力命令挿入手段によりサブプログラム情報出力命令が挿入されたメインプログラムを、あらかじめ指定したコンパイラによってコンパイルし、取得した実行体を実行することで、挿入したサブプログラム情報出力命令により出力されたサブプログラム情報を記憶装置に記録するサブプログラム情報記録手段と、
    を備えたことを特徴とするサブプログラム情報取得装置。
  2. マクロ定義を含むソースコードを読み込み、すべてのマクロ定義情報を取得するマクロ定義情報取得手段と、
    前記マクロ定義情報取得手段で得たマクロ定義情報を、前記ソースコードにおけるマクロ定義の後に、コンパイラ・実行環境に適合するマクロ定義情報出力命令として挿入するマクロ定義情報出力命令挿入手段と、
    前記マクロ定義情報出力命令挿入手段によりマクロ定義情報出力命令が挿入されたソースコードを、あらかじめ指定したコンパイラによってコンパイルし、実行体を実行することで、挿入したマクロ定義情報出力命令により出力されたマクロ定義情報を記憶装置に記録するマクロ定義情報記録手段と、
    を備えたことを特徴とするマクロ定義情報取得装置。
  3. マクロ定義を含むソースコードを読み込み、
    前記ソースコードに含まれるすべてのマクロ定義情報を取得して、
    前記マクロ定義情報を、前記ソースコードにおけるマクロ定義の後に、コンパイラ・実行環境に適合するマクロ定義情報出力命令として挿入し、
    前記マクロ定義情報出力命令が挿入された前記ソースコードを、あらかじめ指定したコンパイラによってコンパイルし、取得した実行体を実行することで、挿入したマクロ定義情報出力命令により出力されるマクロ定義情報を取得し、
    前記出力され取得したマクロ定義情報を含めたプログラムを製造する
    ことを特徴とするプログラム製造方法。
JP2006090153A 2006-03-29 2006-03-29 マクロ定義情報取得装置 Pending JP2007265098A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006090153A JP2007265098A (ja) 2006-03-29 2006-03-29 マクロ定義情報取得装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006090153A JP2007265098A (ja) 2006-03-29 2006-03-29 マクロ定義情報取得装置

Publications (1)

Publication Number Publication Date
JP2007265098A true JP2007265098A (ja) 2007-10-11

Family

ID=38638010

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006090153A Pending JP2007265098A (ja) 2006-03-29 2006-03-29 マクロ定義情報取得装置

Country Status (1)

Country Link
JP (1) JP2007265098A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018120447A (ja) * 2017-01-26 2018-08-02 株式会社平和 遊技機
CN115167325A (zh) * 2022-08-23 2022-10-11 郑州华泰联合工业自动化有限公司 一种电缆智能化加工控制方法、系统、设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11154093A (ja) * 1997-11-21 1999-06-08 Toshiba Corp プログラムコンパイラ及びコンパイラ用プログラムを記録した記録媒体

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11154093A (ja) * 1997-11-21 1999-06-08 Toshiba Corp プログラムコンパイラ及びコンパイラ用プログラムを記録した記録媒体

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018120447A (ja) * 2017-01-26 2018-08-02 株式会社平和 遊技機
CN115167325A (zh) * 2022-08-23 2022-10-11 郑州华泰联合工业自动化有限公司 一种电缆智能化加工控制方法、系统、设备及存储介质
CN115167325B (zh) * 2022-08-23 2023-12-19 郑州华泰联合工业自动化有限公司 一种电缆智能化加工控制方法、系统、设备及存储介质

Similar Documents

Publication Publication Date Title
JP2004164554A (ja) プログラム実行監視装置および方法
JP2007018254A (ja) 言語処理装置
JP2008276735A (ja) プログラムコード変換装置及びプログラムコード変換方法
JP2007265098A (ja) マクロ定義情報取得装置
JP2010108258A (ja) コンパイル方法及びコンパイルプログラム
US9417871B2 (en) Automatic generation of certificate of origin (COO) for software systems
JP2005165919A (ja) プログラム実行方法、プログラム作成方法、情報処理装置及びプログラム
JP6199278B2 (ja) プログラム変換システム
JP4888790B2 (ja) 契約定義関数検証装置、その方法及びそのプログラム
JP2005071135A (ja) 変数の統計処理を行うコンパイル処理プログラム、およびその記録媒体、およびその処理方法ならびにその処理装置
JP2007334469A (ja) プログラマブルコントローラ及びこれを用いた機器制御方法
JP6502044B2 (ja) データ解析装置、データ解析方法、および、プログラム。
JP2009258796A (ja) プログラム開発装置及びプログラム開発方法
US20180267680A1 (en) Screen creation apparatus, simulation apparatus and recording medium
JP2006338399A (ja) プログラム開発装置、プログラム開発ソフトウェア及び記憶媒体
JP2004026083A5 (ja)
JP2009064207A (ja) コンパイル装置
JP2010026968A (ja) 回路生成支援プログラム及び回路生成支援方法
JP2008176520A (ja) タグ変換装置
JP5353587B2 (ja) 組み込み用プログラム開発装置及び組み込み用プログラム開発方法
JP2006146731A (ja) プログラム、記憶媒体、アセンブラ装置、コンパイラ装置、シミュレータ装置及びエミュレータ装置
JP2009515243A (ja) ホストコンピュータ上で実行可能なシミュレーションプログラムを生成する方法
JP2009015734A (ja) プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム
JP2007080207A (ja) プログラム開発支援システム及びリンカ
JP2006236088A (ja) トレースデータ収集装置、トレースデータ収集支援装置、トレースデータ収集方法、トレースデータ収集プログラムおよびトレースデータ収集支援プログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100720

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101116