JP2005063121A - ソースコード変換装置、及びソースコード変換方法、ソースコード変換プログラム、記憶媒体 - Google Patents
ソースコード変換装置、及びソースコード変換方法、ソースコード変換プログラム、記憶媒体 Download PDFInfo
- Publication number
- JP2005063121A JP2005063121A JP2003291820A JP2003291820A JP2005063121A JP 2005063121 A JP2005063121 A JP 2005063121A JP 2003291820 A JP2003291820 A JP 2003291820A JP 2003291820 A JP2003291820 A JP 2003291820A JP 2005063121 A JP2005063121 A JP 2005063121A
- Authority
- JP
- Japan
- Prior art keywords
- character string
- conversion
- source code
- file
- reserved word
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
【解決手段】 あるプログラミング言語のソースコードXをソースコード読取部1にて読み込み、同時に、予約語読取部2にて、前記プログラミング言語の予約語情報を読み取る。その上で文字列変換部3にて、文字列変換処理を行い、ソースコードYとしてファイル出力する。文字列変換処理は、一定の規則に従って行われる。また、文字列変換処理では、変換リスト記憶部4にて変換前後の文字列の変換対応リストが作成され、ソースコードYの出力と同時に、変換対応リスト一覧ファイルZとして出力する。
【選択図】 図1
Description
プログラミング言語を用いてプログラムを作成する場合、すなわちソースコードを作成する場合、作成者、あるいは作成プロジェクトチームにとって、プログラムの内容が理解しやすい形で作成するのが一般的である。
例えば、ソフトウェア作成のプロジェクトにおいて、ソフトウェア詳細設計に入る前に、プロジェクトチームは、命名規約、或いはコーディング規約(命名規約は、コーディング規約の一部である。)を作成しておき、命名規約やコーディング規約に従って、ソースコードを作成する。命名規約とは、プログラミングにおけるローカルな決め事であり、図8に、命名規約の一例を示しておく。
例えば、変数命名規約において、変数名は、長すぎず、且つ変数の内容が分かりやすいようにするため、8〜12文字程度で、変数を宣言する。
また、関数命名規約において、関数名は、その動作を分かりやすくするため、「動詞」+「名詞」の形で宣言するのが普通である。
また、コーディング規約では、例えば、if分岐の記述方法や、入れ子構造を分かりやすくするためインデントを入れる、構造化プログラミングの技法に従ってgoto文は使わない等、様々な規約を定めている。
このように、決め事をしておくことにより、ソースコードを作成していないプロジェクトのメンバーでも、ソースコードの内容を容易に理解することが可能となるが、第三者にも分かりやすいコードであるのも事実である。
HDL(Hardware Description Language )とは、ハードウェア記述のためのプログラミング言語であり、主に半導体の設計に用いる言語である。半導体の設計には、CADツールを用いるのが一般的であり、CADツールは、HDLで記述されたファイルを読み込んで、様々な処理を行うことができ、このようなCADツールが、CADツールメーカーから販売されている。ユーザはこれらのツールを使うことによって、半導体等の設計を行うことが可能である。
特許文献2に示されている発明は、符号化された視覚情報を1つの自然言語から他の自然言語へ変換する文字列変換方法、及び文字列変換機構に関する発明である。
この発明によれば、プログラムソースコード内にある、文字列型定数(例えば、C++言語において、ダブルコーテーションで括られた文字列)を、ある言語(例えば日本語)から別の言語(例えば英語)に変換する技術であるが、その実現方法は入力ソースコードに対して、変換用のマクロリストを用意し、前記マクロリストを用いて文字列変換を行っている。これにより、GUIの変更を容易に行うことができる(特許文献2参照)。
また、特許文献2で示されている文字列変換の技術は、GUIに関わる文字列(文字列型定数)に対して文字列変換を行うものであり、前記問題とは異なる問題を解決しているものである。
図1は、本発明の一実施例であるソースコード変換装置の構成を示すブロック図である。本図では、ソースコードファイルXが、文字列変換処理によってソースコードファイルYに変換される様子が示されている。
ソースコード読込部1では、プログラミング言語により記述されたソースコードファイルXを読み込み、全ての文字列を記憶する。また、予約語読込部2では、前記プログラミング言語の予約語ファイル4を読み込む。
ソースコードファイルXと予約語が読み込まれると、ソースコード文字列変換部3にてソースコードYに変換出力される。
最初に文字列変換のための一連の初期化処理を行う(ステップS1〜S5)。
すなわち、変換後文字列に対するインデックスの初期化を行い(ステップS1)、予約語情報を読み込み(S2)、文字列区切りの定義情報を読み込む(S3)。ここで、文字列区切り情報とは、例えば、半角スペース文字や、半角セミコロン文字、TAB文字、改行文字等である。
次に、ソースコードファイルXの文字列全体を読み込み(S4)、ソースコード文字列の中からコメント行を削除し(S5)、次処理(S11)を行う。
コメント行の削除では、当該行を改行に変換し、ファイルに出力する。例えば、コメント行が3行にまたがっている場合は、3つの改行を入れることにより、変換前と変換後のソースコードの行番号の関係を保って出力される。
例えば、HDL言語やC言語では、始点“/*”から、終点“*/”までの文字列は、コメント行である。
コメント行には、前述の通り、ソースコードの理解を助けるための文字列が記述されているため、企業秘密に関する記述(例えば、分岐ロジックの意味や、HDLにおける半導体回路の詳細設計内容、一般プログラミング言語におけるビジネスフロー等)が書かれているため、コメント行を削除する必要がある。
すなわち、ソースコード文字列に、変換のチェックを行っていない文字列が存在するか否かを調べる(S11)。もし、存在しなければ(S11/No)、変換テーブルのリストを出力し(S31)、文字列変換処理を終了する(エンド)。存在する場合(S11/Yes)は、分割した文字列を一つずつ順番に読み込み(S12)、該文字列がどのような文字列であるかを調べる。
もし、該文字列が予約語であれば(S13/Yes)、該文字列をそのままファイル出力し(S14)、次の文字列のチェックに入る(S11)。
該文字列が予約語でない場合(S13/No)は、次段階の内容チェックに入る(S15)。
もし、該文字列が区切り文字である場合(S15/Yes)は、該文字列をそのままファイル出力し(S16)、次の文字列のチェックに入る(S11)。
該文字列が区切り文字でない場合(S15/No)は、次段階のチェックに入る(S17)。
もし、該文字列が定数記述である場合(S17/Yes)は、該文字列をそのままファイル出力し(S18)、次の文字列のチェックに入る(S11)。
該文字列が定数記述でない場合(S17/No)は、一連の文字列変換処理(S21〜S25)に入る。
もし、該文字列が一連の処理の中で、初めて出現した文字である場合(S21/Yes)は、該文字列を「a_i」に変換、ファイル出力し(S22)、該文字列及び前記a_iを変換テーブルに保存する(S23)。その後、iを1つインクリメントして(S24)、次の文字列のチェックに入る(S11)。
もし、該文字列が一連の処理の中で、既に出現している文字列である場合(S21/No)は、変換テーブルに記憶されている文字列「a_j」に変換し(S25)、次の文字列のチェックに入る(S11)。
以下に、上記処理フローによって、実際にソースコードが変換される様子を次の図に示す。
また、図6は、図3に対応する変換前のソースコードである。
また、図7は、プログラミング言語の予約語一覧(の一部)を示す図である。
図6を見れば分かるように、通常のソースコードでは、このプログラムがJPEGファイルに関連するプログラムであることが、第三者に容易に分かり、またこのプログラムのアルゴリズムも分かってしまう。
そこで、図6のソースコードと図7の予約語情報とを照らし合わせることにより、図3のソースコードに変換する。この変換により、第三者にはソースコードの内容、アルゴリズムが分かりにくくなる。そのため、変換後のソースコードを第三者に提供しやすくなる。
このような変換をすることにより、文字列の変換を行っても、該ソースコードのプログラム動作を変えることなく、第三者には理解するのが難しいソースコードYに変換される。
前記図2、及び図3、図6の例でソースコードの変換を行った際に、変換リスト記憶部4に格納されている内容を、図4のようなリストにファイル出力する。ファイル出力の形式は、リストとして一般的なCSV形式のファイルに出力している。
このように、変換前及び変換後の対応関係を変換リストとして出力することにより、変換されたソースコードYを解析する際に、前記変換リストを用いてソースコードYを解析することが可能となる。
ソースコード読込処理11によって、プログラミング言語により記述されたソースコードファイルXが読み込まれ、全ての文字列が記憶される。また、予約語読込処理12によって、前記プログラミング言語の予約語ファイル4が読み込まれる。
ソースコードファイルXと予約語が読み込まれると、ソースコード文字列変換処理13によってソースコードYに変換出力される。
また、本発明の一実施例であるソースコード変換方法によってソースコードが変換される様子、及び変換リスト一覧ファイルの作成については、図3等の説明と全く同様なので、説明を省略する。
前記ソースコード変換プログラムを格納する記憶領域と、ソースコードX(変換前ソースコード)を読み込む手段(例えばフロッピー(R)ディスクや磁気ディスク、或いはMOのような光学メディア等に格納されたソースコードを読み込む手段)と、ソースコードY(変換後ソースコード)を出力する手段と、変換リスト一覧表を出力する手段とを有するコンピュータを用いることにより、前記ソースコード変換プログラムを実行することが可能である。
2 予約語読取部
3 文字列変換部
4 変換リスト記憶部
11 ソースコード読取処理
12 予約語読取処理
13 文字列変換処理
14 変換リスト記憶処理
X 変換前ソースコードファイル
Y 変換後ソースコードファイル
Z 変換対応リストファイル
Claims (14)
- プログラミング言語により記述された第1のソースコードファイルを読み込むファイル読込手段と、
前記ファイル読込手段にて読み込んだソースコードファイルに対して、前記第1のソースコードファイル内の文字列を他の文字列に変換する文字列変換手段と、
前記文字列変換手段により得られた文字列を第2のソースコードファイルに出力するファイル出力手段とを有することを特徴とするソースコード変換装置。 - 前記ソースコード変換装置は、前記プログラミング言語の予約語を読み込む予約語読込手段と、
前記予約語読込手段によって読み込まれた予約語を参照する参照手段と、
前記参照手段により参照された予約語以外の文字列を他の文字列に変換する第1の文字列変換手段とを有することを特徴とする請求項1記載のソースコード変換装置。 - 前記文字列変換手段は、定数記述以外の文字列を別の文字列に変換する第2の文字列変換手段を有することを特徴とする請求項1または2記載のソースコード変換装置。
- 前記文字列変換手段は、前記プログラミング言語の文法により定められたコメント行を削除する第3の文字列変換手段を有することを特徴とする請求項1から3のいずれか1項に記載のソースコード変換装置。
- 前記文字列変換手段は、前記第1のソースコードファイル中の変換前文字列と、前記変換前文字列に対応する前記第2のソースコードファイル中の変換後文字列とが、同一行に存在するように変換する第4の文字列変換手段を有することを特徴とする請求項1から4のいずれか1項に記載のソースコード変換装置。
- 前記ファイル出力手段は、前記第1のソースコードファイル中の変換前文字列と、前記変換前文字列に対応する前記第2のソースコードファイル中の変換後文字列とを一覧表として出力する一覧表出力手段を有することを特徴とする請求項1から5のいずれか1項に記載のソースコード変換装置。
- プログラミング言語により記述された第1のソースコードファイルを読み込むファイル読込工程と、
前記ファイル読込工程にて読み込んだソースコードファイルに対して、前記第1のソースコードファイル内の文字列を他の文字列に変換する文字列変換工程と、
前記文字列変換工程により得られた文字列を第2のソースコードファイルに出力するファイル出力工程とを行うことを特徴とするソースコード変換方法。 - 前記ソースコード変換工程は、前記プログラミング言語の予約語を読み込む予約語読込工程と、
前記予約語読込手段によって読み込まれた予約語を参照する参照工程と、
前記参照工程により参照された予約語以外の文字列を他の文字列に変換する第1の文字列変換工程とを行うことを特徴とする請求項7記載のソースコード変換方法。 - 前記文字列変換工程は、定数記述以外の文字列を別の文字列に変換する第2の文字列変換工程を行うことを特徴とする請求項7または8記載のソースコード変換方法。
- 前記文字列変換工程は、前記プログラミング言語の文法により定められたコメント行を削除する第3の文字列変換工程を行うことを特徴とする請求項7から9のいずれか1項に記載のソースコード変換方法。
- 前記文字列変換工程は、前記第1のソースコードファイル中の変換前文字列と、前記変換前文字列に対応する前記第2のソースコードファイル中の変換後文字列とが、同一行に存在するように変換する第4の文字列変換工程を行うことを特徴とする請求項7から10のいずれか1項に記載のソースコード変換方法。
- 前記ファイル出力工程は、前記第1のソースコードファイル中の変換前文字列と、前記変換前文字列に対応する前記第2のソースコードファイル中の変換後文字列とを一覧表として出力する一覧表出力工程を行うことを特徴とする請求項7から11のいずれか1項に記載のソースコード変換方法。
- 請求項7から12のいずれか1項に記載のソースコード変換方法をコンピュータに実行させるためのソースコード変換プログラム。
- 請求項13に記載のソースコード変換プログラムを格納したコンピュータが読取可能な記憶媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003291820A JP2005063121A (ja) | 2003-08-11 | 2003-08-11 | ソースコード変換装置、及びソースコード変換方法、ソースコード変換プログラム、記憶媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003291820A JP2005063121A (ja) | 2003-08-11 | 2003-08-11 | ソースコード変換装置、及びソースコード変換方法、ソースコード変換プログラム、記憶媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005063121A true JP2005063121A (ja) | 2005-03-10 |
Family
ID=34369380
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003291820A Pending JP2005063121A (ja) | 2003-08-11 | 2003-08-11 | ソースコード変換装置、及びソースコード変換方法、ソースコード変換プログラム、記憶媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005063121A (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007034813A (ja) * | 2005-07-28 | 2007-02-08 | National Institute Of Advanced Industrial & Technology | 複数自然言語のソフトウェア説明書生成システム |
JP2007141173A (ja) * | 2005-11-22 | 2007-06-07 | Matsushita Electric Ind Co Ltd | コンパイルシステム、デバッグシステムおよびプログラム開発システム |
US7971167B2 (en) | 2007-02-19 | 2011-06-28 | Ricoh Company, Ltd. | Semiconductor design support device, semiconductor design support method, and manufacturing method for semiconductor integrated circuit |
JP2011129020A (ja) * | 2009-12-21 | 2011-06-30 | Nec Corp | 動作合成装置及び方法 |
JP2012190381A (ja) * | 2011-03-14 | 2012-10-04 | Nec Engineering Ltd | ログ情報漏洩防止方法およびログ情報漏洩防止装置 |
JP2017058994A (ja) * | 2015-09-17 | 2017-03-23 | 日本電気株式会社 | 難読化装置、方法およびプログラム |
JP2020170221A (ja) * | 2019-04-01 | 2020-10-15 | カシオ計算機株式会社 | プログラムを変換するためのプログラム、情報処理装置、及び、情報処理方法 |
-
2003
- 2003-08-11 JP JP2003291820A patent/JP2005063121A/ja active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007034813A (ja) * | 2005-07-28 | 2007-02-08 | National Institute Of Advanced Industrial & Technology | 複数自然言語のソフトウェア説明書生成システム |
JP2007141173A (ja) * | 2005-11-22 | 2007-06-07 | Matsushita Electric Ind Co Ltd | コンパイルシステム、デバッグシステムおよびプログラム開発システム |
US7971167B2 (en) | 2007-02-19 | 2011-06-28 | Ricoh Company, Ltd. | Semiconductor design support device, semiconductor design support method, and manufacturing method for semiconductor integrated circuit |
JP2011129020A (ja) * | 2009-12-21 | 2011-06-30 | Nec Corp | 動作合成装置及び方法 |
JP2012190381A (ja) * | 2011-03-14 | 2012-10-04 | Nec Engineering Ltd | ログ情報漏洩防止方法およびログ情報漏洩防止装置 |
JP2017058994A (ja) * | 2015-09-17 | 2017-03-23 | 日本電気株式会社 | 難読化装置、方法およびプログラム |
JP2020170221A (ja) * | 2019-04-01 | 2020-10-15 | カシオ計算機株式会社 | プログラムを変換するためのプログラム、情報処理装置、及び、情報処理方法 |
JP7306026B2 (ja) | 2019-04-01 | 2023-07-11 | カシオ計算機株式会社 | プログラムを変換するためのプログラム、情報処理装置、及び、情報処理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4901155B2 (ja) | 音声認識装置が使用するのに適した文法を生成するための方法、媒体、およびシステム | |
EP0204942A2 (en) | Compiler for a source program, a method of making the same and its use | |
JP2006202277A (ja) | 非独自言語によって駆動される一般アプリケーション用シーケンス図ジェネレータ | |
WO2009098739A1 (ja) | プログラム最適化装置およびプログラム最適化方法 | |
JPWO2009017131A1 (ja) | ε遷移を含まない非決定性有限オートマトン生成システムと方法およびプログラム | |
CN105446983A (zh) | 用于生成数据格式描述语言模型的方法和装置 | |
CN114503073A (zh) | 将用过程编程语言编写的程序自动转换为数据流图及相关***和方法 | |
JP2005063121A (ja) | ソースコード変換装置、及びソースコード変換方法、ソースコード変換プログラム、記憶媒体 | |
JP2006301989A (ja) | 計算機言語によるプログラムをブロック図から自動生成する方法と装置とプログラム | |
US8849650B2 (en) | System and method for automatically generating sentences of a language | |
CN112231197A (zh) | 一种页面测试的方法、装置和存储介质 | |
Stansifer et al. | Parsing reflective grammars | |
JP2009048259A (ja) | プログラム変換方法及び変換用プログラム | |
JP2008226010A (ja) | コンパイル方法及びコンパイル装置 | |
JP6721548B2 (ja) | 設計確認装置及び設計確認方法 | |
JP7247593B2 (ja) | 生成装置、ソフトウェアロボットシステム、生成方法及び生成プログラム | |
JP7059757B2 (ja) | Api処理方法、端末、api処理プログラム | |
US6763516B2 (en) | Convention checking apparatus, convention checking system, convention checking method, and storage medium on which is recorded a convention checking program | |
JP2007140845A (ja) | プログラム管理方法及びプログラムの移行支援装置 | |
JP2007287025A (ja) | 画面遷移プログラム生成方法及び装置 | |
EP3255558A1 (en) | Syntax analyzing device, learning device, machine translation device and recording medium | |
JP2008108266A (ja) | 2レベル形態規則をコンパイルするための方法及びその装置 | |
KR100846203B1 (ko) | 모바일 어플리케이션의 생성 방법 및 이를 구현하기 위한프로그램을 기록한 기록매체 | |
JP3003459B2 (ja) | プログラム作成支援装置 | |
CN113296754B (zh) | 基于xml的脚本语言转换方法、编辑器、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051208 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080430 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080603 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080804 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080909 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081110 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20081216 |