JP5385103B2 - マクロ展開方法およびプリプロセッサ - Google Patents
マクロ展開方法およびプリプロセッサ Download PDFInfo
- Publication number
- JP5385103B2 JP5385103B2 JP2009266740A JP2009266740A JP5385103B2 JP 5385103 B2 JP5385103 B2 JP 5385103B2 JP 2009266740 A JP2009266740 A JP 2009266740A JP 2009266740 A JP2009266740 A JP 2009266740A JP 5385103 B2 JP5385103 B2 JP 5385103B2
- Authority
- JP
- Japan
- Prior art keywords
- macro
- token
- buffer
- call
- completed
- 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
- Devices For Executing Special Programs (AREA)
Description
図1は、本実施の形態であるプリプロセッサにおけるマクロ展開処理の例を示したフローチャートである。プリプロセッサは、まず、ソースコードから文字を切り出して文字配列を生成する(S101)。次に、ソースコード(文字配列)に対して字句解析を行ってトークンを切り出してトークン配列を生成する(S102)。なお、ソースコードから文字を切り出し字句解析によってトークン化する手法については一般的なプリプロセッサのものと同様であるため、ここでの説明は省略する。
図2は、本実施の形態における多段のマクロ展開の処理例を示した図である。図2の例では、多段のマクロ呼び出しにおいてネストの外側から優先的に展開する場合の例を示している。すなわち、バッファ内に読み込んだトークンを先頭から判断して、各トークンの連結がマクロ呼び出しとして完結している場合(すなわち、本実施の形態ではバッファ内の先頭から後端までの全てのトークンがマクロ呼び出しとして完結している場合)に、マクロ展開可能と判定する。
Claims (5)
- バッファを備えたコンピュータによりソースコード内のマクロ呼び出しをマクロ定義によって展開するマクロ展開方法であって、
前記コンピュータは、
前記ソースコードの文字列から字句解析により第1のトークンを切り出してトークン配列を生成するステップと、
前記トークン配列を入力として、前記トークン配列から順に前記第1のトークンを前記バッファに読み込むステップと、
前記バッファ内の前記各第1のトークンについて前記マクロ呼び出しに該当する部分であるか否かを判定し、前記マクロ呼び出しに該当する部分ではない場合に、前記バッファ内の前記各第1のトークンを処理結果として出力して前記バッファをクリアするステップと、
前記バッファ内の前記各第1のトークンが前記マクロ呼び出しに該当する部分である場合に、前記バッファ内の前記各第1のトークンの全部または一部が前記マクロ呼び出しとして完結しているか否かを判定し、前記マクロ呼び出しとして完結している場合に、前記マクロ呼び出しとして完結している部分を対応する前記マクロ定義の内容によって置換して展開するステップと、
前記マクロ呼び出しを展開した文字列から字句解析により第2のトークンを切り出すステップと、
切り出した前記各第2のトークンを、入力の前記トークン配列の先頭に戻し、前記バッファにおいて前記マクロ呼び出しを展開した部分をクリアするステップとを実行することを特徴とするマクロ展開方法。 - 請求項1に記載のマクロ展開方法において、
前記コンピュータは、
前記バッファ内の前記各第1のトークンの全部または一部が前記マクロ呼び出しとして完結しているか否かを判定する際に、前記バッファ内の先頭からの前記各第1のトークンの全部または一部によって判定することを特徴とするマクロ展開方法。 - 請求項1に記載のマクロ展開方法において、
前記コンピュータは、
前記バッファ内の前記各第1のトークンの全部または一部が前記マクロ呼び出しとして完結しているか否かを判定する際に、前記バッファ内の後端からの前記各第1のトークンの全部または一部によって判定することを特徴とするマクロ展開方法。 - 請求項1に記載のマクロ展開方法において、
前記コンピュータは、
前記バッファ内の前記各第1のトークンの全部または一部が前記マクロ呼び出しとして完結しているか否かを判定する際に、前記コンピュータに対する指示に基づいて、前記バッファ内の先頭からの前記各第1のトークンの全部または一部によって判定するか、前記バッファ内の後端からの前記各第1のトークンの全部または一部によって判定するかを切り替えることを特徴とするマクロ展開方法。 - バッファを備えるコンピュータに、ソースコード内のマクロ呼び出しをマクロ定義によって展開するマクロ展開処理を実行させるためのプリプロセッサであって、
前記コンピュータに、
前記ソースコードの文字列から字句解析により第1のトークンを切り出してトークン配列を生成するステップと、
前記トークン配列を入力として、前記トークン配列から順に前記第1のトークンを前記バッファに読み込むステップと、
前記バッファ内の前記各第1のトークンについて前記マクロ呼び出しに該当する部分であるか否かを判定し、前記マクロ呼び出しに該当する部分ではない場合に、前記バッファ内の前記各第1のトークンを処理結果として出力して前記バッファをクリアするステップと、
前記バッファ内の前記各第1のトークンが前記マクロ呼び出しに該当する部分である場合に、前記バッファ内の前記各第1のトークンの全部または一部が前記マクロ呼び出しとして完結しているか否かを判定し、前記マクロ呼び出しとして完結している場合に、前記マクロ呼び出しとして完結している部分を対応する前記マクロ定義の内容によって置換して展開するステップと、
前記マクロ呼び出しを展開した文字列から字句解析により第2のトークンを切り出すステップと、
切り出した前記各第2のトークンを、入力の前記トークン配列の先頭に戻し、前記バッファにおいて前記マクロ呼び出しを展開した部分をクリアするステップとを実行させることを特徴とするプリプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009266740A JP5385103B2 (ja) | 2009-11-24 | 2009-11-24 | マクロ展開方法およびプリプロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009266740A JP5385103B2 (ja) | 2009-11-24 | 2009-11-24 | マクロ展開方法およびプリプロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011113148A JP2011113148A (ja) | 2011-06-09 |
JP5385103B2 true JP5385103B2 (ja) | 2014-01-08 |
Family
ID=44235458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009266740A Expired - Fee Related JP5385103B2 (ja) | 2009-11-24 | 2009-11-24 | マクロ展開方法およびプリプロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5385103B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116756103B (zh) * | 2023-08-23 | 2023-10-27 | 北京云枢创新软件技术有限公司 | 基于使用行的宏定义文本展开方法、电子设备和介质 |
CN117112730B (zh) * | 2023-08-23 | 2024-03-22 | 北京云枢创新软件技术有限公司 | 基于宏展开文本的目标文本搜索方法、电子设备和介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5701487A (en) * | 1995-03-27 | 1997-12-23 | Sun Microsystems, Inc. | Method and apparatus for displaying locations of errors detected inside software macro calls |
JP3130828B2 (ja) * | 1997-04-28 | 2001-01-31 | 日本電気アイシーマイコンシステム株式会社 | アセンブル処理方式 |
-
2009
- 2009-11-24 JP JP2009266740A patent/JP5385103B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2011113148A (ja) | 2011-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101279179B1 (ko) | 병렬 프로그램 생성 방법 | |
JP2007141173A (ja) | コンパイルシステム、デバッグシステムおよびプログラム開発システム | |
JP5385103B2 (ja) | マクロ展開方法およびプリプロセッサ | |
US5522074A (en) | Vectorization system for vectorizing loop containing condition induction variables | |
JP5385102B2 (ja) | ソース解析プログラム、プリプロセッサ、レキサ、および構文木解析プログラム | |
JP2006243838A (ja) | プログラム開発装置 | |
US8161466B2 (en) | Method of pre-processing conditional region | |
JP6175306B2 (ja) | 制御プログラム分割装置、制御プログラム分割方法及びその記録媒体 | |
JP2001290655A (ja) | コンパイラ、コンピュータシステム、最適化方法、最適化プログラム、記憶媒体及びプログラム伝送装置 | |
JPH0756745A (ja) | 言語処理プログラムのコンパイラ処理方式 | |
US20240202522A1 (en) | Device and method for generating deep learning model graph and abstract syntax tree for integrated compiler | |
JP2009064207A (ja) | コンパイル装置 | |
JP5181788B2 (ja) | ソースプログラムの言語変換装置、方法及びプログラム | |
JP2956591B2 (ja) | ループ外への条件付き飛び出しがあるループの並列化方法及び装置 | |
JPH08328841A (ja) | ソフトウェア生成装置 | |
JP2007122187A (ja) | プログラム・コード生成装置 | |
JP2585793B2 (ja) | コンパイラシステム | |
US20090254879A1 (en) | Method and system for assuring data integrity in data-driven software | |
US7478372B2 (en) | Method for operating a computer system | |
JP2004246924A (ja) | アプリケーションジェネレータ開発支援装置及びアプリケーションジェネレータ開発支援方法 | |
JP6447358B2 (ja) | ソースコード生成プログラム、ソースコード生成方法およびコンピュータ | |
JP2008015665A (ja) | プログラム解析方法及びプログラム解析装置 | |
Miyazaki et al. | A Generator of Hadoop MapReduce Programs that Manipulate One-dimensional Arrays | |
JPH08272622A (ja) | プログラム変換装置 | |
JP5197061B2 (ja) | プログラム分割装置および方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120913 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130625 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130730 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130912 |
|
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: 20131001 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131003 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |