JPH08123694A - Cコンパイラ - Google Patents
CコンパイラInfo
- Publication number
- JPH08123694A JPH08123694A JP28286994A JP28286994A JPH08123694A JP H08123694 A JPH08123694 A JP H08123694A JP 28286994 A JP28286994 A JP 28286994A JP 28286994 A JP28286994 A JP 28286994A JP H08123694 A JPH08123694 A JP H08123694A
- Authority
- JP
- Japan
- Prior art keywords
- kanji
- byte
- compiler
- language
- program
- 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
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【目的】 Cコンパイラにおいて漢字をシンボルとして
使えるようにする。 【構成】 C言語で書かれたソースプログラム中で変数
あるいは関数と判断したシンボルについて、前記シンボ
ルを1バイト文字コードと判断したときは1バイト単位
で、前記シンボルを2バイト文字コードと判断したとき
は2バイト単位でシンボルの解読を行い、前記解読した
シンボルをオブジェクトプログラムのシンボルテーブル
に登録する。
使えるようにする。 【構成】 C言語で書かれたソースプログラム中で変数
あるいは関数と判断したシンボルについて、前記シンボ
ルを1バイト文字コードと判断したときは1バイト単位
で、前記シンボルを2バイト文字コードと判断したとき
は2バイト単位でシンボルの解読を行い、前記解読した
シンボルをオブジェクトプログラムのシンボルテーブル
に登録する。
Description
【0001】
【産業上の利用分野】本発明は、1バイト文字コードと
2バイト文字コードとが区別可能なコード体系を使用す
るコンピュータにおいて作動するCコンパイラに関す
る。
2バイト文字コードとが区別可能なコード体系を使用す
るコンピュータにおいて作動するCコンパイラに関す
る。
【0002】
【従来の技術】コンピュータにおいてプログラムを実行
させるには、その前段階としてコンパイルとリンクが必
要である。図2に示すように、ソースプログラムをコン
パイルするとオブジェクトプログラムファイル(一般に
「オブジェクト」とよぶ)ができ、さらにいくつかのオ
ブジェクトをリンクすると、実行可能なロードモジュー
ルプログラムファイル(一般に「ロードモジュール」と
よぶ)ができる。
させるには、その前段階としてコンパイルとリンクが必
要である。図2に示すように、ソースプログラムをコン
パイルするとオブジェクトプログラムファイル(一般に
「オブジェクト」とよぶ)ができ、さらにいくつかのオ
ブジェクトをリンクすると、実行可能なロードモジュー
ルプログラムファイル(一般に「ロードモジュール」と
よぶ)ができる。
【0003】最近のコンパイラでは図3のように、コン
パイルの前段階としてプリプロセッサが働き、インクル
ードファイルやソースレベルのマクロファイルを展開
し、新たなソースプログラムを作るようにしている。共
通処理をソースレベルであらかじめ準備しおき、それを
プリプロセッサで取り込むことによって、プログラム作
成労力を軽減することができる。ただし、一般にプリプ
ロセッサとコンパイラとをあわせた処理をコンパイルと
よんでいる。最近ではこの形式が普通で、この二つを区
別して表現することはほとんどない。
パイルの前段階としてプリプロセッサが働き、インクル
ードファイルやソースレベルのマクロファイルを展開
し、新たなソースプログラムを作るようにしている。共
通処理をソースレベルであらかじめ準備しおき、それを
プリプロセッサで取り込むことによって、プログラム作
成労力を軽減することができる。ただし、一般にプリプ
ロセッサとコンパイラとをあわせた処理をコンパイルと
よんでいる。最近ではこの形式が普通で、この二つを区
別して表現することはほとんどない。
【0004】多くのプログラム言語は、開発された国の
言語の影響、コンピュータの能力の問題などのことか
ら、英語を基盤として開発されている。最初の高級言語
であるFOTORANに始まって、COBOL、PAS
CALなど多くの言語が表現形式として英語を基礎にし
ている。
言語の影響、コンピュータの能力の問題などのことか
ら、英語を基盤として開発されている。最初の高級言語
であるFOTORANに始まって、COBOL、PAS
CALなど多くの言語が表現形式として英語を基礎にし
ている。
【0005】上記のプログラム言語は今でも用いられて
いるが、現在、最も広く使用されているのは、高級言語
とはいえないC言語である。C言語は、もともとはシス
テム記述言語であるが、アセンブラに比べてはるかに楽
にプログラミングが可能であり、しかもアセンブラに匹
敵する効率のオブジェクトコードを作ることができるた
め、速度を重視するアプリケーションプログラムの開発
に好んで用いられている。
いるが、現在、最も広く使用されているのは、高級言語
とはいえないC言語である。C言語は、もともとはシス
テム記述言語であるが、アセンブラに比べてはるかに楽
にプログラミングが可能であり、しかもアセンブラに匹
敵する効率のオブジェクトコードを作ることができるた
め、速度を重視するアプリケーションプログラムの開発
に好んで用いられている。
【0006】
【発明が解決しようとする課題】C言語は他の多くのプ
ログラム言語と同様に変数名や関数名をアルファベット
(1バイトの特殊文字も含まれる)と数字で表現してい
る。アルファベットを用いる言語を母国語とする人であ
れば、それぞれの国語で変数名や関数名を記述すること
ができるが、アルファベット以外の文字を用いている言
語では、その国の言語で変数名や関数名を記述すること
はできない。
ログラム言語と同様に変数名や関数名をアルファベット
(1バイトの特殊文字も含まれる)と数字で表現してい
る。アルファベットを用いる言語を母国語とする人であ
れば、それぞれの国語で変数名や関数名を記述すること
ができるが、アルファベット以外の文字を用いている言
語では、その国の言語で変数名や関数名を記述すること
はできない。
【0007】とくに、日本や中国のように漢字を用いる
言語では、文字数が多いことから困難が大きい。一部の
C言語ではプログラムを見やすくするためのメッセージ
部については漢字で表記できるようにしたものもある
が、言語の中枢部分である変数名、関数名などは日本語
を使用することはできない。
言語では、文字数が多いことから困難が大きい。一部の
C言語ではプログラムを見やすくするためのメッセージ
部については漢字で表記できるようにしたものもある
が、言語の中枢部分である変数名、関数名などは日本語
を使用することはできない。
【0008】結局、C言語においては、変数や関数名な
どに日本語を用いるにはローマ字表記を使うしかない。
しかし、日本語は同音異義の極めて多い特殊な言語なの
で、ローマ字表記は意味不明瞭となることが多いので、
実際には使いにくい。
どに日本語を用いるにはローマ字表記を使うしかない。
しかし、日本語は同音異義の極めて多い特殊な言語なの
で、ローマ字表記は意味不明瞭となることが多いので、
実際には使いにくい。
【0009】このようにC言語でプログラムを作成する
際、日本語を母国語とする人にとっては、変数名や関数
名に外国語を使わざるを得ないという負担がかかる。と
くに、プログラムの作成からテスト、さらにメンテナン
スまで、多数の人が関わるときは問題がある。
際、日本語を母国語とする人にとっては、変数名や関数
名に外国語を使わざるを得ないという負担がかかる。と
くに、プログラムの作成からテスト、さらにメンテナン
スまで、多数の人が関わるときは問題がある。
【0010】例えば、プロジェクトを組んで複数の人が
プログラム開発するときは、ネーミングルールを作り、
さらにシンボルテーブルまで作成し、プログラムで使用
している重要なシンボルを管理する。これが実に大変な
仕事である。とくにシンボルの変更や追加があった場合
には、シンボルテーブルをメンテナンスしなければなら
ないが、常時それがアップデートされることは少ない。
とくにシステムが大きくなればなるほど、英数字だけの
シンボルは、類似が多くなり、管理が難しくなる。もち
ろん、新しい変数あるいは関数に名前を付けることも難
しくなる。
プログラム開発するときは、ネーミングルールを作り、
さらにシンボルテーブルまで作成し、プログラムで使用
している重要なシンボルを管理する。これが実に大変な
仕事である。とくにシンボルの変更や追加があった場合
には、シンボルテーブルをメンテナンスしなければなら
ないが、常時それがアップデートされることは少ない。
とくにシステムが大きくなればなるほど、英数字だけの
シンボルは、類似が多くなり、管理が難しくなる。もち
ろん、新しい変数あるいは関数に名前を付けることも難
しくなる。
【0011】とくにCDを用いるゲーム機用のプログラ
ム作成では、プログラムは膨大な情報量が必要となり、
1バイト文字(英数字と少数の特殊文字)だけで変数や
関数のシンボルを決めることは、非常に難しいものとな
っている。
ム作成では、プログラムは膨大な情報量が必要となり、
1バイト文字(英数字と少数の特殊文字)だけで変数や
関数のシンボルを決めることは、非常に難しいものとな
っている。
【0012】また、変数や関数に付ける名前は、それ自
体で何らかの意味を表したものでなければならない。か
といって、シンボルが長すぎるとプログラミングが大変
であり、またソースプログラムそのものが読みにくくな
る。
体で何らかの意味を表したものでなければならない。か
といって、シンボルが長すぎるとプログラミングが大変
であり、またソースプログラムそのものが読みにくくな
る。
【0013】よく使う方法は、英語またはローマ字表記
の日本語で名前を付け、名前を短くするために母音を省
いた形式でシンボルを付けるやり方である。たとえばゲ
ームプログラムにおいて、戦闘処理を行う関数名を“ba
ttle”とした場合、さらにそれを短くするために“btt
l”と変える。“battle”自体、短いから問題はない
が、通常は複数の処理を含んでいることが多いから、複
数の英単語を並べて関数名や変数名が付けられる。そん
なときには、前記のような省略は不可欠となる。
の日本語で名前を付け、名前を短くするために母音を省
いた形式でシンボルを付けるやり方である。たとえばゲ
ームプログラムにおいて、戦闘処理を行う関数名を“ba
ttle”とした場合、さらにそれを短くするために“btt
l”と変える。“battle”自体、短いから問題はない
が、通常は複数の処理を含んでいることが多いから、複
数の英単語を並べて関数名や変数名が付けられる。そん
なときには、前記のような省略は不可欠となる。
【0014】本発明の課題としては、日本語を母国語と
する人にわかりやすい変数名あるいは関数名が付けられ
るようなシンボルが使用できるCコンパイラを得ること
であり、そのためにCコンパイラにおいて漢字をシンボ
ルとして使えるようにすることである。
する人にわかりやすい変数名あるいは関数名が付けられ
るようなシンボルが使用できるCコンパイラを得ること
であり、そのためにCコンパイラにおいて漢字をシンボ
ルとして使えるようにすることである。
【0015】
【課題を解決するための手段】本発明のC言語コンパイ
ラでは、変数名と関数名に漢字が使えるようにする。そ
のために、コンパイル(プリプロセッサレベルではな
い)の段階で漢字を解読してシンボルテーブルを作成
し、オブジェクトを作成する。もちろん、従来どおり英
数字(プログラム言語で許される範囲の特殊文字も含
む)のシンボルも認める。漢字は2バイト文字、英数字
は1バイト文字であるために、漢字と英数字の区別をコ
ンパイラで行わなければならない。その方法は次のよう
なものである。
ラでは、変数名と関数名に漢字が使えるようにする。そ
のために、コンパイル(プリプロセッサレベルではな
い)の段階で漢字を解読してシンボルテーブルを作成
し、オブジェクトを作成する。もちろん、従来どおり英
数字(プログラム言語で許される範囲の特殊文字も含
む)のシンボルも認める。漢字は2バイト文字、英数字
は1バイト文字であるために、漢字と英数字の区別をコ
ンパイラで行わなければならない。その方法は次のよう
なものである。
【0016】現在、広く用いられているシフトJISな
どのコード体系では、漢字コード(2バイト文字)は、
英数字コード(1バイト文字)と区別が付くコードに設
定されている。したがってコンパイラが変数あるいは関
数と判断したとき、それが漢字の場合は2バイト単位で
シンボルの解読を行う。
どのコード体系では、漢字コード(2バイト文字)は、
英数字コード(1バイト文字)と区別が付くコードに設
定されている。したがってコンパイラが変数あるいは関
数と判断したとき、それが漢字の場合は2バイト単位で
シンボルの解読を行う。
【0017】英数字の場合は、従来どおりに1バイト単
位で解読する。解読したシンボルは、オブジェクトプロ
グラムのシンボルテーブルに登録する。コード化された
シンボルは漢字、英数字の区別がないから、通常のコン
パイル/リンク/実行手順で、コンピュータは処理でき
る。
位で解読する。解読したシンボルは、オブジェクトプロ
グラムのシンボルテーブルに登録する。コード化された
シンボルは漢字、英数字の区別がないから、通常のコン
パイル/リンク/実行手順で、コンピュータは処理でき
る。
【0018】図1は、本発明のC言語コンパイラにおけ
る漢字シンボルの認識アルゴリズムである。漢字の場合
は2バイトが1単位になっているから、前1バイトと後
ろ1バイトがともに漢字コードの範囲内にあるときの
み、漢字と認める。それ以外は、英数字文字(1バイト
文字)と判定する。
る漢字シンボルの認識アルゴリズムである。漢字の場合
は2バイトが1単位になっているから、前1バイトと後
ろ1バイトがともに漢字コードの範囲内にあるときの
み、漢字と認める。それ以外は、英数字文字(1バイト
文字)と判定する。
【0019】なお、図1のフローチャートではエラーチ
ェックを行っていないが、その言語で許されない範囲の
コードや文字サイズ(文字のバイト数)を検出したとき
はコンパイルエラーとなる。フローチャートにあるシン
ボルテーブルは、シンボル(文字コード)と相対アドレ
ス(たとえば変数の場合は値を入れる領域のアドレス)
を対応させた表である。リンク時に、相対アドレスは絶
対アドレスに変えられる。
ェックを行っていないが、その言語で許されない範囲の
コードや文字サイズ(文字のバイト数)を検出したとき
はコンパイルエラーとなる。フローチャートにあるシン
ボルテーブルは、シンボル(文字コード)と相対アドレ
ス(たとえば変数の場合は値を入れる領域のアドレス)
を対応させた表である。リンク時に、相対アドレスは絶
対アドレスに変えられる。
【0020】
【実施例】ゲーム用プログラム開発でよく利用されてい
る、プログラム言語Cと文字コード・シフトJISの場合
を例にあげる。敵と味方の戦闘処理を行う関数を従来の
ようにプログラミングすると、
る、プログラム言語Cと文字コード・シフトJISの場合
を例にあげる。敵と味方の戦闘処理を行う関数を従来の
ようにプログラミングすると、
【0021】
【0022】のように書ける。しかしこのままでは、あ
とでプログラムを見たときや、他人にプログラムを見て
もらうときにわかりにくいから、通常、コメントを入れ
る。たとえば、
とでプログラムを見たときや、他人にプログラムを見て
もらうときにわかりにくいから、通常、コメントを入れ
る。たとえば、
【0023】 void battle() /*敵と味方の戦闘処理*/ { if (emeny_attack) { /*敵の攻撃あり?*/ … … } }
【0024】のように、コメントを日本語でわざわざ書
いていた。しかし、漢字が使えれば直接、
いていた。しかし、漢字が使えれば直接、
【0025】
【0026】と書ける。もちろんコメントを入れてもよ
いが、関数名あるいは変数名だけである程度の意味がわ
かる。漢字は2バイトで1文字を表す。シフトJISで
は、漢字1文字の第1バイト目と第2バイト目が特定の
範囲にきめられている。したがって、漢字認識アルゴリ
ズムを図3に対応させて書くと、図4のようになる。
いが、関数名あるいは変数名だけである程度の意味がわ
かる。漢字は2バイトで1文字を表す。シフトJISで
は、漢字1文字の第1バイト目と第2バイト目が特定の
範囲にきめられている。したがって、漢字認識アルゴリ
ズムを図3に対応させて書くと、図4のようになる。
【0027】
【発明の効果】本発明のCコンパイラを使用すること
で、シンボルに漢字が使えることになり、ローマ字で日
本語を表記するのに比べて、少ない文字数で明確な意味
をもつ変数名や関数名とすることができ、複雑なプログ
ラムを作成する際にプログラマの負担を軽減させる効果
がある。
で、シンボルに漢字が使えることになり、ローマ字で日
本語を表記するのに比べて、少ない文字数で明確な意味
をもつ変数名や関数名とすることができ、複雑なプログ
ラムを作成する際にプログラマの負担を軽減させる効果
がある。
【0028】また、プログラム開発に大勢の人が携わる
場合にも、お互いの意志の疎通がとり易いと言う効果が
ある。
場合にも、お互いの意志の疎通がとり易いと言う効果が
ある。
【図1】本発明のCコンパイラにおける漢字シンボルの
認識の流れ図である。
認識の流れ図である。
【図2】従来のコンパイラの説明図である。
【図3】従来のプリプロセッサを含んだコンパイラの説
明図である。
明図である。
【図4】本発明のCコンパイラにおけるシフトJISコ
ードを用いた際の漢字シンボルの認識の流れ図である。
ードを用いた際の漢字シンボルの認識の流れ図である。
Claims (1)
- 【請求項1】 1バイト文字コードと2バイト文字コー
ドとが区別可能なコード体系を使用するコンピュータに
おいて作動するCコンパイラにおいて、C言語で書かれ
たソースプログラム中で変数あるいは関数と判断したシ
ンボルについて、前記シンボルを1バイト文字コードと
判断したときは1バイト単位で、前記シンボルを2バイ
ト文字コードと判断したときは2バイト単位でシンボル
の解読を行い、前記解読したシンボルをオブジェクトプ
ログラムのシンボルテーブルに登録することを特徴とす
るCコンパイラ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP28286994A JPH08123694A (ja) | 1994-10-21 | 1994-10-21 | Cコンパイラ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP28286994A JPH08123694A (ja) | 1994-10-21 | 1994-10-21 | Cコンパイラ |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH08123694A true JPH08123694A (ja) | 1996-05-17 |
Family
ID=17658145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP28286994A Pending JPH08123694A (ja) | 1994-10-21 | 1994-10-21 | Cコンパイラ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH08123694A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108121285A (zh) * | 2017-12-20 | 2018-06-05 | 中国铁道科学研究院 | 基于连续功能图的应用软件协同编译方法及装置 |
-
1994
- 1994-10-21 JP JP28286994A patent/JPH08123694A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108121285A (zh) * | 2017-12-20 | 2018-06-05 | 中国铁道科学研究院 | 基于连续功能图的应用软件协同编译方法及装置 |
CN108121285B (zh) * | 2017-12-20 | 2020-08-25 | 中国铁道科学研究院 | 基于连续功能图的应用软件协同编译方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4860203A (en) | Apparatus and method for extracting documentation text from a source code program | |
US5956510A (en) | Apparatus and method for revising computer program code | |
JPS6091450A (ja) | テ−ブル型言語翻訳器 | |
JPS6288033A (ja) | ソフトウエアプログラムを生成するための装置及びその方法 | |
JPH08123694A (ja) | Cコンパイラ | |
Cisco | GNU Bash Shell Reference | |
Cisco | GNU Bash Shell Reference | |
Cisco | GNU Bash Shell Reference | |
Cisco | GNU Bash Shell Reference | |
Cisco | GNU Bash Shell Reference | |
Cisco | GNU Bash Shell Reference | |
Cisco | GNU Bash Shell Reference | |
Cisco | GNU Bash Shell Reference | |
Morris et al. | A system program generator | |
JPH08190561A (ja) | 文書修正装置 | |
JPH11232122A (ja) | ソースプログラム中の拡張識別子の変換方法 | |
JPS63316135A (ja) | プログラム開発装置 | |
JPH021027A (ja) | 圧縮形式ソースプログラムのコンパイル方式 | |
JPH04248624A (ja) | プログラム変換処理装置 | |
JPH0695888A (ja) | 問題向き言語コンパイラ処理方式 | |
JPH03171252A (ja) | 文字処理装置 | |
JPH036624A (ja) | 複数コード系に対応する翻訳リスト出力処理方式 | |
All et al. | Text Executive Programming Language | |
JPH03186933A (ja) | 言語処理システムのシンボル処理方式 | |
JPS63140339A (ja) | バ−ジヨン識別予約語管理方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Effective date: 20040518 Free format text: JAPANESE INTERMEDIATE CODE: A02 |