JPH11232122A - ソースプログラム中の拡張識別子の変換方法 - Google Patents
ソースプログラム中の拡張識別子の変換方法Info
- Publication number
- JPH11232122A JPH11232122A JP4098098A JP4098098A JPH11232122A JP H11232122 A JPH11232122 A JP H11232122A JP 4098098 A JP4098098 A JP 4098098A JP 4098098 A JP4098098 A JP 4098098A JP H11232122 A JPH11232122 A JP H11232122A
- Authority
- JP
- Japan
- Prior art keywords
- identifier
- conversion
- source program
- extension
- conversion table
- 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
- 238000000034 method Methods 0.000 title claims description 33
- 238000006243 chemical reaction Methods 0.000 claims abstract description 93
- 238000012545 processing Methods 0.000 claims description 39
- 238000010586 diagram Methods 0.000 description 6
- 238000007796 conventional method Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【課題】 日本語識別子を使った日本語プログラミング
を可能にする。 【解決手段】 日本語識別子と対応する変換識別子を登
録する変換テーブルを用意する。登録手段では、原ソー
スプログラム中の日本語識別子を探索し、これを変換テ
ーブル上に検索し登録済みかどうか調べる、もし未登録
なら対応する変換識別子を自動生成し、共に変換テーブ
ルに登録する。変換手段では、変換テーブルを参照しな
がら、原ソースプログラム中の日本語識別子を対応する
変換識別子で置き換える。これにより、原ソースプログ
ラムを目的ソースプログラムに変換する。
を可能にする。 【解決手段】 日本語識別子と対応する変換識別子を登
録する変換テーブルを用意する。登録手段では、原ソー
スプログラム中の日本語識別子を探索し、これを変換テ
ーブル上に検索し登録済みかどうか調べる、もし未登録
なら対応する変換識別子を自動生成し、共に変換テーブ
ルに登録する。変換手段では、変換テーブルを参照しな
がら、原ソースプログラム中の日本語識別子を対応する
変換識別子で置き換える。これにより、原ソースプログ
ラムを目的ソースプログラムに変換する。
Description
【0001】
【発明の属する技術分野】本発明は、言語処理系におい
て、識別子(変数、項目名、ラベル等さまざまに呼ばれ
る)として使用できる文字種類又は有効文字数に文法規
約による制限がある場合、ソースプログラム中の前記文
法規約を越えた拡張識別子の変換方法に関する。特に、
日本語プログラミングを許していない言語処理系におい
て、日本語プログラミングを実現する方法に関する。こ
こで、言語処理系とは、コンパイラ及びリンカ等を指
す。また、拡張識別子とは、識別子についての前記文法
規約(文字種類又は有効文字数についての制限)を適切
に拡張・緩和したと仮想したときの識別子という意味で
用いる。例えば、識別子を「8文字以下の英小文字の文
字列」と定義した文法規約を考えた場合、「32文字以
下の英小文字の文字列」又は「16文字以下の英文字又
は「@」文字の文字列」等は、前記識別子についての文
法規約を拡張したものとなるため、拡張識別子である。
て、識別子(変数、項目名、ラベル等さまざまに呼ばれ
る)として使用できる文字種類又は有効文字数に文法規
約による制限がある場合、ソースプログラム中の前記文
法規約を越えた拡張識別子の変換方法に関する。特に、
日本語プログラミングを許していない言語処理系におい
て、日本語プログラミングを実現する方法に関する。こ
こで、言語処理系とは、コンパイラ及びリンカ等を指
す。また、拡張識別子とは、識別子についての前記文法
規約(文字種類又は有効文字数についての制限)を適切
に拡張・緩和したと仮想したときの識別子という意味で
用いる。例えば、識別子を「8文字以下の英小文字の文
字列」と定義した文法規約を考えた場合、「32文字以
下の英小文字の文字列」又は「16文字以下の英文字又
は「@」文字の文字列」等は、前記識別子についての文
法規約を拡張したものとなるため、拡張識別子である。
【0002】
【従来の技術】プログラム開発において、ソースプログ
ラムの日本語化は、プログラムの記述性、判読性を向上
するものとして理解されている。特に、日本国内向けの
アプリケーションプログラムの開発においては必要性が
高い。言語の文法まで含めた完全なる日本語プログラミ
ング法のレベルでなくとも、既存のコンピュータ言語で
日本語文字による日本語識別子が使えることは重要であ
る。ここで、日本語識別子とは、通常の識別子の文字種
類に日本語文字を追加した識別子という意味で用いる。
日本語文字とはひらがな、カタカナ、漢字、及びその他
の文字・記号を意味し、通常1バイト文字以外の文字で
ある。1バイト文字にはASCIIコード文字、及びE
BCDICコード文字等があり、1バイト文字以外の文
字にはJISコード、シフトJISコード、及びEUC
コード等のマルチバイト文字がある。
ラムの日本語化は、プログラムの記述性、判読性を向上
するものとして理解されている。特に、日本国内向けの
アプリケーションプログラムの開発においては必要性が
高い。言語の文法まで含めた完全なる日本語プログラミ
ング法のレベルでなくとも、既存のコンピュータ言語で
日本語文字による日本語識別子が使えることは重要であ
る。ここで、日本語識別子とは、通常の識別子の文字種
類に日本語文字を追加した識別子という意味で用いる。
日本語文字とはひらがな、カタカナ、漢字、及びその他
の文字・記号を意味し、通常1バイト文字以外の文字で
ある。1バイト文字にはASCIIコード文字、及びE
BCDICコード文字等があり、1バイト文字以外の文
字にはJISコード、シフトJISコード、及びEUC
コード等のマルチバイト文字がある。
【0003】日本語プログラミングが可能であるかどう
かは、個々のコンピュータシステムの言語処理系に依存
する。このため、日本語プログラミングの可能でない言
語処理系で日本語プログラミングを可能とするには、プ
リプロセッサ方式が通常用いられる。すなわち、ソース
プログラム上の日本語表記部分を目的とする言語処理系
に合わせて変換したものを、その言語処理系に渡すので
ある。プリプロセッサ方式による日本語プログラミング
において、特に重要なのが日本語識別子をその目的とす
る言語処理系の文法規約に従った識別子の形に変換する
部分である。
かは、個々のコンピュータシステムの言語処理系に依存
する。このため、日本語プログラミングの可能でない言
語処理系で日本語プログラミングを可能とするには、プ
リプロセッサ方式が通常用いられる。すなわち、ソース
プログラム上の日本語表記部分を目的とする言語処理系
に合わせて変換したものを、その言語処理系に渡すので
ある。プリプロセッサ方式による日本語プログラミング
において、特に重要なのが日本語識別子をその目的とす
る言語処理系の文法規約に従った識別子の形に変換する
部分である。
【0004】従来の公知技術として、日本語識別子の日
本語2バイト文字を4桁の16進数とみなし1バイト文
字4文字で表記する方法、また日本語2バイト文字を3
2進表記の1バイト文字3文字に変換する方法(平林:
情報処理学会プログラミング言語研究会資料16−2
「C言語の日本語化とその効果」、1988)がある。
一般的に言えば、文法規約上、識別子の有効文字数に制
限があるため、変換後の識別子の文字数が大幅に増える
ことは好ましくない。このため、前記方法を改良した方
法として特開平−225690号公報での方法が提案さ
れている。
本語2バイト文字を4桁の16進数とみなし1バイト文
字4文字で表記する方法、また日本語2バイト文字を3
2進表記の1バイト文字3文字に変換する方法(平林:
情報処理学会プログラミング言語研究会資料16−2
「C言語の日本語化とその効果」、1988)がある。
一般的に言えば、文法規約上、識別子の有効文字数に制
限があるため、変換後の識別子の文字数が大幅に増える
ことは好ましくない。このため、前記方法を改良した方
法として特開平−225690号公報での方法が提案さ
れている。
【0005】この方法は日本語2バイト文字の使用頻度
の高低に目を付け、1バイト文字による62進表記(数
字10文字、英大文字26文字、英小文字26文字を使
った表記)を使うことにより、使用頻度の高い日本語2
バイト文字を1バイト文字2文字に、使用頻度の低い日
本語2バイト文字を1バイト文字3文字に変換する方法
である。この方法によれば、大部分の日本語識別子が同
じ長さの識別子に変換できるとしている。
の高低に目を付け、1バイト文字による62進表記(数
字10文字、英大文字26文字、英小文字26文字を使
った表記)を使うことにより、使用頻度の高い日本語2
バイト文字を1バイト文字2文字に、使用頻度の低い日
本語2バイト文字を1バイト文字3文字に変換する方法
である。この方法によれば、大部分の日本語識別子が同
じ長さの識別子に変換できるとしている。
【0006】
【発明が解決しようとする課題】しかしながら、これら
従来の技術、日本語識別子を構成する文字単位に変換す
る方法、には種々の問題が存在している。
従来の技術、日本語識別子を構成する文字単位に変換す
る方法、には種々の問題が存在している。
【0007】1つは、全ての識別子が日本語文字でのみ
構成されていることを暗黙の条件としていることであ
る。日本語文字と1バイト文字の混在する識別子を想定
すれば、このことは明かである。例えば、前記公報の方
法では、日本語識別子「漢字」は1バイト文字による識
別子「JaV7」に変換されるが、これは本来の1バイ
ト文字のみから成る識別子「JaV7」及び1バイト文
字と日本語文字の混合した識別子「Ja字」と干渉す
る。従って、1バイト文字と日本語文字の混在する識別
子は使えないことになる。
構成されていることを暗黙の条件としていることであ
る。日本語文字と1バイト文字の混在する識別子を想定
すれば、このことは明かである。例えば、前記公報の方
法では、日本語識別子「漢字」は1バイト文字による識
別子「JaV7」に変換されるが、これは本来の1バイ
ト文字のみから成る識別子「JaV7」及び1バイト文
字と日本語文字の混合した識別子「Ja字」と干渉す
る。従って、1バイト文字と日本語文字の混在する識別
子は使えないことになる。
【0008】2つ目は、文法規約からの一般的な要請
「識別子の最初の文字は英文字で始まる」である。例え
ば、前記公報の方法では、日本語文字「あ」で始まる識
別子は先頭2文字が「4Z」で始まる識別子に変換され
るが、これは文法規約に従った識別子とはなり得ない。
従って、変換後の識別子の先頭文字が数字となる日本語
識別子は使えないことになる。
「識別子の最初の文字は英文字で始まる」である。例え
ば、前記公報の方法では、日本語文字「あ」で始まる識
別子は先頭2文字が「4Z」で始まる識別子に変換され
るが、これは文法規約に従った識別子とはなり得ない。
従って、変換後の識別子の先頭文字が数字となる日本語
識別子は使えないことになる。
【0009】3つ目は、大文字と小文字の区別をしない
FORTRANのような言語処理系では、識別子の62
進表記が使えないことである。従って、前記公報の方法
は識別子の62進表記が可能な言語処理系でのみ実施で
きる。
FORTRANのような言語処理系では、識別子の62
進表記が使えないことである。従って、前記公報の方法
は識別子の62進表記が可能な言語処理系でのみ実施で
きる。
【0010】4つ目は、変換後の識別子の文字数が増え
ることである。前記公報の方法にしても使用頻度の低い
日本語文字を使った識別子では変換後の文字数は増える
ことになる。この様に従来の方法には問題が残ってお
り、種々の条件付でしか実施できない。
ることである。前記公報の方法にしても使用頻度の低い
日本語文字を使った識別子では変換後の文字数は増える
ことになる。この様に従来の方法には問題が残ってお
り、種々の条件付でしか実施できない。
【0011】また、有効文字数の制限及び特殊文字(例
えば「$」、「@」)の使用制限も識別子に関連する問
題であり、本発明の解決しようとする課題の一部であ
る。
えば「$」、「@」)の使用制限も識別子に関連する問
題であり、本発明の解決しようとする課題の一部であ
る。
【0012】従って、本発明の目的は、特定の言語処理
系の特性に依存しない汎用的な手法を使うことにより、
一般的なコンピュータシステムにおいて、既存の言語処
理系を変更することなく、拡張識別子の使用を可能にす
ることである。この中には、必然的に、日本語プログラ
ミングを可能にすることも含まれる。また、拡張識別子
の使用が可能なシステムと不可能なシステム間でのプロ
グラムの互換性を保持するための方法についても提供す
る。
系の特性に依存しない汎用的な手法を使うことにより、
一般的なコンピュータシステムにおいて、既存の言語処
理系を変更することなく、拡張識別子の使用を可能にす
ることである。この中には、必然的に、日本語プログラ
ミングを可能にすることも含まれる。また、拡張識別子
の使用が可能なシステムと不可能なシステム間でのプロ
グラムの互換性を保持するための方法についても提供す
る。
【0013】
【課題を解決するための手段】ソースプログラムでの識
別子の持つ役割は、プログラマ側から見れば、特定の可
変量に、特定の名称を付け、特定の意味付けをすること
にある。しかし、言語処理系から見れば、識別子の役割
は特定の可変量をその他の可変量から区別することにあ
る。この意味において、識別子が日本語表現であるか、
英語表現であるか、又は単なるランダムな文字の集合で
あるかは本質的な問題ではない。また、識別子の有効文
字数の長短についても同様である。従って、プログラム
中の特定の識別子を、他の識別子と干渉しないという条
件で、別の識別子に換えることができる。この処理は、
従来の技術のように識別子を構成する文字単位毎に行う
必要はなく、識別子単位で行うことができる。
別子の持つ役割は、プログラマ側から見れば、特定の可
変量に、特定の名称を付け、特定の意味付けをすること
にある。しかし、言語処理系から見れば、識別子の役割
は特定の可変量をその他の可変量から区別することにあ
る。この意味において、識別子が日本語表現であるか、
英語表現であるか、又は単なるランダムな文字の集合で
あるかは本質的な問題ではない。また、識別子の有効文
字数の長短についても同様である。従って、プログラム
中の特定の識別子を、他の識別子と干渉しないという条
件で、別の識別子に換えることができる。この処理は、
従来の技術のように識別子を構成する文字単位毎に行う
必要はなく、識別子単位で行うことができる。
【0014】この原理をふまえ、本発明を図1及び図2
を使って説明する。
を使って説明する。
【0015】本発明は変換テーブル10、登録手段2、
及び変換手段3を有する。変換テーブル10は拡張識別
子の名称変換をするためのテーブルであり、図2に示す
ように、拡張識別子11と対応する変換識別子12より
成る。登録手段2は、原ソースプログラム1中の拡張識
別子を前記変換テーブル10に登録する手段である。変
換手段3は、前記変換テーブル10を用い、原ソースプ
ログラム1を目的ソースプログラム4に変換する手段で
ある。
及び変換手段3を有する。変換テーブル10は拡張識別
子の名称変換をするためのテーブルであり、図2に示す
ように、拡張識別子11と対応する変換識別子12より
成る。登録手段2は、原ソースプログラム1中の拡張識
別子を前記変換テーブル10に登録する手段である。変
換手段3は、前記変換テーブル10を用い、原ソースプ
ログラム1を目的ソースプログラム4に変換する手段で
ある。
【0016】登録手段2では、原ソースプログラム1を
走査し拡張識別子を探査する。この拡張識別子について
前記変換テーブル10を探し登録判定する。すなわち、
もしこの拡張識別子が前記変換テーブル10に未登録な
ら、登録すべきものとし、あるいは既に登録済みなら、
登録の必要なきものとする。登録すべきものと判定され
たなら、対応する変換識別子を自動生成しこの拡張識別
子と共に変換テーブルに登録する。この処理を原ソース
プログラム1中の全ての拡張識別子について行う。この
結果、変換テーブル10が得られる。また、本登録手段
2の処理では、原ソースプログラム1の処理をある単位
毎(例えば1行単位)に行ってもよく、結果として、原
ソースプログラム1中の全拡張識別子についての変換テ
ーブル10ができればよい。
走査し拡張識別子を探査する。この拡張識別子について
前記変換テーブル10を探し登録判定する。すなわち、
もしこの拡張識別子が前記変換テーブル10に未登録な
ら、登録すべきものとし、あるいは既に登録済みなら、
登録の必要なきものとする。登録すべきものと判定され
たなら、対応する変換識別子を自動生成しこの拡張識別
子と共に変換テーブルに登録する。この処理を原ソース
プログラム1中の全ての拡張識別子について行う。この
結果、変換テーブル10が得られる。また、本登録手段
2の処理では、原ソースプログラム1の処理をある単位
毎(例えば1行単位)に行ってもよく、結果として、原
ソースプログラム1中の全拡張識別子についての変換テ
ーブル10ができればよい。
【0017】自動生成する変換識別子は、目的言語処理
系5の文法規約に従い、かつ他の識別子、予約語(キー
ワードとも呼ばれる)と干渉しないという条件で、任意
にその名称を決めることができる。
系5の文法規約に従い、かつ他の識別子、予約語(キー
ワードとも呼ばれる)と干渉しないという条件で、任意
にその名称を決めることができる。
【0018】本発明では、名称を生成するルールとして
の名称の原型を決め、これに従って前記変換識別子を自
動生成する。名称の原型としては、名称固定部と名称可
変部を持ち、名称固定部には任意に決めた固定文字を対
応させ、名称可変部には基数をnとしたn進表記による
任意の桁数のn進数の連続数を対応させる。nが10の
とき、名称可変部は10進数の連続番号となる(例えば
000、001、002、003、・・・)。ここで、
表記のためのn進数字は必ずしも数字(0、1、2、・
・・)である必要はなく、英字(a、b、c、・・・)
でもよい。例えば、n進数字を「a」、「b」、
「c」、・・・としたら、名称可変部はaaa,aa
b、aac,・・・となる。また、重複しなければ任意
の文字の任意の序列でも可能である。例えば、n進数字
を「g」、「6」、「w」、・・・としたら、名称可変
部はggg,gg6、ggw、・・・となる。さらに、
名称可変部だけで先頭文字が非数字の変換識別子を生成
できるのであれば、名称固定部は必ずしも必須ではな
い。
の名称の原型を決め、これに従って前記変換識別子を自
動生成する。名称の原型としては、名称固定部と名称可
変部を持ち、名称固定部には任意に決めた固定文字を対
応させ、名称可変部には基数をnとしたn進表記による
任意の桁数のn進数の連続数を対応させる。nが10の
とき、名称可変部は10進数の連続番号となる(例えば
000、001、002、003、・・・)。ここで、
表記のためのn進数字は必ずしも数字(0、1、2、・
・・)である必要はなく、英字(a、b、c、・・・)
でもよい。例えば、n進数字を「a」、「b」、
「c」、・・・としたら、名称可変部はaaa,aa
b、aac,・・・となる。また、重複しなければ任意
の文字の任意の序列でも可能である。例えば、n進数字
を「g」、「6」、「w」、・・・としたら、名称可変
部はggg,gg6、ggw、・・・となる。さらに、
名称可変部だけで先頭文字が非数字の変換識別子を生成
できるのであれば、名称固定部は必ずしも必須ではな
い。
【0019】また、識別子としての一意性が保証される
のであれば、名称可変部は必ずしも連続数である必要は
なく、連続して生成される数列でもよい。例えば、長周
期の疑似乱数、又はそれをn進表記したものでもよい。
のであれば、名称可変部は必ずしも連続数である必要は
なく、連続して生成される数列でもよい。例えば、長周
期の疑似乱数、又はそれをn進表記したものでもよい。
【0020】図2では、変換識別子の例として、名称固
定部a及び名称可変部nnn(nnnは001から99
9の10進数)より成る原型annnの型を持つ名称を
使った。もし特定の原型を持つ変換識別子が他の識別子
と干渉する可能性を心配するのであれば、拡張識別子だ
けでなく、原ソースプログラム中の全ての識別子を処理
の対象にすればよい。
定部a及び名称可変部nnn(nnnは001から99
9の10進数)より成る原型annnの型を持つ名称を
使った。もし特定の原型を持つ変換識別子が他の識別子
と干渉する可能性を心配するのであれば、拡張識別子だ
けでなく、原ソースプログラム中の全ての識別子を処理
の対象にすればよい。
【0021】変換手段3では、原ソースプログラム1を
走査し拡張識別子を探査する。この拡張識別子について
前記変換テーブル10を探す。拡張識別子は前記登録手
段2で登録してあるので、必ず前記登録テーブル10に
見つかる。対応する変換識別子でこの拡張識別子を置き
換える。この処理を前記原ソースプログラム1の全ての
拡張識別子について行ったものを、目的ソースプログラ
ム4として出力する。また、本変換手段3の処理では、
前記登録手段2と同様に、原ソースプログラム1の処理
をある単位毎(例えば1行単位)に行ってもよく、結果
として原ソースプログラム1を目的ソースプログラム4
に変換できればよい。
走査し拡張識別子を探査する。この拡張識別子について
前記変換テーブル10を探す。拡張識別子は前記登録手
段2で登録してあるので、必ず前記登録テーブル10に
見つかる。対応する変換識別子でこの拡張識別子を置き
換える。この処理を前記原ソースプログラム1の全ての
拡張識別子について行ったものを、目的ソースプログラ
ム4として出力する。また、本変換手段3の処理では、
前記登録手段2と同様に、原ソースプログラム1の処理
をある単位毎(例えば1行単位)に行ってもよく、結果
として原ソースプログラム1を目的ソースプログラム4
に変換できればよい。
【0022】また、登録手段と変換手段を別々に行って
もよいが(2パス方式)、前記2手段を同時平行的に行
ってもよい(1パス方式)。
もよいが(2パス方式)、前記2手段を同時平行的に行
ってもよい(1パス方式)。
【0023】目的言語処理系5で、目的ソースプログラ
ム4を処理することにより、実行プログラム6と目的ソ
ースプログラム4に対するメッセージ7が出力される。
逆変換手段8では、変換テーブル10を用い、メッセー
ジ7中の識別子を拡張識別子で置き換える。これによ
り、メッセージ7を原ソースプログラム1に対するメッ
セージ9に読み替えることができる。
ム4を処理することにより、実行プログラム6と目的ソ
ースプログラム4に対するメッセージ7が出力される。
逆変換手段8では、変換テーブル10を用い、メッセー
ジ7中の識別子を拡張識別子で置き換える。これによ
り、メッセージ7を原ソースプログラム1に対するメッ
セージ9に読み替えることができる。
【0024】特定の拡張識別子と対応する変換識別子を
変換テーブル10に事前登録しておくことにより、原ソ
ースプログラム1中の特定の拡張識別子を特定の識別子
に指定して変換することができる。このとき、事前登録
のない拡張識別子には自動生成した変換識別子が割り当
てられる。
変換テーブル10に事前登録しておくことにより、原ソ
ースプログラム1中の特定の拡張識別子を特定の識別子
に指定して変換することができる。このとき、事前登録
のない拡張識別子には自動生成した変換識別子が割り当
てられる。
【0025】これを意図的に、原ソースプログラム1中
の全識別子について組織的に行うことにより、拡張識別
子の処理可能な言語処理系でのソースプログラムを処理
不可能な言語処理系へ容易に移植できる。逆もまた同様
である。
の全識別子について組織的に行うことにより、拡張識別
子の処理可能な言語処理系でのソースプログラムを処理
不可能な言語処理系へ容易に移植できる。逆もまた同様
である。
【0026】図1に示す通り、登録手段2と逆変換手段
8の間に目的言語処理系5の処理が入る。このため、シ
ングルプロセス方式で本発明を実施するような場合、変
換テーブル10を逆変換手段8の実行時までメモリ上に
保持できない。従って、このような場合には、変換テー
ブル10を一時的にディスク等の外部記憶装置に保存し
ておき、逆変換手段8の実行時にメモリ上に読み込む必
要がある。
8の間に目的言語処理系5の処理が入る。このため、シ
ングルプロセス方式で本発明を実施するような場合、変
換テーブル10を逆変換手段8の実行時までメモリ上に
保持できない。従って、このような場合には、変換テー
ブル10を一時的にディスク等の外部記憶装置に保存し
ておき、逆変換手段8の実行時にメモリ上に読み込む必
要がある。
【0027】
【実施例】図3はC言語風に書いた拡張識別子を含む原
ソースプログラム1の1例である。これをサンプルプロ
グラムとして、自動生成する変換識別子12の原型をa
nnn(nnnは001から999の10進数)、登録
手段2及び変換手段3を別ステップとする2パス方式の
場合の実施例を、実例に沿って説明する。
ソースプログラム1の1例である。これをサンプルプロ
グラムとして、自動生成する変換識別子12の原型をa
nnn(nnnは001から999の10進数)、登録
手段2及び変換手段3を別ステップとする2パス方式の
場合の実施例を、実例に沿って説明する。
【0028】最初、処理のための準備をする。すなわ
ち、変換テーブル10をクリアし、登録してある拡張識
別子の数をゼロにする。図3の原ソースプログラム1を
入力し、メモリ上に読み込む。次の登録手段2及び変換
手段3での、原ソースプログラム1に対しての処理はメ
モリ上にある原ソースプログラム1に対して行うものと
する。また、変換テーブル10もメモリ上にあるものと
する。
ち、変換テーブル10をクリアし、登録してある拡張識
別子の数をゼロにする。図3の原ソースプログラム1を
入力し、メモリ上に読み込む。次の登録手段2及び変換
手段3での、原ソースプログラム1に対しての処理はメ
モリ上にある原ソースプログラム1に対して行うものと
する。また、変換テーブル10もメモリ上にあるものと
する。
【0029】登録手段2で、原ソースプログラム1をC
言語の文法規約に従って走査し拡張識別子を探査する。
実例では、最初の文字列「float」は予約語なので
通過する。次の文字列「面積1」は拡張識別子なので変
換テーブル10を探し登録判定する。「面積1」はこの
時点では未登録なので、対応する変換識別子として「a
001」を自動生成し、共に変換テーブル10に登録す
る。続く「幅1」、「高さ1」、「面積2」、「幅
2」、「高さ2」も同様に変換テーブル10を探し登録
判定する。これらもこの時点では未登録なので、対応す
る変換識別子として「a002」から「a006」を自
動生成し、共に変換テーブル10に登録する。続く「面
積1」について、変換テーブル10を探し登録判定す
る。「面積1」はこの時点で登録済みなので通過する。
続く他の拡張識別子についても同様の処理をする。原ソ
ースプログラム1の全拡張識別子を処理した段階で、図
2に示す変換テーブル10が得られる。後の逆変換手段
8のために、変換テーブル10を外部記憶装置に保存す
る。
言語の文法規約に従って走査し拡張識別子を探査する。
実例では、最初の文字列「float」は予約語なので
通過する。次の文字列「面積1」は拡張識別子なので変
換テーブル10を探し登録判定する。「面積1」はこの
時点では未登録なので、対応する変換識別子として「a
001」を自動生成し、共に変換テーブル10に登録す
る。続く「幅1」、「高さ1」、「面積2」、「幅
2」、「高さ2」も同様に変換テーブル10を探し登録
判定する。これらもこの時点では未登録なので、対応す
る変換識別子として「a002」から「a006」を自
動生成し、共に変換テーブル10に登録する。続く「面
積1」について、変換テーブル10を探し登録判定す
る。「面積1」はこの時点で登録済みなので通過する。
続く他の拡張識別子についても同様の処理をする。原ソ
ースプログラム1の全拡張識別子を処理した段階で、図
2に示す変換テーブル10が得られる。後の逆変換手段
8のために、変換テーブル10を外部記憶装置に保存す
る。
【0030】変換手段3では、原ソースプログラム1を
もう一度先頭から走査し、拡張識別子を探査する。文字
列「float」は予約語なので通過する。次の拡張識
別子「面積1」について、変換テーブル10を探し対応
する変換識別子「a001」を取り出す、原ソースプロ
グラム1中の前記「面積1」を前記「a001」で置き
換える。続く他の拡張識別子に対しても同様な処理を行
い、それぞれの対応する変換識別子で置き換える。この
結果、図4の目的ソースプログラム4が得られる。目的
ソースプログラム4を出力し、目的言語処理系5に渡
す。
もう一度先頭から走査し、拡張識別子を探査する。文字
列「float」は予約語なので通過する。次の拡張識
別子「面積1」について、変換テーブル10を探し対応
する変換識別子「a001」を取り出す、原ソースプロ
グラム1中の前記「面積1」を前記「a001」で置き
換える。続く他の拡張識別子に対しても同様な処理を行
い、それぞれの対応する変換識別子で置き換える。この
結果、図4の目的ソースプログラム4が得られる。目的
ソースプログラム4を出力し、目的言語処理系5に渡
す。
【0031】目的ソースプログラム4を目的言語処理系
5で処理する。目的言語処理系5は実行プログラム6と
メッセージ7を出力する。例として、メッセージ7が
「undefined a008」であるとする。
5で処理する。目的言語処理系5は実行プログラム6と
メッセージ7を出力する。例として、メッセージ7が
「undefined a008」であるとする。
【0032】前記登録手段2で作成・保存した変換テー
ブル10をメモリ上に読み込む。逆変換手段8では、変
換テーブル10を用い、前記メッセージ7中の識別子
「a008」を拡張識別子「合計面積」で置き換える。
これにより、メッセージ9「undefined 合計
面積」が得られる。
ブル10をメモリ上に読み込む。逆変換手段8では、変
換テーブル10を用い、前記メッセージ7中の識別子
「a008」を拡張識別子「合計面積」で置き換える。
これにより、メッセージ9「undefined 合計
面積」が得られる。
【0033】また、特定の拡張識別子を特定の変換識別
子に指定して、ソースプログラム変換をする例を図5及
び図6に示す。図5の例のように、特定拡張識別子と特
定変換識別子を変換テーブル10に事前登録する。前記
例のソースプログラム1に対し、登録手段2及び変換手
段3を実行することにより、図6の目的ソースプログラ
ム4が得られる。こうして得た目的ソースプログラム4
は拡張識別子をサポートしない言語処理系のシステムへ
移植可能である。
子に指定して、ソースプログラム変換をする例を図5及
び図6に示す。図5の例のように、特定拡張識別子と特
定変換識別子を変換テーブル10に事前登録する。前記
例のソースプログラム1に対し、登録手段2及び変換手
段3を実行することにより、図6の目的ソースプログラ
ム4が得られる。こうして得た目的ソースプログラム4
は拡張識別子をサポートしない言語処理系のシステムへ
移植可能である。
【0034】
【発明の効果】本発明によれば、ソースプログラム中の
拡張識別子を識別子単位に変換することにより、広範な
システムにおいて、特定の言語に限定せずに、拡張識別
子の使用が可能になる、ひいては日本語プログラミング
も実現できる。その結果、ソースプログラムの記述性及
び判読性が向上し、従って、プログラムの品質の向上、
保守性の改善、及び生産性が向上する。さらに、本発明
はプリプロセッサ方式を使っているため、従来のシステ
ムの言語処理系を変更することなく実施できる。さら
に、拡張識別子の使用が可能なシステムと不可能なシス
テム間での互換性の保持が容易なため、導入に負担がか
からない。
拡張識別子を識別子単位に変換することにより、広範な
システムにおいて、特定の言語に限定せずに、拡張識別
子の使用が可能になる、ひいては日本語プログラミング
も実現できる。その結果、ソースプログラムの記述性及
び判読性が向上し、従って、プログラムの品質の向上、
保守性の改善、及び生産性が向上する。さらに、本発明
はプリプロセッサ方式を使っているため、従来のシステ
ムの言語処理系を変更することなく実施できる。さら
に、拡張識別子の使用が可能なシステムと不可能なシス
テム間での互換性の保持が容易なため、導入に負担がか
からない。
【図1】本発明の2パス方式による実施例を示す概略ブ
ロック図。
ロック図。
【図2】変換テーブルの例を示す図。
【図3】C言語風に書いた原ソースプログラムの例を示
す図。
す図。
【図4】変換処理の結果得られる目的ソースプログラム
の例を示す図。
の例を示す図。
【図5】事前登録した場合の変換テーブルの例を示す
図。
図。
【図6】変換処理の結果得られる目的ソースプログラム
の例を示す図。
の例を示す図。
1 原ソースプログラム 2 登録手段 3 変換手段 4 目的ソースプログラム 5 目的言語処理系 6 実行プログラム 7 目的ソースプログラムに対するメッセージ 8 逆変換手段 9 原ソースプログラムに対するメッセージ 10 変換テーブル 11 拡張識別子 12 変換識別子
Claims (5)
- 【請求項1】 原ソースプログラム中の変換すべき拡張
識別子と、これに対応する変換識別子より成る変換テー
ブルを備え、原ソースプログラム中の拡張識別子を探査
し、この拡張識別子が前記変換テーブルに未登録なら、
これに対応する変換識別子を自動生成し、この拡張識別
子と共に前記変換テーブルに登録する登録手段と、前記
原ソースプログラム中の拡張識別子を探査し、この拡張
識別子を前記変換テーブル上に探し、これに対応する変
換識別子で前記原ソースプログラム中のこの拡張識別子
を置き換えたものを作ることにより、前記原ソースプロ
グラムを目的ソースプログラムに変換する変換手段を持
つことを特徴とするソースプログラム変換方法。 - 【請求項2】 前記対応する変換識別子の自動生成にお
いて、自動生成する変換識別子の名称の名称可変部を、
nを任意の数としたn進数表記による連続数より作成す
ることを特徴とする請求項1記載のソースプログラム変
換方法。 - 【請求項3】 前記対応する変換識別子の自動生成にお
いて、自動生成する変換識別子の名称の名称可変部を、
nを任意の数としたn進数表記による、連続して生成す
る数列より作成することを特徴とする請求項1記載のソ
ースプログラム変換方法。 - 【請求項4】 前記変換テーブルに、あらかじめ特定の
拡張識別子と対応する変換識別子を事前登録しておくこ
とを特徴とする、請求項1、2又は3記載のソースプロ
グラム変換方法。 - 【請求項5】 請求項1、2、3又は4記載のソースプ
ログラム変換方法で変換した目的ソースプログラムを目
的言語処理系で処理した結果出力されるメッセージにつ
いて、このメッセージ中の識別子を前記変換テーブルの
変換識別子とみなし、このメッセージ中のこの識別子を
前記変換テーブル上に検索し、これに対応する拡張識別
子でこのメッセージ中のこの識別子を置き換えたものを
作ることにより、メッセージの変換を行うことを特徴と
するメッセージ変換方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4098098A JPH11232122A (ja) | 1998-02-09 | 1998-02-09 | ソースプログラム中の拡張識別子の変換方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4098098A JPH11232122A (ja) | 1998-02-09 | 1998-02-09 | ソースプログラム中の拡張識別子の変換方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH11232122A true JPH11232122A (ja) | 1999-08-27 |
Family
ID=12595590
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP4098098A Pending JPH11232122A (ja) | 1998-02-09 | 1998-02-09 | ソースプログラム中の拡張識別子の変換方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH11232122A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2012190381A (ja) * | 2011-03-14 | 2012-10-04 | Nec Engineering Ltd | ログ情報漏洩防止方法およびログ情報漏洩防止装置 |
-
1998
- 1998-02-09 JP JP4098098A patent/JPH11232122A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2012190381A (ja) * | 2011-03-14 | 2012-10-04 | Nec Engineering Ltd | ログ情報漏洩防止方法およびログ情報漏洩防止装置 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Hutton | Higher-order functions for parsing | |
| US7278100B1 (en) | Translating a non-unicode string stored in a constant into unicode, and storing the unicode into the constant | |
| JPH0630066B2 (ja) | テーブル型言語翻訳方法 | |
| EP1352330A1 (en) | Method and system for generating structured data from semi-structured data sources | |
| US6055365A (en) | Code point translation for computer text, using state tables | |
| US7051278B1 (en) | Method of, system for, and computer program product for scoping the conversion of unicode data from single byte character sets, double byte character sets, or mixed character sets comprising both single byte and double byte character sets | |
| US6912516B1 (en) | Place name expressing dictionary generating method and its apparatus | |
| JPH10301790A (ja) | アセンブル処理方式 | |
| JPH11232122A (ja) | ソースプログラム中の拡張識別子の変換方法 | |
| Davis et al. | Unicode regular expressions | |
| Lee | The formal definition of the BASIC language | |
| US20080141230A1 (en) | Scope-Constrained Specification Of Features In A Programming Language | |
| Morris et al. | A system program generator | |
| Ledgard | A formal system for defining the syntax and semantics of computer languages | |
| Nugues | Encoding and Annotation Schemes | |
| Oo et al. | Implementation of Lexical Analysis on Assignment Statements in C++ Programming Language | |
| US20040117774A1 (en) | Linguistic dictionary and method for production thereof | |
| Brooker et al. | Trees and routines | |
| Feldman et al. | Hybrid semantic tagging for information extraction | |
| Andrieș et al. | Design of domain specific language for astrological charts generation-AlakirOl | |
| JP4061283B2 (ja) | 字句をデータに変換する装置、方法及びプログラム | |
| JP2007004503A (ja) | プログラム変換方式およびプログラム変換方法およびコード変換プログラム | |
| JPH03164834A (ja) | プログラミング言語間相互変換方式 | |
| JP2005275880A (ja) | 字句をデータに変換する装置、方法及びプログラム | |
| JP3018579B2 (ja) | 名前検索処理装置 |