JP5038760B2 - Source code conversion apparatus and source code conversion method - Google Patents

Source code conversion apparatus and source code conversion method Download PDF

Info

Publication number
JP5038760B2
JP5038760B2 JP2007085406A JP2007085406A JP5038760B2 JP 5038760 B2 JP5038760 B2 JP 5038760B2 JP 2007085406 A JP2007085406 A JP 2007085406A JP 2007085406 A JP2007085406 A JP 2007085406A JP 5038760 B2 JP5038760 B2 JP 5038760B2
Authority
JP
Japan
Prior art keywords
source code
conversion
analysis unit
policy
compiler
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
Application number
JP2007085406A
Other languages
Japanese (ja)
Other versions
JP2008243019A (en
Inventor
志門 萱嶋
信之 池田
欣夫 片岡
充伸 吉田
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2007085406A priority Critical patent/JP5038760B2/en
Publication of JP2008243019A publication Critical patent/JP2008243019A/en
Application granted granted Critical
Publication of JP5038760B2 publication Critical patent/JP5038760B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

本発明は、ソースコードを複数のパターンに変換するソースコード変換装置及びソースコード変換方法に関する。   The present invention relates to a source code conversion apparatus and a source code conversion method for converting a source code into a plurality of patterns.

組み込みシステムにおいてはソースコードの性能が優先される局面が多い。しかし、時間的性能と空間的性能はトレードオフの関係にあることが多く、そのトレードオフを充分に検討する必要がある。特に組込みシステムでは、プラットフォーム(CPU等)の変更が頻繁に発生し、その度にコンパイラが変更される。その上、組込みシステムで使用されるコンパイラは、コードの書き方により最適化の利き具合が異なる。しかしながら、ソースコードの最適化のノウハウを習得するコストを多くかけることは望ましくない。   In an embedded system, the performance of source code is often prioritized. However, temporal performance and spatial performance are often in a trade-off relationship, and it is necessary to fully consider the trade-off. Especially in an embedded system, a platform (CPU or the like) frequently changes, and the compiler is changed each time. In addition, compilers used in embedded systems have different levels of optimization depending on how the code is written. However, it is not desirable to increase the cost of acquiring know-how for optimizing source code.

また、組み込みシステムにおいて最適化オプションを用いることも考えられるが、例えばテスト版と製品版とで同じオブジェクトファイルを使いたいとか、デバッガでソースコードとの対応がとりにくくなる等の理由により、最適化オプションを使いたくない場面も想定し得る。   It is also possible to use an optimization option in an embedded system. For example, if you want to use the same object file for the test version and the product version, or if it is difficult to use the source code in the debugger, the optimization option is used. You can also imagine situations where you do not want to use options.

よって、組み込みシステムに使用されるソースコードは、コンパイラや性能面での要求に合わせて記述される必要がある。しかし、開発の際には常に同じコンパイラが使われるとは限らず、また性能面での要求もCPUやメモリ搭載量等はターゲットシステムにより異なっている。従って、どのようなソースコードが開発環境にあったソースコードなのかを知る必要もある。   Therefore, the source code used in the embedded system needs to be described according to the compiler and performance requirements. However, the same compiler is not always used at the time of development, and the demands in terms of performance also differ depending on the target system, such as CPU and memory loading. Therefore, it is necessary to know what source code is the source code suitable for the development environment.

そのためには、多くのソースコードが試験されることにより最適なものが選択されることが望ましい。コンパイラを変更した際に、当初のコンパイラに最適化したソースコードのままだと、逆に最適化の機会を逃したり必要もないのに可読性が低下したままになっていたりする。これらの試行には多くの組み合わせのソースコードが必要となるが、それを人手で生成するのは、現実的ではない。実際に現場のソースコードを読むとあちこちに当初のコンパイラに合わせて記述された名残が存在することがあり、その場合、可読性が低下している。   For this purpose, it is desirable to select an optimum one by testing many source codes. When the compiler is changed, if the source code optimized for the original compiler is left as it is, the readability may still be lowered even though the opportunity for optimization is not missed or necessary. These trials require many combinations of source code, but it is not practical to generate them manually. When actually reading the source code in the field, there may be remnants written around the original compiler, and in this case, the readability is lowered.

そこで、ソースコードの最適化を行うシステムが提案されている(特許文献1参照)。このシステムは、ソースコードにおいてループ処理内で使用されるコードの一部を削除することにより、処理速度の向上やコードサイズの低減を図っている。
特開平7−36707号公報
Therefore, a system for optimizing the source code has been proposed (see Patent Document 1). In this system, a part of the code used in the loop process is deleted from the source code, thereby improving the processing speed and reducing the code size.
JP-A-7-36707

ソースコードを最適化する際には、以下のような課題がある。   When optimizing the source code, there are the following problems.

人間系での試行においては、ある開発環境において、どのような記述法が良いか知るにはコンパイラのマニュアルや試行が必要である。ただし、等価な機能を生成する書法は多くあり、それを一々人が試すのは時間的に現実的な作業ではなく問題となっている。   In human trials, it is necessary to have a compiler manual and trials in order to know what description method is good in a certain development environment. However, there are many writing systems that generate equivalent functions, and it is not a realistic task in time but a problem for people to try them one by one.

コンパイラにおいては、ターゲットとなるマシン上で効率よく動作するようにコードを最適化をする必要がある。また、コンパイル中の後工程で利用(最適化)しやすいように変換を実施しているが、その方法は、ユーザが評価を行いフィードバックをかけることができず、他コンパイラで利用することもできないため、開発環境が変わりコンパイラが変わることが多い分野では大きな問題となる。   In the compiler, it is necessary to optimize the code so that it operates efficiently on the target machine. In addition, the conversion is performed so that it can be easily used (optimized) in the later stage of compilation, but this method cannot be evaluated by the user and fed back, and cannot be used by other compilers. Therefore, it becomes a big problem in fields where the development environment changes and compilers often change.

さらに、オプション設定によりユーザからトレードオフの選択を受ける方法も用いられているが、その設定の粒度は荒く、細かな設定を実施することができない。数十kバイト以下に収まるように速度優先等を考慮する必要があるが、速度優先やメモリ優先等の簡単な条件程度しか決定できない。   Furthermore, although a method of receiving a trade-off selection from the user by option setting is also used, the granularity of the setting is rough, and detailed setting cannot be performed. Although it is necessary to consider speed priority so as to be within several tens of kilobytes, only simple conditions such as speed priority and memory priority can be determined.

その上、コンパイラにより予めどのような最適化を可能かが決まってしまい、書法などにより最適化のばらつきが生じる可能性がある。そのため、コンパイラを変えた場合にかえって最適化を妨げたり、最適化に影響がないにもかかわらず可読性が低下したままとなっている可能性があり問題である。   Furthermore, it will be determined whether it is possible in advance what optimization by the compiler, it is possible that variations in the optimization occurs due calligraphy. For this reason, there is a possibility that the optimization may be hindered when the compiler is changed, or the readability may remain lowered even though the optimization is not affected.

ケースツールにおいては、ソースコードのリバースエンジニアリングを行いモデルを出力することが望まれる。また、モデルからソースコードを(半)自動生成することが望まれる。この方法は、全体を見れば、ソースコードからソースコードを出力しているように見えるが、下記の制約がある。   In case tools, it is desirable to reverse engineer source code and output models. In addition, it is desirable to (semi) automatically generate source code from a model. Although this method seems to output the source code from the source code as a whole, there are the following restrictions.

・リバースエンジニアリングでは、ケースツールに対応したダイアグラムで表現できるものに対応するソースコードしか変換できない。また、ソースコードの書式を指定するものもある。これでは、既に書いてしまったソースコードをケースツールに入力することは難しい。   ・ In reverse engineering, only source code corresponding to what can be expressed in a diagram corresponding to the case tool can be converted. Some also specify the format of the source code. This makes it difficult to input source code that has already been written into the case tool.

・モデルからソースコードを生成する際に最適化を行うものもあるが、モデル上の情報を基に最適化を行っているため、モデルにない部分についてまで考慮できるわけではない。最適化を行うためには、プログラマがモデルや指定のフォーマットでソースコードを記述する必要がある。既にソースコードが存在している場合、指定のフォーマットに書き直す作業が必要である。   ・ Some optimizations are performed when generating source code from a model. However, since optimization is performed based on information on the model, it is not possible to consider parts that are not in the model. In order to perform optimization, the programmer needs to write the source code in a model or specified format. If the source code already exists, rewriting to the specified format is required.

リファクタリングツールにおいては、ソースコードについて、ユーザの指示に従って修正する必要がある部分をできる限り少なくすることが望ましい。この際、手作業で書き直すのに比べ間違い等が少なくなるのは確かであるが、一度に複数のソースコードを生成するわけではなく、ある程度、ユーザがどこをどう直せばよいのかわかっている必要がある。したがって、この方法では、コンパイラに関するノウハウが蓄積されていない時点で、つまり試行錯誤が必要な状況では、手間を大きく削減することはできない。   In the refactoring tool, it is desirable to reduce as much as possible the part of the source code that needs to be corrected according to the user's instructions. At this time, it is certain that there will be fewer errors etc. compared to manual rewriting, but it does not generate multiple source codes at once, and it is necessary to know to what extent the user should fix to some extent There is. Therefore, with this method, it is not possible to greatly reduce the effort at the time when know-how related to the compiler is not accumulated, that is, in a situation where trial and error are necessary.

本発明は、上記課題を鑑みなされたもので、元のソースコードを、可能な限り多彩な変換パターンの中から、適切なパターンのソースコードに変換することができるソースコード変換装置及びソースコード変換方法を提供することを目的とする。   The present invention has been made in view of the above problems, and a source code conversion apparatus and source code conversion capable of converting an original source code into a source code having an appropriate pattern from a variety of conversion patterns as much as possible. It aims to provide a method.

上記課題を解決するために、本発明に係るソースコード変換装置は、ソースコードの構造を解析して構造木を作成する解析部と、ソースコードの複数の変換パターンを示すパターン表を記憶する記憶部と、ソースコードを変換するためのポリシを有するとともに、前記記憶部が記憶するパターン表を前記ポリシに照らし合わせて変換式の組み合わせを作成する一致性解析部と、前記一致性解析部により作成された変換式の組み合わせに基づいてソースコードを変換する作成部と、前記作成部により予め作成された複数パターンのソースコードに基づいてコンパイラ特性を作成するフィードバック解析部を備え、前記一致性解析部は、前記パターン表をこのフィードバック解析部により作成されたコンパイラ特性及び前記ポリシに照らし合わせて、変換式の組み合わせを作成することを特徴とする。 In order to solve the above problems, a source code conversion apparatus according to the present invention includes an analysis unit that analyzes a structure of a source code to create a structure tree, and a memory that stores a pattern table indicating a plurality of conversion patterns of the source code And a consistency analysis unit that creates a combination of conversion formulas by comparing a pattern table stored in the storage unit against the policy and a policy for converting the source code A matching unit that includes a creation unit that converts source code based on a combination of the converted conversion formulas, and a feedback analysis unit that creates compiler characteristics based on a plurality of patterns of source code created in advance by the creation unit. The pattern table is checked against the compiler characteristics created by the feedback analysis unit and the policy. Characterized by creating a combination of conversion formulas.

また、本発明に係るソースコード変換方法は、解析部と、ソースコードの複数の変換パターンを示すパターン表を記憶する記憶部と、ソースコードを変換するためのポリシを有する一致性解析部と、作成部と、フィードバック解析部とを備えたソースコード変換装置におけるソースコード変換方法であって、前記解析部が、ソースコードの構造を解析して構造木を作成する解析ステップと、前記一致性解析部が、前記パターン表を前記ポリシに照らし合わせて変換式の組み合わせを作成する一致性解析ステップと、前記作成部が、前記一致性解析ステップにより作成された変換式の組み合わせに基づいてソースコードを変換する作成ステップと、前記フィードバック解析部が、前記作成ステップにより予め作成された複数パターンのソースコードに基づいてコンパイラ特性を作成するフィードバック解析ステップと、を有し、前記コンパイラ特性が作成された後における一致性解析ステップでは、前記一致性解析部が、前記パターン表を前記コンパイラ特性及び前記ポリシに照らし合わせて、変換式の組み合わせを作成することを特徴とする。 Further, the source code conversion method according to the present invention includes an analysis unit, a storage unit that stores a pattern table indicating a plurality of conversion patterns of the source code, a consistency analysis unit having a policy for converting the source code, a creation unit, a source code conversion method in the source code conversion apparatus and a feedback analyzer, the analyzer is an analyzing step of creating a tree structure by analyzing the structure of the source code, the coincidence analysis parts includes a consistent analysis step of creating a combination of conversion equation against the pattern table to the policy, the creation unit, a source code based on a combination of the conversion formulas created by the matching analysis step a generating step of converting said feedback analyzer is Sosuko plurality of patterns created beforehand by the creation step Anda feedback analysis step of creating a compiler characteristics based on de, in conformity analyzing step of definitive after the compiler characteristics is created, the coincidence analysis unit, the compiler characteristics and the policy of the pattern table It is characterized by creating a combination of conversion formulas in light of the above.

本発明に係るソースコード変換装置及びソースコード変換方法によると、元のソースコードを、可能な限り多彩な変換パターンの中から、適切なパターンのソースコードに変換することが可能となる。   According to the source code conversion device and the source code conversion method according to the present invention, it is possible to convert the original source code into a source code having an appropriate pattern from as many conversion patterns as possible.

本発明に係るソースコード変換装置及びソースコード変換方法の実施形態を、添付図面に基づいて詳細に説明する。   Embodiments of a source code conversion apparatus and a source code conversion method according to the present invention will be described in detail with reference to the accompanying drawings.

〔第1実施形態〕
図1は、本発明に係るソースコード変換装置の第1実施形態を示すシステム構成図である。
[First Embodiment]
FIG. 1 is a system configuration diagram showing a first embodiment of a source code conversion apparatus according to the present invention.

第1実施形態のソースコード変換装置1は、ソースコード20の変換を行うPC(Personal Computer)等の装置であり、ソースコード20の構文解析を行って構文木を作成する構文解析部2と、構文解析部2により作成された構文木に対して文脈解析を行う文脈解析部3と、構文のバリエーションパターンを記憶するバリエーションパターン記憶部4と、バリエーションパターン記憶部4が記憶するバリエーションパターンを変換ポリシ40に照らし合わせて変換式の組み合わせを作成するバリエーションパターン一致性解析部5と、バリエーションパターン一致性解析部5により作成された変換式の組み合わせに基づいて複数パターンのソースコード20を変換するバリエーション生成部6と、バリエーション生成部6により生成されたソースコード20Aに対してコンパイルやプロファイリング、解析を行うコンパイラ・プロファイラ・静的解析ツール7と、を備えている。   The source code conversion device 1 according to the first embodiment is a device such as a PC (Personal Computer) that converts the source code 20, a syntax analysis unit 2 that performs syntax analysis of the source code 20 and creates a syntax tree, A context analysis unit 3 that performs context analysis on the syntax tree created by the syntax analysis unit 2, a variation pattern storage unit 4 that stores a variation pattern of the syntax, and a conversion policy that stores a variation pattern stored in the variation pattern storage unit 4 Variation pattern matching analysis unit 5 that creates a combination of conversion formulas against 40, and variation generation that converts multiple patterns of source code 20 based on the combination of conversion formulas created by variation pattern matching analysis unit 5 Part 6 and variation generation part 6 Includes compiling and profiling, the compiler profiler static analysis tools 7 for analysis, the source code 20A which is more generated.

ソースコード変換装置1による変換の対象となるソースコード20は、C言語等のプログラミング言語の文法に則り、動作確認ができた既存のソースコード20をプリプロセッサ(前処理系)にかけたものとする。   It is assumed that the source code 20 to be converted by the source code conversion apparatus 1 is obtained by applying the existing source code 20 whose operation has been confirmed to a preprocessor (preprocessing system) according to the grammar of a programming language such as C language.

構文解析部2は、ソースコード20を構文解析し、その解析結果を図2に示すような構造木形式で出力する。構造木の各ノードには、行番号、予約語、数値、条件式、代入式、単項演算式、スコープの情報が蓄積される。   The syntax analysis unit 2 parses the source code 20 and outputs the analysis result in a structural tree format as shown in FIG. In each node of the structure tree, line number, reserved word, numerical value, conditional expression, assignment expression, unary operation expression, and scope information are stored.

行番号の情報は、変換時に変更箇所を指定するために利用される。予約語は、プログラミング言語の仕様で定められた、変数名や関数名として定義できない単語であり、「if」、「for」、「while」、「return」、「true」等を予約語としているプログラム言語が多い。この予約語の情報は、他形式の条件文へ変換する際に利用される。数値の情報は、例えば2のべき乗であるか否か等の情報である。条件式は、等値演算に使われる変数で、例えば「if」等の条件文において使用される。この条件式の情報は、「switch」文等への変換に利用される。代入式や単項演算式は、繰り返し文のカウンタとして利用されているか否かを調べるために利用される。スコープとは変数や関数の有効範囲である。   The line number information is used to specify the changed part at the time of conversion. A reserved word is a word that is defined in a programming language specification and cannot be defined as a variable name or function name, and “if”, “for”, “while”, “return”, “true”, etc. are reserved words. There are many programming languages. This reserved word information is used when converting into a conditional statement of another format. The numerical information is information such as whether or not it is a power of 2, for example. The conditional expression is a variable used for an equality operation, and is used in a conditional statement such as “if”, for example. Information on this conditional expression is used for conversion to a “switch” sentence or the like. An assignment expression or a unary operation expression is used to check whether it is used as a counter for repeated statements. A scope is the scope of a variable or function.

文脈解析部3は、構文解析部2による構文解析の解析結果(構造木)をたどり、文脈、すなわちコードの前後関係から導かれる情報をこの構造木に付加する。   The context analysis unit 3 follows the analysis result (structure tree) of the syntax analysis by the syntax analysis unit 2, and adds information derived from the context, that is, the context of the code, to the structure tree.

例えば、「while」文の条件式に使われている変数が、サブ文(ループ文)中でカウンタ(「for」文の第3式)として利用されているかを確認する。また、スコープ内で新たに定義した変数が既に定義済みの変数を隠蔽する場合、隠蔽しない変数名を新たに生成し、ノードに記録する。   For example, it is confirmed whether a variable used in a conditional expression of a “while” statement is used as a counter (third expression of a “for” statement) in a sub-statement (loop statement). When a newly defined variable in the scope hides a variable that has already been defined, a new variable name that is not hidden is generated and recorded in the node.

バリエーションパターン記憶部4は、図3に示すようなバリエーションパターン表30を予め記憶している。バリエーションパターン表30は、繰り返し文や条件文、2のべき乗を用いた乗除算のバリエーションを生成する様々なパターンが記述されている表である。   The variation pattern storage unit 4 stores a variation pattern table 30 as shown in FIG. 3 in advance. The variation pattern table 30 is a table that describes various patterns for generating variations of multiplication and division using a repetition sentence, a conditional sentence, and a power of two.

例えば図3に示すバリエーションパターン表30においては、ソースコード20のパターンとして、パターンA、パターンB、パターンCの3種類のパターンが示されている。パターンAの1行目(「1A」の欄)は、「for (<A>;<b>;<C>) <D>」と示されていて、パターンBの1行目(「1B」の欄)には、「<A>; while(<B>) 〔<D><C>〕」と示されていて、また、パターンCの1行目(「1C」の欄)には、「<A>; do{<D>;<C>} while (<B>);」と示されている。これらの1A、1B、1Cはパターンは違うが同義である。同様に、2A、2B、2C、及び、3A、3B、3Cも同義である。   For example, in the variation pattern table 30 shown in FIG. 3, three types of patterns A, B, and C are shown as patterns of the source code 20. The first line of pattern A (column “1A”) is indicated as “for (<A>; <b>; <C>) <D>”, and the first line of pattern B (“1B”) (<B>) [<D> <C>]] is indicated in the column (1), and the first line of the pattern C (column (1C)) “<A>; do {<D>; <C>} while (<B>);”. These 1A, 1B, and 1C are synonymous with different patterns. Similarly, 2A, 2B, 2C, and 3A, 3B, 3C are also synonymous.

バリエーションパターン一致性解析部5は、ソースコード変換を行うための方針を示した変換ポリシ40とバリエーションパターン表30とを照らし合わせ、バリエーションパターン表30の各々の変換パターンから変換ポリシ40の変換方針と一致している構文を見つけ出す。例えば、繰り返し文であれば、構文解析の解析結果において、図3に示した<A>、<B>、<C>、<D>に一致する部分が現れているとする。このとき、バリエーションパターン一致性解析部5は、変換ポリシ40に基づいて、不要なバリエーションを生成する変換式を削除する。   The variation pattern matching analysis unit 5 compares the conversion policy 40 indicating the policy for performing source code conversion with the variation pattern table 30, and determines the conversion policy of the conversion policy 40 from each conversion pattern of the variation pattern table 30. Find matching syntax. For example, in the case of a repetitive sentence, it is assumed that portions that match <A>, <B>, <C>, and <D> shown in FIG. At this time, the variation pattern coincidence analysis unit 5 deletes a conversion formula for generating an unnecessary variation based on the conversion policy 40.

変換ポリシ40は、図4に示すように、変換する際に、バリエーション指定で利用しないパターンや変換しない関数を選択するための方針を示したものであり、バリエーション一致性解析部が予め記憶している。なお、変換ポリシ40には、効果的に変換パターンを抑制するために、読みやすさといった指標も与えられている。バリエーションパターン一致性解析部5は、この変換ポリシ40に基づいてソースコード20の変換を行う。   As shown in FIG. 4, the conversion policy 40 indicates a policy for selecting a pattern that is not used for specifying a variation or a function that is not converted when converting, and is stored in advance by the variation matching analysis unit. Yes. The conversion policy 40 is also provided with an index such as readability in order to effectively suppress the conversion pattern. The variation pattern matching analysis unit 5 converts the source code 20 based on the conversion policy 40.

図4に示した変換ポリシ40において、「Readable」では、図3のセル(例えば「1A」等)を続けて記述することで、可読性が高い変換パターンを指定する。変換ポリシ40において複数のセルが指定されている場合は、先(左側)に書かれたセルの方が可読性が高いこととする。「Unuse」では、変換パターンとして利用しないセルや関数を指定する。これは、可読性が著しく落ちる変換や性能等に特に貢献しない無用な変換を抑制するためのものである。   In the conversion policy 40 shown in FIG. 4, “Readable” specifies a conversion pattern with high readability by continuously describing the cells in FIG. 3 (for example, “1A”). When a plurality of cells are specified in the conversion policy 40, the cell written first (left side) has higher readability. “Unuse” specifies a cell or function that is not used as a conversion pattern. This is to suppress unnecessary conversion that does not particularly contribute to conversion, performance, or the like that significantly reduces readability.

また、「Not Optimize Function」では、変換しない関数を指定する。「Not Optimize File」では、変換しないファイルを指定する。「Optimize Priority」では、変換する際に優先する項目(Speed、RomSize、StackSize、RamSize等)を指定する。   In “Not Optimize Function”, a function that is not converted is designated. In “Not Optimize File”, a file not to be converted is designated. In “Optimize Priority”, an item (Speed, RomSize, StackSize, RamSize, etc.) to be prioritized at the time of conversion is designated.

なお、各変換ポリシ40でトレードオフが生じる場合、より上に書かれた変換ポリシ40が優先される。   When a trade-off occurs between the conversion policies 40, the conversion policy 40 written above is prioritized.

変換ポリシにおける変換方針の典型的な例を、以下の(1)〜(6)に挙げる。(1)〜(4)は所定のコンパイラに対して最適化する際の方針であり、(5)〜(6)はソースコード20の可読性をあげるための方針である。
(1)ポインタを用いた間接メモリアクセスは最適化されにくいのでポインタアクセスを局所化する。
(2)一般的に「do」〜「while」が最もROMサイズを消費しないので、「do」〜「while」を優先して利用する。
(3)一般的に「if」文が最もROMサイズを消費しないので、「if」文に統一する。
(4)コンパイラのバグに該当するパターンを除く。
(5)排他的な条件分岐には、「if」〜「else」文を用いる。
(6)「switch」文が使える場合には、「switch」文を用いる。
Typical examples of the conversion policy in the conversion policy are given in the following (1) to (6). (1) to (4) are policies for optimizing a predetermined compiler, and (5) to (6) are policies for improving the readability of the source code 20.
(1) Since indirect memory access using a pointer is difficult to optimize, the pointer access is localized.
(2) Since “do” to “while” generally consumes the least amount of ROM, “do” to “while” are preferentially used.
(3) Since the “if” statement generally consumes the least ROM size, it is unified with the “if” statement.
(4) Exclude patterns corresponding to compiler bugs.
(5) “if” to “else” statements are used for exclusive conditional branching.
(6) When the “switch” sentence can be used, the “switch” sentence is used.

また、バリエーションパターン一致性解析部5は、変換式の組み合わせを生成する。変換を行うスコープは、構文解析時に得たソースコード20のファイル名とソースコード20の行番号の情報から知ることができる。変換式は、正規表現に基づくsed(UNIX(登録商標)等のコマンドライン環境で使われる、定型的なテキストデータの処理を行うプログラム)等の文字列変換ツールで扱える変換式とする。   Further, the variation pattern matching analysis unit 5 generates a combination of conversion formulas. The scope for conversion can be known from the information of the file name of the source code 20 and the line number of the source code 20 obtained at the time of parsing. The conversion formula is a conversion formula that can be handled by a character string conversion tool such as sed (a program for processing regular text data used in a command line environment such as UNIX (registered trademark)) based on regular expressions.

そして、バリエーションパターン一致性解析部5は、バリエーションパターン表30の各セル毎に生成された変換式をリストとしてつなぎ、変換式の組み合わせ毎にリストを生成する。   Then, the variation pattern matching analysis unit 5 connects the conversion expressions generated for each cell of the variation pattern table 30 as a list, and generates a list for each combination of conversion expressions.

バリエーション生成部6は、バリエーションパターン一致性解析部5により作成された変換式の組み合わせを利用し、構文解析部2により構文解析される前の元のソースコード20のバリエーションパターンを、変換式の組み合わせの分だけ生成する。   The variation generation unit 6 uses the combination of conversion formulas created by the variation pattern matching analysis unit 5 and converts the variation pattern of the original source code 20 before the parsing by the syntax analysis unit 2 into the combination of conversion formulas. Generate only for.

コンパイラ・プロファイラ・静的解析ツール7は、開発環境に合わせたコンパイラやプロファイラ、静的解析ツール7であり、必要に応じて設けられる。この静的解析ツール7は、ユーザがバリエーション生成部6により生成されたソースコード20Aを評価する際に用いられる。   The compiler / profiler / static analysis tool 7 is a compiler / profiler / static analysis tool 7 suitable for the development environment, and is provided as necessary. The static analysis tool 7 is used when the user evaluates the source code 20 </ b> A generated by the variation generation unit 6.

ソースコード変換装置1では、ソースコード20を元のコードと等価な様々なバリーションの複数のソースコード20Aに変換するソースコード変換処理を行う。ソースコード変換装置1がソースコード変換処理を行う際の手順について、図5、図6、図8、及び図9に示すフローチャートに基づいて説明する。   The source code conversion apparatus 1 performs source code conversion processing for converting the source code 20 into a plurality of source codes 20A having various variations equivalent to the original code. The procedure when the source code conversion apparatus 1 performs the source code conversion process will be described based on the flowcharts shown in FIGS. 5, 6, 8, and 9.

始めに、構文解析部2が、ソースコード20のデータ構造を解析して、構造木を作成する(S101)。   First, the syntax analysis unit 2 analyzes the data structure of the source code 20 and creates a structure tree (S101).

次に、文脈解析部3が文脈解析を行う。文脈解析部3は、文脈解析として、例えば「for」文の第3式(「for」文の中で指定される3つの構文のうちの3番目の構文)を抽出する第3式抽出処理(S103)、例えばビットシフト可能な計算式を抽出する計算式抽出処理(S105)、例えばグローバル変数に隠蔽されてしまうローカル変数を検出する隠蔽変数検出処理(S107)を行う。   Next, the context analysis unit 3 performs context analysis. As the context analysis, the context analysis unit 3 extracts, for example, a third expression extraction process (third syntax of the three syntaxes specified in the “for” sentence) of the “for” sentence (third expression is extracted). S103), for example, a calculation expression extraction process (S105) for extracting a bit shiftable calculation expression, for example, a hidden variable detection process (S107) for detecting a local variable hidden by a global variable.

図6は、文脈解析部3が第3式抽出処理を行う手順を示すフローチャートである。文脈解析部3は、「while」文等のループ文を「for」文に変換する際に、「for」文の第3式(「for」文において指定される3つの構文のうちの3番目の構文)の候補をいくつか抽出し、これらから第3式を確定する。   FIG. 6 is a flowchart illustrating a procedure in which the context analysis unit 3 performs the third expression extraction process. When converting a loop statement such as a “while” statement into a “for” statement, the context analysis unit 3 uses the third expression of the “for” statement (the third of the three syntaxes specified in the “for” statement). Are extracted, and the third expression is determined from them.

まず、文脈解析部3は、構文解析部2により作成された構造木を取得する(S201)。また文脈解析部3は、S201で取得した構造木から、例えば「while」文等の繰り返しの条件式で使われている変数群を取得する(S203)。   First, the context analysis unit 3 acquires the structural tree created by the syntax analysis unit 2 (S201). Further, the context analysis unit 3 acquires a variable group used in a repetitive conditional expression such as a “while” sentence from the structural tree acquired in S201 (S203).

文脈解析部3は、S203で取得した変数群から構文を取得する(S205)。そして文脈解析部3は、S205で取得した構文が、「for」文の第3式候補で使われている変数を参照しているか否かを判断する(S207)。この「for」文の第3式候補は、後述するS219の処理で既に選出されたものとする。その変数を参照している場合(S207のYes)、例えばインクリメント等で使用している場合には「for」文の第3式ではないので、参照している変数を用いる「for」文の第3式候補から外す(S209)。なお、第3式候補が選出されていない場合は、そのままS211に進む。   The context analysis unit 3 acquires the syntax from the variable group acquired in S203 (S205). Then, the context analysis unit 3 determines whether or not the syntax acquired in S205 refers to a variable used in the third expression candidate of the “for” sentence (S207). It is assumed that the third formula candidate of the “for” sentence has already been selected in the process of S219 described later. If the variable is referenced (Yes in S207), for example, if it is used for increment or the like, it is not the third expression of the “for” statement. It removes from 3 type candidates (S209). If no third formula candidate has been selected, the process proceeds directly to S211.

文脈解析部3は、S205で取得した構文が代入文(単項演算も含む)を含むか否かを判断する(S211)。構文が代入式を含まない場合(S211のNo)は、文脈解析部3は、S205に戻り、次の構文を取得する(S205)。   The context analysis unit 3 determines whether or not the syntax acquired in S205 includes an assignment statement (including a unary operation) (S211). When the syntax does not include an assignment expression (No in S211), the context analysis unit 3 returns to S205 and acquires the next syntax (S205).

構文が代入文を含む場合(S211のYes)は、文脈解析部3は、S205で取得した構文に含まれる代入文を取得し、検査対象の代入文とする(S213)。文脈解析部3は、代入文から代入される変数を取得する(S215)。   When the syntax includes an assignment statement (Yes in S211), the context analysis unit 3 obtains the assignment statement included in the syntax obtained in S205, and sets it as a check target assignment statement (S213). The context analysis unit 3 acquires a variable to be assigned from the assignment statement (S215).

文脈解析部3は、S213で取得した変数が、条件式で使用されている変数群(S203で取得しされた変数群)の中にあるか否かを判断する(S217)。変数が変数群の中にある場合(S217のYes)は、文脈解析部3は、検査対象とした代入文を「for」文の第3式候補とする(S219)。この「for」文の第3式候補は、S207、S209の処理で使用される。   The context analysis unit 3 determines whether or not the variable acquired in S213 is in the variable group used in the conditional expression (variable group acquired in S203) (S217). If the variable is in the variable group (Yes in S217), the context analysis unit 3 sets the assignment sentence to be examined as the third expression candidate of the “for” sentence (S219). The third formula candidate of this “for” sentence is used in the processes of S207 and S209.

変数が変数群にない場合(S217のNo)は、文脈解析部3は、S205で取得した構文に、S215からS217の処理が行われていない未処理の代入文があるか否かを判断する(S221)。未処理の代入文がある場合(S221のYes)は、文脈解析部3は、S213に戻って、未処理の代入式を検査対象の代入文とする。   When the variable is not in the variable group (No in S217), the context analysis unit 3 determines whether or not there is an unprocessed assignment statement in which the processing from S215 to S217 is not performed in the syntax acquired in S205. (S221). If there is an unprocessed assignment statement (Yes in S221), the context analysis unit 3 returns to S213 and sets the unprocessed assignment expression as the assignment statement to be examined.

未処理の代入文がない場合、すなわち全ての代入文に対してS213からS217(またはS219)までの処理を行った場合(S221のNo)、または、代入文を「for」文の第3式候補とした場合(S219)は、文脈解析部3は、未処理の構文があるか否かを判断する(S223)。未処理の構文があった場合(S213のYes)は、S205に戻って次の構文を取得し(S205)、再びS207からS223の処理を行う。   When there is no unassigned assignment statement, that is, when the processing from S213 to S217 (or S219) is performed on all assignment statements (No in S221), or the assignment statement is the third expression of the “for” statement. When it is determined as a candidate (S219), the context analysis unit 3 determines whether there is an unprocessed syntax (S223). If there is an unprocessed syntax (Yes in S213), the process returns to S205 to acquire the next syntax (S205), and the processes from S207 to S223 are performed again.

未処理の構文がない場合、すなわち全ての構文に対してS205からS221(またはS219)までの処理を行った場合は、文脈解析部3は、S213で検査対象とした代入文を「for」文の第3式として決定する(S225)。   When there is no unprocessed syntax, that is, when the processing from S205 to S221 (or S219) is performed for all syntaxes, the context analysis unit 3 uses the “for” statement as the assignment statement to be examined in S213. Is determined as the third equation (S225).

また文脈解析部3は、S225で決定した「for」文の第3式を、構造木に追加する(S227)。なお、追加後の構造木を図7に示す。図7に示す記述Aのように、図2に示した構造木に、『「for」文にした場合の第3式』、『「for」文の第3式として利用可能か』の情報が追加される。   Further, the context analysis unit 3 adds the third expression of the “for” sentence determined in S225 to the structural tree (S227). The added structure tree is shown in FIG. Like description A shown in FIG. 7, in the structure tree shown in FIG. 2, information on “third expression when“ for ”sentence is used” and “can be used as the third expression of“ for ”sentence” is provided. Added.

また、S225で決定された第3式に使われている変数について、S203で取得した変数群において最初に定義がされていた場合は、文脈解析部3は、これを「for」文の第1式として、構造木に『「for」文にした場合の第1式』の情報を追加する。   If the variable used in the third expression determined in S225 is first defined in the variable group acquired in S203, the context analysis unit 3 sets this as the first of the “for” sentence. As an expression, information of “first expression when“ for ”sentence is used” ”is added to the structure tree.

このようにして、文脈解析部3により第3式候補抽出処理が行われる。   In this way, the third type candidate extraction process is performed by the context analysis unit 3.

次に文脈解析部3は、ビットシフト可能な計算式を抽出する計算式抽出処理を行う(S105)。文脈解析部3がこの計算式抽出処理を行う手順を、図8に示すフローチャートに基づいて説明する。   Next, the context analysis unit 3 performs calculation formula extraction processing for extracting a bit shiftable calculation formula (S105). A procedure in which the context analysis unit 3 performs the calculation expression extraction process will be described based on a flowchart shown in FIG.

まず文脈解析部3は、S225により「for」文の第3式候補が追加された構造木を取得する(S301)。また文脈解析部3は、S301で取得した構造木から、例えば「while」文等の繰り返しの条件式で使われている変数群を取得する(S303)。   First, the context analysis unit 3 acquires a structural tree to which the third expression candidate of the “for” sentence is added in S225 (S301). Further, the context analysis unit 3 acquires a variable group used in a repetitive conditional expression such as a “while” sentence from the structural tree acquired in S301 (S303).

文脈解析部3は、S303で取得した変数群から構文を取得する(S305)。そして文脈解析部3は、S305で取得した構文の中に2のべき乗になっている定数値があるか否かを判断する(S307)。2のべき乗になっている定数値がある場合(S307のYes)は、文脈解析部3は、その定数値を取得する(S309)。   The context analysis unit 3 acquires the syntax from the variable group acquired in S303 (S305). Then, the context analysis unit 3 determines whether or not there is a constant value that is a power of 2 in the syntax acquired in S305 (S307). When there is a constant value that is a power of 2 (Yes in S307), the context analysis unit 3 acquires the constant value (S309).

文脈解析部3は、S309で取得した定数値が乗除算に利用されているか否かを判断する(S311)。S309で取得した定数値が乗除算に利用されている場合(S311のYes)は、文脈解析部3は、この定数値がビットシフト可能であるとする(S313)。そして、文脈解析部3は、この定数値がビットシフト可能である旨を、S301で取得した構造木に追加する(S315)。具体的には、図7に示す記述Bのように、図2に示した構造木に、『2のべき乗』の情報が追加される。   The context analysis unit 3 determines whether or not the constant value acquired in S309 is used for multiplication and division (S311). When the constant value acquired in S309 is used for multiplication / division (Yes in S311), the context analysis unit 3 assumes that the constant value can be bit-shifted (S313). Then, the context analysis unit 3 adds the fact that the constant value can be bit-shifted to the structural tree acquired in S301 (S315). Specifically, as in the description B shown in FIG. 7, the information “power of 2” is added to the structure tree shown in FIG.

また、S309で取得した定数値が乗除算に利用されていない場合(S311のNo)は、文脈解析部3は、その低数値がビットシフト可能でないとする(S317)。この場合は、文脈解析部3はS301で取得した構造木への追加は行わない。   When the constant value acquired in S309 is not used for multiplication / division (No in S311), the context analysis unit 3 assumes that the low value is not bit-shiftable (S317). In this case, the context analysis unit 3 does not add to the structural tree acquired in S301.

S315またはS317の処理が完了すると、あるいはS305で取得した構文の中に2のべき乗になっている定数値がなかった場合(S307のNo)は、文脈解析部3は、S303で取得した変数群の中に、S305からS315(またはS317)までの処理が行われていない未処理の構文があるか否かを判断する(S319)。   When the processing of S315 or S317 is completed, or when there is no constant value that is a power of 2 in the syntax acquired in S305 (No in S307), the context analysis unit 3 uses the variable group acquired in S303. It is determined whether or not there is an unprocessed syntax that has not been processed from S305 to S315 (or S317) (S319).

未処理の構文があった場合(S319のYes)は、文脈解析部3は、S305に戻って未処理の構文を取得する。また、未処理の構文がなかった場合、すなわちS303で取得した変数群の中の全ての構文についてS305からS315(またはS317)までの処理がなされた場合(S319のNo)は、文脈解析部3は、計算式抽出処理を終了する。   If there is an unprocessed syntax (Yes in S319), the context analysis unit 3 returns to S305 and acquires an unprocessed syntax. When there is no unprocessed syntax, that is, when the processing from S305 to S315 (or S317) is performed for all the syntaxes in the variable group acquired in S303 (No in S319), the context analysis unit 3 Ends the calculation formula extraction process.

文脈解析部3は、計算式抽出処理を終了すると、例えばグローバル変数に隠蔽されてしまうローカル変数を検出する隠蔽変数検出処理(S107)を行う。文脈解析部3がこの隠蔽変数検出処理を行う際の手順を、図9に示すフローチャートに基づいて説明する。   When completing the calculation formula extraction process, the context analysis unit 3 performs a hidden variable detection process (S107) that detects a local variable that is hidden by a global variable, for example. A procedure when the context analysis unit 3 performs this concealment variable detection process will be described based on the flowchart shown in FIG.

ソースコード20内で複数のローカル変数が使用されるが、ローカル変数は局所的に宣言される関数であるため、同一のソースコード20内に同定義のローカル変数が多数存在する可能性がある。同定義のローカル変数が複数存在した場合には、個々のローカル変数を識別することが困難になってしまう。これを防止するために、文脈解析部3は、同定義のローカル変数を検出する隠蔽変数検出処理を行う。   A plurality of local variables are used in the source code 20, but since local variables are functions that are locally declared, there may be many local variables having the same definition in the same source code 20. If there are multiple local variables with the same definition, it becomes difficult to identify individual local variables. In order to prevent this, the context analysis unit 3 performs a concealment variable detection process for detecting a local variable having the same definition.

文脈解析部3は、計算式抽出処理を終えた構造木を取得する(S401)。また文脈解析部3は、S401で取得した構造木からグローバル変数を取得する(S403)。文脈解析部3は、S403で取得したグローバル変数を羅列することにより、変数リストを作成する(S405)。   The context analysis unit 3 acquires the structural tree for which the calculation formula extraction processing has been completed (S401). Further, the context analysis unit 3 acquires a global variable from the structural tree acquired in S401 (S403). The context analysis unit 3 creates a variable list by listing the global variables acquired in S403 (S405).

文脈解析部3は、S401で取得した構造木から、例えば「while」文等の繰り返しの条件式で使われている変数群を取得する(S407)。また文脈解析部3は、S407で取得した変数群から構文を取得する(S409)。   The context analysis unit 3 acquires a variable group used in a repetitive conditional expression such as a “while” sentence from the structural tree acquired in S401 (S407). Further, the context analysis unit 3 acquires the syntax from the variable group acquired in S407 (S409).

文脈解析部3は、未処理のローカル変数があるか否かを判断する(S411)。未処理のローカル変数とは、後述するS413からS421の処理が行われていないローカル変数とする。   The context analysis unit 3 determines whether there is an unprocessed local variable (S411). The unprocessed local variable is a local variable that is not subjected to the processing of S413 to S421 described later.

未処理のローカル変数があった場合(S407のYes)は、文脈解析部3は、このローカル変数を取得する(S413)。そして文脈解析部3は、S405で作成した変数リストの中に、S413で取得したローカル変数と同定義(例えば同名)のものが含まれているか否かを判断する(S415)。   If there is an unprocessed local variable (Yes in S407), the context analysis unit 3 acquires this local variable (S413). Then, the context analysis unit 3 determines whether the variable list created in S405 includes the same definition (for example, the same name) as the local variable acquired in S413 (S415).

ローカル変数が変数リストに含まれている場合(S415のYes)は、ローカル変数が他のローカル変数またはグローバル変数と重複しているため、このローカル変数を、変数リストに含まれていない任意のローカル変数に変更する(S417)。この際、ローカル変数は、例えば名前を変更すること等により、変更される。   If the local variable is included in the variable list (Yes in S415), the local variable is duplicated with other local variables or global variables, so this local variable is not included in the variable list. Change to a variable (S417). At this time, the local variable is changed, for example, by changing the name.

文脈解析部3は、ローカル変数を変数リストに追加する(S419)。この際、文脈解析部3は、S417にてローカル変数を変更した場合には、変更後のローカル変数を変数リストに追加し、ローカル変数が変数リストに含まれていなかった場合(S415のNo)には、S413で取得したローカル変数を変数リストに追加する。   The context analysis unit 3 adds the local variable to the variable list (S419). At this time, if the local variable is changed in S417, the context analysis unit 3 adds the changed local variable to the variable list, and the local variable is not included in the variable list (No in S415). In step S413, the local variable acquired in step S413 is added to the variable list.

また文脈解析部3は、ローカル変数を構造木に追加する(S421)。この場合もS419と同様に、文脈解析部3は、S417にてローカル変数を変更した場合には、変更後のローカル変数を構造木に追加し、ローカル変数が変数リストに含まれていなかった場合(S415のNo)には、S413で取得したローカル変数を構造木に追加する。具体的には、図7に示す記述Cのように、図2に示した構造木に、ローカル変数の『別名候補』の情報が追加される。   The context analysis unit 3 adds a local variable to the structure tree (S421). Also in this case, as in S419, the context analysis unit 3 adds the changed local variable to the structure tree when the local variable is changed in S417, and the local variable is not included in the variable list. In (No in S415), the local variable acquired in S413 is added to the structure tree. Specifically, as in description C shown in FIG. 7, information on “alias candidates” of local variables is added to the structure tree shown in FIG.

文脈解析部3は、S409からS421までの処理を行っていない未処理の構文があるか否かを判断する(S423)。未処理の構文がある場合(S423のYes)は、S409に戻り、未処理の構文を取得し、S411からS421までの処理を行う。未処理の構文がない場合(S423のNo)は、文脈解析部3は、隠蔽変数検出処理を終了する。   The context analysis unit 3 determines whether there is an unprocessed syntax that has not been processed from S409 to S421 (S423). If there is an unprocessed syntax (Yes in S423), the process returns to S409, an unprocessed syntax is acquired, and the processing from S411 to S421 is performed. If there is no unprocessed syntax (No in S423), the context analysis unit 3 ends the hidden variable detection process.

文脈解析部3による隠蔽変数検出処理が終了すると、バリエーションパターン一致性解析部5は、変換ポリシ40に基づいて、バリエーションパターンの一致性を解析する。   When the concealment variable detection process by the context analysis unit 3 ends, the variation pattern matching analysis unit 5 analyzes the matching of the variation patterns based on the conversion policy 40.

まず、バリエーションパターン一致性解析部5は、バリエーションパターン記憶部4が記憶しているバリエーションパターン表30(図3)を取得する(S111)。また、バリエーションパターン一致性解析部5は、自身が記憶している変換ポリシ40(図4)を取得する(S113)。   First, the variation pattern matching analysis unit 5 acquires the variation pattern table 30 (FIG. 3) stored in the variation pattern storage unit 4 (S111). Further, the variation pattern matching analysis unit 5 acquires the conversion policy 40 (FIG. 4) stored therein (S113).

バリエーションパターン一致性解析部5は、S111で取得したバリエーションパターン表30とS113で取得した変換ポリシ40とを比較し、変換ポリシ40に適合したバリエーションパターンを一つまたは複数選出して、それぞれソースコード20を変換するための変換式の組み合わせを作成する(S115)。   The variation pattern coincidence analysis unit 5 compares the variation pattern table 30 acquired in S111 with the conversion policy 40 acquired in S113, selects one or a plurality of variation patterns that conform to the conversion policy 40, and each source code A combination of conversion formulas for converting 20 is created (S115).

そしてバリエーション生成部6は、S115にてバリエーションパターン一致性解析部5が作成した変換式の組み合わせに基づいて、元のソースコード20を変換し、各々のバリエーションパターンのソースコード20Aを生成する(S117)。   Then, the variation generation unit 6 converts the original source code 20 based on the combination of conversion formulas created by the variation pattern matching analysis unit 5 in S115, and generates the source code 20A of each variation pattern (S117). ).

なお、第1実施形態として、第3式抽出処理、計算式抽出処理、及び隠蔽変数検出処理を別々に行う例を説明したが、これに限らず、構文を取得する処理(S205、S305、S409)までを同時に行うことにより、並列して各処理を行っても良い。この際には、S403及びS405の処理は、前もって行われているものとする。   In addition, although the example which performs 3rd type | formula extraction processing, calculation formula extraction processing, and concealment variable detection processing separately was demonstrated as 1st Embodiment, it is not restricted to this, The process which acquires syntax (S205, S305, S409) )) May be performed in parallel, so that each process may be performed in parallel. At this time, it is assumed that the processes of S403 and S405 have been performed in advance.

また、ソースコード変換装置1を用いてソースコード20を複数のパターンのソースコード20Aに変換した後に、ユーザがコンパイラ・プロファイラ・静的解析ツール7を用いて、ソースコード20Aをコンパイラにかけたり変換されたソースコードを評価したりして、利用すべき変換パターンを決定すると良い。   Further, after the source code 20 is converted into a plurality of patterns of source code 20A by using the source code conversion device 1, the user applies the compiler, profiler, and static analysis tool 7 to the source code 20A through a compiler or conversion. It is recommended to determine the conversion pattern to be used by evaluating the source code.

さらに、第1実施形態において隠蔽変数検出処理にてローカル変数がグローバル変数または他のローカル変数に隠蔽されていることを例に挙げて説明したが、これに限らず、グローバル変数がローカル変数に隠蔽されている場合にも同様の処理を行う。   Furthermore, in the first embodiment, it has been described as an example that the local variable is concealed by the global variable or another local variable in the concealment variable detection process. However, the present invention is not limited to this, and the global variable is concealed by the local variable. The same processing is performed even if it is.

ソースコード変換装置1によると、ソースコード20に対して、複数のバリエーションパターンから可能な限りの変換パターンを選出することにより、様々なパターンのソースコード20Aに変換することが可能となる。   According to the source code conversion device 1, by selecting as many conversion patterns as possible from a plurality of variation patterns for the source code 20, it is possible to convert the source code 20A into various patterns of source code 20A.

また、ソースコード変換装置1によると、変換ポリシ40を明らかに不要な変換を行わないように設定することにより、ソースコード20を、所望のパターンのソースコード20Aに狙いを定めて変換させることが可能となる。   Further, according to the source code conversion apparatus 1, by setting the conversion policy 40 so as not to obviously perform unnecessary conversion, the source code 20 can be converted to the source code 20A having a desired pattern. It becomes possible.

また、ソースコード変換装置1によると、ソースコード20を変換する際に、例えばローカル変数がグローバル変数に隠蔽されている場合等に、単純に変数名のみを使って変換していくと変数の隠蔽が生じてしまう可能性がある。変数が隠蔽されている箇所を把握しておくことにより、変換範囲を指定する事で、変換する際に隠蔽されている箇所を除いたり、その部分だけを変換したりすることが可能になる。   Further, according to the source code conversion device 1, when the source code 20 is converted, for example, when a local variable is concealed in a global variable, the concealment of the variable is performed by simply converting using only the variable name. May occur. By grasping the location where the variable is concealed, it is possible to remove the concealed portion or convert only that portion by designating the conversion range.

〔第2実施形態〕
本発明に係るソースコード変換装置及びソースコード変換方法の第2実施形態について、図10及び図11に基づいて説明する。なお、第1実施形態と同一の構成には同一の符号を付し、重複する説明を省略する。
[Second Embodiment]
A second embodiment of the source code conversion apparatus and source code conversion method according to the present invention will be described with reference to FIGS. In addition, the same code | symbol is attached | subjected to the structure same as 1st Embodiment, and the overlapping description is abbreviate | omitted.

図10は、第2実施形態のソースコード変換装置1Aを示すシステム構成図である。第2実施形態のソースコード変換装置1Aは、第1実施形態と同様に、ソースコード20の変換を行うPC(Personal Computer)等の装置であり、ソースコード20の構文解析を行って構文木を作成する構文解析部2と、構文解析部2により作成された構文木に対して文脈解析を行う文脈解析部3と、構文のバリエーションパターンを記憶するバリエーションパターン記憶部4と、バリエーションパターン記憶部4が記憶するバリエーションパターンを変換ポリシ40Aに照らし合わせて変換式の組み合わせを作成するバリエーションパターン一致性解析部5Aと、バリエーションパターン一致性解析部5Aにより解析された変換式の組み合わせに基づいてソースコード20を複数のパターンに変換するバリエーション生成部6と、コンパイルやプロファイリング、解析を行うコンパイラ・プロファイラ・静的解析ツール7と、を備えている。   FIG. 10 is a system configuration diagram showing a source code conversion apparatus 1A according to the second embodiment. Similarly to the first embodiment, the source code conversion device 1A of the second embodiment is a device such as a PC (Personal Computer) that converts the source code 20, and performs syntax analysis of the source code 20 to obtain a syntax tree. A syntax analysis unit 2 to be created, a context analysis unit 3 that performs context analysis on the syntax tree created by the syntax analysis unit 2, a variation pattern storage unit 4 that stores a variation pattern of the syntax, and a variation pattern storage unit 4 A variation pattern matching analysis unit 5A that creates a combination of conversion formulas by comparing the variation pattern stored by the conversion policy 40A, and source code 20 based on the combination of conversion formulas analyzed by the variation pattern consistency analysis unit 5A Variation students that convert multiple patterns And part 6, and a compilation and profiling, the compiler profiler static analysis tool 7 for analysis, a.

ソースコード変換装置1Aによる変換の対象となるソースコード20は、第1実施形態と同様に、C言語等のプログラミング言語の文法に則り、動作確認ができた既存のソースコード20をプリプロセッサ(前処理系)にかけたものとする。   As in the first embodiment, the source code 20 to be converted by the source code conversion device 1A is preprocessor (pre-processed) that has already been verified in accordance with the grammar of a programming language such as C language. System).

第2実施形態のソースコード変換装置1Aが第1実施形態のソースコード変換装置1と異なる点はバリエーションパターン一致性解析部5Aにより変換式を作成する際に、コンパイラ特性50を用いている点である。第2実施形態のソースコード変換装置1Aは、予めソースコード変換を行って得た複数パターンのソースコード20を解析、プロファイリングし、フィードバック情報としてコンパイラ特性50を作成するとともに、このコンパイラ特性50を加えた変換ポリシ40を利用してソースコード20の変換を行う。   The source code conversion apparatus 1A of the second embodiment is different from the source code conversion apparatus 1 of the first embodiment in that a compiler characteristic 50 is used when creating a conversion formula by the variation pattern matching analysis unit 5A. is there. The source code conversion apparatus 1A of the second embodiment analyzes and profiles a plurality of patterns of source code 20 obtained by performing source code conversion in advance, creates a compiler characteristic 50 as feedback information, and adds this compiler characteristic 50 The source code 20 is converted using the conversion policy 40.

よって、ソースコード変換装置1Aのバリエーションパターン一致性解析部5Aが保持している変換ポリシ40Aには、図11に示すように、コンパイラ特性50と連携させる記述が含まれている。   Therefore, the conversion policy 40A held by the variation pattern matching analysis unit 5A of the source code conversion device 1A includes a description linked with the compiler characteristic 50 as shown in FIG.

例えば「Optimize Priority」は、ソースコード20を変換する際に優先する項目(Speed、RomSize、StackSize、RamSize、Readable)を指定する。「Speed」は、時間的効率性を優先する場合、「RomSize」は、ロムサイズ削減を優先する場合、「StackSize」は、スタックサイズ削減を優先する場合、「RamSize」はラムサイズ削減を優先する場合、「Readable」は可読性を優先する場合に用いる。複数の項目が指定された場合、左側の項目がより優先される。ソースコード変換装置1Aがソースコード変換を行う際には、これらの項目に貢献しないことが分かっている変換は行われない。   For example, “Optimize Priority” specifies items (Speed, RomSize, StackSize, RamSize, and Readable) to be prioritized when the source code 20 is converted. “Speed” gives priority to time efficiency, “RomSize” gives priority to ROM size reduction, “StackSize” gives priority to stack size reduction, “RamSize” gives priority to RAM size reduction , “Readable” is used when priority is given to readability. If multiple items are specified, the left item takes precedence. When the source code conversion apparatus 1A performs source code conversion, conversion that is known not to contribute to these items is not performed.

「Optimize RomSize」には、ソースコード変換時に、どの程度のロムサイズを削減すべきかをバイト単位で指定する。変換前のソースコード20に比べ、指定された分だけRomSizeを削減したらRomSize削減を優先する変換を行わない。それまでは、RomSize削減に貢献する変換を優先して変換する。   “Optimize RomSize” specifies in bytes how much ROM size should be reduced during source code conversion. If the RomSize is reduced by a specified amount compared to the source code 20 before the conversion, the conversion giving priority to the RomSize reduction is not performed. Until then, priority is given to the conversion that contributes to the reduction of RomSize.

「Optimize RunnningTime」には、ソースコード変換時にどの程度、実行性能を向上させるべきかを指定する。指定された数値の分だけ実行時間を削減できたら、ソースコード変換を行わない。この変換ポリシ40が指定されていた場合、実行効率向上に貢献する変換を優先して変換する。   “Optimize Running Time” specifies how much the execution performance should be improved during source code conversion. If the execution time can be reduced by the specified number, source code conversion is not performed. When this conversion policy 40 is specified, conversion that contributes to improvement in execution efficiency is preferentially converted.

「Optimize RunnningTime%」は、よく実行される箇所を優先して変換することを指定する。指定された数値は、変換箇所の実行時間に占める割合を指す。実行時間に占める割合を超えたら、残りのファイルや関数に対して変換を行わない。実行時間の多い関数から変換し、変換した関数の累積値が実行時間に占める割合を超えたら変換をやめる。   “Optimize Running Time%” specifies that a frequently executed part is preferentially converted. The specified numerical value indicates the ratio of the conversion location to the execution time. If the percentage of execution time is exceeded, the remaining files and functions are not converted. Convert from a function with a long execution time, and stop conversion when the cumulative value of the converted function exceeds the percentage of the execution time.

コンパイラ特性50は、図12に示すように、各種変換されたソースコード20Aをコンパイル、プロファイリングした結果が記述される。コンパイラ特性50には、プロファイリング結果、各変換で有意な差が生じなければ、差がないことを記述される。またコンパイラ特性50には、コンパイルオプションにより、プロファイリング結果に差が出るのであれば、コンパイラオプションごとに記述する。コンパイラ特性50は、変換ポリシ40と組み合わせて、コードの変換量を抑制する効果をもたらす。   As shown in FIG. 12, the compiler characteristic 50 describes the result of compiling and profiling variously converted source code 20A. The compiler characteristic 50 describes that there is no difference if there is no significant difference between conversions as a result of profiling. The compiler characteristics 50 are described for each compiler option if there is a difference in the profiling result depending on the compile option. The compiler characteristic 50 is combined with the conversion policy 40 to bring about an effect of suppressing the amount of code conversion.

例えば「Speed」には、ソースコードの速度的な性能が、ソースコード変換によりどの程度変化したかが記述される。この項目は、図3に示したバリエーションパターン表30のセル名と、カッコ内の数値で表される。カッコ内の数値は、一番左に示されたセル名のパターンに対する速度の増減であり、所要時間(μ秒単位)で記述される。すなわち、図12に示すコンパイル特性の1行目は、「A1」のパターンに比べて「B1」のパターンでは、所要時間が+30μ秒であることを意味する。なお、具体的な数値を記述できない場合は、左から速い順に並べて記述するのみでも良い。   For example, “Speed” describes how much the speed performance of the source code has changed due to source code conversion. This item is represented by a cell name in the variation pattern table 30 shown in FIG. 3 and a numerical value in parentheses. The numerical value in parentheses is an increase / decrease of the speed with respect to the cell name pattern shown on the leftmost side, and is described in a required time (in microseconds). That is, the first line of the compilation characteristics shown in FIG. 12 means that the required time is +30 μsec in the “B1” pattern compared to the “A1” pattern. If specific numerical values cannot be described, the numerical values may be described in order from the left in ascending order.

「RomSize」、「StackSize」、「RamSize」には、図3に示すバリエーションパターン表30の各パターンにおいて、どの程度ロムサイズ(スタックサイズ、ラムサイズ)が変換するかが記述される。これらの項目は、バリエーションパターン表30のセル名と、カッコ内の数値で表される。カッコ内の数値は、一番左に示されたセル名のパターンに対する増減量であり、バイト単位で記述される。   “RomSize”, “StackSize”, and “RamSize” describe how much the ROM size (stack size, ram size) is converted in each pattern of the variation pattern table 30 shown in FIG. These items are represented by a cell name in the variation pattern table 30 and a numerical value in parentheses. The numerical value in parentheses is an increase / decrease amount with respect to the cell name pattern shown on the leftmost side, and is described in units of bytes.

「RunningTimeRate」には、シナリオ名を定義し、そのシナリオでの各関数の実行時間の割合を記述する。例えば図12に示すように、カッコ内にシナリオ名を記述し、関数名の後にプロファイル時の実行時間の割合(%単位)を記述する。   In “RunningTimeRate”, a scenario name is defined, and the execution time ratio of each function in the scenario is described. For example, as shown in FIG. 12, the scenario name is described in parentheses, and the ratio (% unit) of the execution time at the time of profiling is described after the function name.

「BUG」には、変換されたソースコード20Aをコンパイルした際に、コンパイラのバグやコンパイルエラーにひっかかる恐れのある変換パターンを記述する。例えばバリエーションパターン表30のセル名で記述される。   “BUG” describes a conversion pattern that may cause a compiler bug or a compilation error when the converted source code 20A is compiled. For example, it is described by the cell name of the variation pattern table 30.

ここで、変換ポリシ40Aとコンパイラ特性50との関係性について説明する。変換ポリシ40A中の「Optimize Priority」で優先される項目がコンパイラ特性50から取得され、優先される項目に対して貢献しない項目が検出される。この優先される項目に対して貢献しない変換はソースコード変換時に実施されない。また、複数の項目が書かれている場合は、全ての項目に貢献しない変換はソースコード変換時に実施されない。   Here, the relationship between the conversion policy 40A and the compiler characteristic 50 will be described. Items prioritized by “Optimize Priority” in the conversion policy 40A are acquired from the compiler characteristic 50, and items that do not contribute to the prioritized items are detected. Conversions that do not contribute to this priority item are not performed during source code conversion. When a plurality of items are written, conversion that does not contribute to all items is not performed at the time of source code conversion.

変換ポリシ40A中の「Optimize RomSize」の後に数値が指定されている場合、変換前のソースコード20と比較してその数値(単位はバイトとみなす)の分だけロムサイズを削減されたら、ロムサイズ削減を実施する変換を行わない。この際のロムサイズの削減量は、コンパイラ特性50に基づいて計算される。変換する順番は、他に優先される指定がなければロムサイズを削減しやすい項目から優先的に変換を行う。コンパイラ特性50に何も記述されていなければ、無視される。   When a numerical value is specified after “Optimize RomSize” in the conversion policy 40A, if the ROM size is reduced by the numerical value (unit is regarded as bytes) compared to the source code 20 before conversion, the ROM size reduction is performed. Do no conversion to be performed. The amount of ROM size reduction at this time is calculated based on the compiler characteristics 50. As for the order of conversion, conversion is performed preferentially from items that can easily reduce the ROM size if there is no other priority. If nothing is described in the compiler property 50, it is ignored.

変換ポリシ40A中の「Optimize RunnningTime」で指定されている数値の分だけ実行時間が削減されたら、ソースコード20の変換を行わない。どれだけ実行時間を削減できるかは、コンパイラ特性50に基づいて計算される。この項目が指定されている場合、実行時間を削減しやすい項目をコンパイラ特性50を元に選択し、削減しやすい項目から優先的に変換を行う。コンパイラ特性50に何も記述されていなければ、無視される。   If the execution time is reduced by the numerical value designated by “Optimizing RunningTime” in the conversion policy 40A, the source code 20 is not converted. How much execution time can be reduced is calculated based on the compiler characteristics 50. When this item is specified, an item whose execution time is easy to be reduced is selected based on the compiler characteristics 50, and conversion is performed preferentially from the item which is easy to reduce. If nothing is described in the compiler property 50, it is ignored.

変換ポリシ40A中の「Optimize RunnningTimeRate」で指定されている数値は、実行時間に占める割合を指す。実行時間の多い関数から変換され、変換された関数の累積値が実行時間に占める割合を超えたら変換をやめる。実行時間は、コンパイラ特性50から取得する。コンパイラ特性50に何も記述されていなければ、無視される。   The numerical value specified by “Optimizing RunningTimeRate” in the conversion policy 40A indicates the proportion of the execution time. Conversion is performed from a function with a long execution time, and the conversion is stopped when the cumulative value of the converted function exceeds the proportion of the execution time. The execution time is acquired from the compiler characteristic 50. If nothing is described in the compiler property 50, it is ignored.

次に、ソースコード変換装置1Aがソースコード変換処理を行う際の手順を、図13に示すフローチャートに基づいて説明する。   Next, the procedure when the source code conversion apparatus 1A performs the source code conversion process will be described based on the flowchart shown in FIG.

まずソースコード変換装置1Aは、S501乃至S509の処理として、S101乃至S109と同様の処理を行う。なお、S501乃至S509の処理の説明は省略する。   First, the source code conversion apparatus 1A performs the same processing as S101 to S109 as the processing of S501 to S509. Note that description of the processing of S501 to S509 is omitted.

バリエーションパターン一致性解析部5Aは、バリエーションパターン記憶部4から図3に示すバリエーションパターン表30を取得すると(S509)、図11に示す変換ポリシ40及び図12に示すコンパイラ特性50を取得する(S511)。   When the variation pattern matching analysis unit 5A obtains the variation pattern table 30 shown in FIG. 3 from the variation pattern storage unit 4 (S509), it obtains the conversion policy 40 shown in FIG. 11 and the compiler characteristic 50 shown in FIG. 12 (S511). ).

バリエーションパターン一致性解析部5Aは、S509で取得したバリエーションパターン表30を、S511で取得した変換ポリシ40A及びコンパイル特性とに照らし合わせて、変換ポリシ40A及びコンパイル特性に適合したバリエーションパターンを一つまたは複数選出して、それぞれソースコード20を変換するための変換式の組み合わせを作成する(S513)。   The variation pattern coincidence analysis unit 5A compares the variation pattern table 30 acquired in S509 with the conversion policy 40A and the compilation characteristics acquired in S511, and determines one or more variation patterns suitable for the conversion policy 40A and the compilation characteristics. A plurality of selections are made, and combinations of conversion formulas for converting the source code 20 are created (S513).

そしてバリエーション生成部6は、S513にてバリエーションパターン一致性解析部5Aが作成した変換式の組み合わせに基づいて、元のソースコード20を変換し、各々のバリエーションパターンのソースコード20Aを生成する(S515)。   Then, the variation generation unit 6 converts the original source code 20 based on the combination of conversion formulas created by the variation pattern matching analysis unit 5A in S513, and generates the source code 20A of each variation pattern (S515). ).

コンパイル・プロファイラ・静的解析ツール7は、S515で生成されたソースコード20Aに対して、コンパイラにかけたりプロファイリングや解析を行ったりして、変換されたソースコード20Aを評価し、バリエーションパターン一致性解析部5が保持するコンパイラ特性50に記述する(S517)。   The compile / profiler / static analysis tool 7 evaluates the converted source code 20A by applying it to the compiler, profiling or analyzing the source code 20A generated in S515, and performs variation pattern matching analysis. This is described in the compiler characteristics 50 held by the unit 5 (S517).

第2実施形態のソースコード変換装置1Aによると、ソースコード変換のフィードバック情報として速度やメモリサイズ等に関するコンパイラ特性50を取得することにより、コンパイラ特性50に基づいて速度向上やメモリサイズ削減に有効なソースコード変換を優先して行うことが可能となる。   According to the source code conversion apparatus 1A of the second embodiment, the compiler characteristics 50 relating to speed, memory size, etc. are acquired as feedback information for source code conversion, which is effective for speed improvement and memory size reduction based on the compiler characteristics 50. It becomes possible to prioritize source code conversion.

また、第2実施形態のソースコード変換装置1Aによると、ソースコード変換時に、最適化に貢献しない変換を削減したり、特定の部分(例えば実行時間の80%を占める部分だけ)を最適化したりすることが可能となる。   Further, according to the source code conversion device 1A of the second embodiment, at the time of source code conversion, conversion that does not contribute to optimization is reduced, or a specific part (for example, only a part that occupies 80% of execution time) is optimized. It becomes possible to do.

特に組込みシステムでは、所要の制約に収まるのであれば、最適化する必要のない場面も存在するので、不必要な最適化を避けて不必要な可読性の低下を防止することが可能となる。   In particular, in an embedded system, there are scenes that do not need to be optimized as long as they fall within the required constraints. Therefore, it is possible to avoid unnecessary optimization and prevent unnecessary readability degradation.

さらに、第2実施形態のソースコード変換装置1Aでは、コンパイラ特性50を取得することにより、コンパイラのバグの原因となる変換を避けることが可能となる。   Furthermore, in the source code conversion apparatus 1A of the second embodiment, by acquiring the compiler characteristics 50, it is possible to avoid conversion that causes a bug in the compiler.

なお、第1実施形態及び第2実施形態では、装置内部に発明を実施する機能が予め記録されている場合で説明をしたが、これに限らず、同様の機能がネットワークから装置にダウンロードされても良いし、同様の機能を記録媒体に記憶させたものが装置にインストールされてもよい。   In the first embodiment and the second embodiment, the function for carrying out the invention is recorded in advance in the apparatus. However, the present invention is not limited to this, and the same function is downloaded from the network to the apparatus. Alternatively, the same function stored in the recording medium may be installed in the apparatus.

記録媒体としては、CD−ROM等プログラムを記憶でき、かつ装置が読み取り可能な記録媒体であれば、その形態は何れの形態であっても構わない。   The recording medium may be in any form as long as it can store a program such as a CD-ROM and can be read by the apparatus.

また、このように予めインストールやダウンロードにより得る機能は、装置内部のOS(オペレーティング・システム)等と協働してその機能を実現させるものであってもよい。   Further, the function obtained by installing or downloading in advance may be realized in cooperation with an OS (operating system) or the like inside the apparatus.

本発明に係るソースコード変換装置の第1実施形態を示すシステム構成図。1 is a system configuration diagram showing a first embodiment of a source code conversion apparatus according to the present invention. ソースコードの変換前のデータ構造を示す図。The figure which shows the data structure before conversion of a source code. バリエーションパターン表の一例を示す図。The figure which shows an example of a variation pattern table | surface. 第1実施形態のソースコード変換装置で用いられる変換ポリシの一例を示す図。The figure which shows an example of the conversion policy used with the source code converter of 1st Embodiment. 第1実施形態のソースコード変換装置によるソースコード変換処理の手順を示すフローチャート。The flowchart which shows the procedure of the source code conversion process by the source code conversion apparatus of 1st Embodiment. 第1実施形態のソースコード変換装置による第3式抽出処理の手順を示すフローチャート。The flowchart which shows the procedure of the 3rd type | mold extraction process by the source code converter of 1st Embodiment. ソースコードの変換後のデータ構造を示す図。The figure which shows the data structure after conversion of a source code. 第1実施形態のソースコード変換装置による計算式置換処理の手順を示すフローチャート。The flowchart which shows the procedure of the calculation formula substitution process by the source code converter of 1st Embodiment. 第1実施形態のソースコード変換装置による隠蔽変数検出処理の手順を示すフローチャート。The flowchart which shows the procedure of the concealment variable detection process by the source code converter of 1st Embodiment. 本発明に係るソースコード変換装置の第2実施形態を示すシステム構成図。The system block diagram which shows 2nd Embodiment of the source code conversion apparatus which concerns on this invention. 第2実施形態のソースコード変換装置で用いられる変換ポリシの一例を示す図。The figure which shows an example of the conversion policy used with the source code converter of 2nd Embodiment. 第2実施形態のソースコード変換装置で用いられるコンパイラ特性の一例を示す図。The figure which shows an example of the compiler characteristic used with the source code conversion apparatus of 2nd Embodiment. 第2実施形態のソースコード変換装置によるソースコード変換処理の手順を示すフローチャート。The flowchart which shows the procedure of the source code conversion process by the source code conversion apparatus of 2nd Embodiment.

符号の説明Explanation of symbols

1、1A ソースコード変換装置
2 構文解析部
3 文脈解析部
4 バリエーションパターン記憶部
5、5A バリエーションパターン一致性解析部
6 バリエーション生成部
7 コンパイラ・プロファイラ・静的解析ツール
20、20A ソースコード
30 バリエーションパターン表
40、40A 変換ポリシ
50 コンパイラ特性
DESCRIPTION OF SYMBOLS 1, 1A Source code converter 2 Syntax analysis part 3 Context analysis part 4 Variation pattern memory | storage part 5, 5A Variation pattern coincidence analysis part 6 Variation generation part 7 Compiler / profiler / static analysis tool 20, 20A Source code 30 Variation pattern Table 40, 40A Conversion policy 50 Compiler characteristics

Claims (2)

ソースコードの構造を解析して構造木を作成する解析部と、
ソースコードの複数の変換パターンを示すパターン表を記憶する記憶部と、
ソースコードを変換するためのポリシを有するとともに、前記記憶部が記憶するパターン表を前記ポリシに照らし合わせて変換式の組み合わせを作成する一致性解析部と、
前記一致性解析部により作成された変換式の組み合わせに基づいて前記解析部が作成した構造木を変換することによりソースコードを変換する作成部と、
前記作成部により予め作成された複数パターンのソースコードに基づいてコンパイラ特性を作成するフィードバック解析部を備え、
前記一致性解析部は、前記パターン表をこのフィードバック解析部により作成されたコンパイラ特性及び前記ポリシに照らし合わせて、変換式の組み合わせを作成するソースコード変換装置。
An analysis unit that analyzes the structure of the source code and creates a structural tree;
A storage unit for storing a pattern table indicating a plurality of conversion patterns of the source code;
A consistency analysis unit that has a policy for converting the source code and creates a combination of conversion formulas by comparing the pattern table stored in the storage unit with the policy;
A creation unit that transforms source code by transforming a structural tree created by the analysis unit based on a combination of conversion formulas created by the consistency analysis unit;
A feedback analysis unit for creating compiler characteristics based on a plurality of patterns of source code created in advance by the creation unit;
The coincidence analysis unit is a source code conversion device that generates a combination of conversion expressions by comparing the pattern table with the compiler characteristics generated by the feedback analysis unit and the policy .
解析部と、ソースコードの複数の変換パターンを示すパターン表を記憶する記憶部と、ソースコードを変換するためのポリシを有する一致性解析部と、作成部と、フィードバック解析部とを備えたソースコード変換装置におけるソースコード変換方法であって、
前記解析部が、ソースコードの構造を解析して構造木を作成する解析ステップと、
前記一致性解析部が、前記パターン表を前記ポリシに照らし合わせて変換式の組み合わせを作成する一致性解析ステップと、
前記作成部が、前記一致性解析ステップにより作成された変換式の組み合わせに基づいてソースコードを変換する作成ステップと、
前記フィードバック解析部が、前記作成ステップにより予め作成された複数パターンのソースコードに基づいてコンパイラ特性を作成するフィードバック解析ステップと、
を有し、
前記コンパイラ特性が作成された後における一致性解析ステップでは、前記一致性解析部が、前記パターン表を前記コンパイラ特性及び前記ポリシに照らし合わせて、変換式の組み合わせを作成する、ソースコード変換方法。
A source comprising: an analysis unit; a storage unit for storing a pattern table indicating a plurality of conversion patterns of source code; a consistency analysis unit having a policy for converting source code; a creation unit; and a feedback analysis unit A source code conversion method in a code conversion device, comprising:
The analyzing unit, an analysis step of creating a tree structure by analyzing the structure of the source code,
The consistency analysis unit creates a combination of conversion expressions by comparing the pattern table with the policy, and a consistency analysis step,
The creation unit converts the source code based on a combination of conversion formulas created by the consistency analysis step; and
A feedback analysis step in which the feedback analysis unit creates compiler characteristics based on a plurality of patterns of source code created in advance by the creation step;
Have
Wherein in the matching analysis steps definitive after the compiler characteristics is created, the coincidence analysis unit, against the pattern table to the compiler characteristics and the policy to create a combination of conversion formulas, source code conversion method.
JP2007085406A 2007-03-28 2007-03-28 Source code conversion apparatus and source code conversion method Expired - Fee Related JP5038760B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007085406A JP5038760B2 (en) 2007-03-28 2007-03-28 Source code conversion apparatus and source code conversion method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007085406A JP5038760B2 (en) 2007-03-28 2007-03-28 Source code conversion apparatus and source code conversion method

Publications (2)

Publication Number Publication Date
JP2008243019A JP2008243019A (en) 2008-10-09
JP5038760B2 true JP5038760B2 (en) 2012-10-03

Family

ID=39914248

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007085406A Expired - Fee Related JP5038760B2 (en) 2007-03-28 2007-03-28 Source code conversion apparatus and source code conversion method

Country Status (1)

Country Link
JP (1) JP5038760B2 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9170918B2 (en) 2009-05-12 2015-10-27 Nec Corporation Model verification system, model verification method, and recording medium
WO2010134123A1 (en) * 2009-05-18 2010-11-25 株式会社Nst Test support device and test support method
JP5293563B2 (en) * 2009-10-30 2013-09-18 新日鐵住金株式会社 Language conversion device, language conversion method and program
JP7064680B1 (en) * 2021-07-28 2022-05-11 SOPPRA Digital transformation株式会社 Program code automatic generation system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0488531A (en) * 1990-08-01 1992-03-23 Fuji Xerox Co Ltd Code optimizing system
JPH05134853A (en) * 1991-11-12 1993-06-01 Shikoku Nippon Denki Software Kk Program source language translating device
JPH0695890A (en) * 1992-09-10 1994-04-08 Toyo Commun Equip Co Ltd Name replacement system in compiler
JPH08272622A (en) * 1995-03-31 1996-10-18 Hitachi Software Eng Co Ltd Program conversion device
JP3235462B2 (en) * 1996-04-08 2001-12-04 日本電気株式会社 while loop structure conversion device
JP2002169696A (en) * 2000-12-04 2002-06-14 Mitsubishi Electric Corp Data processing apparatus
JP4328328B2 (en) * 2003-10-23 2009-09-09 富士通株式会社 Software development tool program

Also Published As

Publication number Publication date
JP2008243019A (en) 2008-10-09

Similar Documents

Publication Publication Date Title
CN110908640B (en) Method for realizing service function and script engine
CN110149800B (en) Apparatus for processing abstract syntax tree associated with source code of source program
US11579856B2 (en) Multi-chip compatible compiling method and device
JP4822817B2 (en) Compilation system
US8522222B2 (en) Tracing just-in-time compilation with pointers to local variables
US7493610B1 (en) Versioning optimization for dynamically-typed languages
US5606697A (en) Compiler system for language processing program
US10289394B2 (en) Selective generation of multiple versions of machine code for source code functions for execution on different processor versions and/or architectures
US9081586B2 (en) Systems and methods for customizing optimization/transformation/ processing strategies
US7917899B2 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
CN109086215B (en) Embedded software unit test case generation method and system
EP1918812A1 (en) A software development system
JP2009503677A (en) Compiler that supports programs as data objects
JP2005216177A (en) Configurable processor design apparatus and method, library optimizing method, processor, and method of manufacturing semiconductor device comprising processor
US6934940B2 (en) Source code transformation-temporary object reduction
KR20010086159A (en) Method for platform specific efficiency enhancement of java programs and software product therefor
JP3813087B2 (en) Program conversion method, computer apparatus and program
KR20190015285A (en) Query optimizer for CPU utilization and code refactoring
US8037463B2 (en) Computer program functional partitioning system for heterogeneous multi-processing systems
JP5038760B2 (en) Source code conversion apparatus and source code conversion method
US7478376B2 (en) Computer program code size partitioning method for multiple memory multi-processing systems
US20150020051A1 (en) Method and apparatus for automated conversion of software applications
KR20080096306A (en) Compiling method and system for a rule-based optimal placement of scaling shifts
JP2008276735A (en) Program code converter and program code conversion method
KR20090011974A (en) Method for extracting the target files of compilation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091019

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100426

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20111201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120207

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120404

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120424

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120528

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: 20120612

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120706

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150713

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150713

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees