JP2002032231A - 文字コード変換方法 - Google Patents

文字コード変換方法

Info

Publication number
JP2002032231A
JP2002032231A JP2000218718A JP2000218718A JP2002032231A JP 2002032231 A JP2002032231 A JP 2002032231A JP 2000218718 A JP2000218718 A JP 2000218718A JP 2000218718 A JP2000218718 A JP 2000218718A JP 2002032231 A JP2002032231 A JP 2002032231A
Authority
JP
Japan
Prior art keywords
character code
character
source program
instruction
character data
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
Application number
JP2000218718A
Other languages
English (en)
Inventor
Tadahiro Asai
唯宏 浅井
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2000218718A priority Critical patent/JP2002032231A/ja
Publication of JP2002032231A publication Critical patent/JP2002032231A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】本発明は、言語コンパイラにおけるソースプロ
グラム中の文字データの解析方法に関するものであり、
ソースプログラムで記述に用いる文字コードと異なる文
字コードの文字データを記述する際には、ソースプログ
ラムを修正し文字コードを指定する識別子を付加しなけ
ればならないという問題があった。 【解決手段】上記課題を解決するために、ソースプログ
ラム102とは別に用意された文字コード指示文103
を言語コンパイラ105の字句解析部106で入力し、
その指示内容を文字コード指示テーブル110へ登録
し、その指示に従い文字コード変換テーブル111を用
いてソースプログラム102中の文字データの文字コー
ドを変換することにより解決する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、言語コンパイラの
目的プログラムを出力するためのソースプログラム解析
方法に関わり、特にソースプログラム中の文字データの
好適な解析方法に関する。
【0002】
【従来の技術】従来は、特開平11−232119号公
報のように、文字コードを指定する識別子をソースプロ
グラム中に記述し、ソースプログラムの解析時にその識
別子を意識して解析することで文字コードを変換してい
た。
【0003】
【発明が解決しようとする課題】従来技術では、ソース
プログラム中に文字データを記述する場合、記述に用い
る文字コードと異なる文字コードの文字データを記述す
るには、文字ではなく文字コードそのもので記述する
か、もしくはソースプログラムを修正し文字コードを指
定する識別子を付加する必要があった。
【0004】またこれらの記述方法では、当初と異なる
文字コードへ変換したい場合には再度ソースプログラム
を修正し識別子を変更する必要があるという問題があっ
た。本発明の目的は、文字データに対する文字コード変
換の指示をソースプログラムと分離し文字コード指示文
とすることで、ソースプログラムそのものの修正を不要
とし、ソースプログラムの記述効率と保守効率、および
移植性を向上させることにある。
【0005】
【課題を解決するための手段】上記目的を達成するため
に、ソースプログラムと分離して作成された文字コード
指示文を、言語コンパイラの字句解析処理において入力
し、ソースプログラム中の文字データの文字コードを先
に入力した文字コード指示文で指定された文字コードに
変換することにしたものである。
【0006】
【発明の実施の形態】以下、本発明の実施例を詳細に説
明する。
【0007】図1は、本発明における一実施例である言
語コンパイラの構成を示すものである。
【0008】処理装置101は、機械命令で記述された
プログラムを実行する計算機システムであり、本実施例
では、実行プログラムである言語コンパイラ105と、
言語コンパイラが使用する文字コード指示テーブル11
0および文字コード変換テーブル111から構成され
る。
【0009】言語コンパイラ105は、ソースプログラ
ム102および文字コード指示文103を入力し、目的
プログラム104を出力する。ソースプラグラム102
には、処理方法とデータが記述されており、それを言語
コンパイラが翻訳し、実行可能な機械命令とデータにし
出力したものが目的プログラム104である。
【0010】文字コード指示文103は、ソースプログ
ラム102中に記述された文字データの文字コードを変
換することを言語コンパイラに指示するものであり、そ
の指示文では、変換後の文字コード、変換の対象とする
ソースプログラムの範囲、および変換の対象とする文字
データを指定する。この指示文により、ソースプログラ
ム中に文字コードを指定する必要がなくなり、文字コー
ドの指定のためのソースプログラムの修正が不要とな
る。
【0011】言語コンパイラ105は、字句解析部10
6、構文解析部107、意味解析部108、および命令
生成部109の4つの処理で構成される。
【0012】字句解析部106では、ソースプログラム
102を入力しそこに記述された字句の解析を行う。ま
た字句解析部106では、文字コード指示文103を入
力し、その内容を文字コード指示テーブル110に登録
し、字句の解析中に文字データがあらわれた場合、その
登録内容に従い文字コード変換テーブル111を用いて
文字データの文字コードを変換する。
【0013】構文解析部107では、字句解析部106
の解析結果を元に処理の記述の構文を解析する。
【0014】意味解析部108では、構文解析部107
の解析結果を元に処理の記述の意味を解析する。
【0015】命令生成部109では、意味解析部108
の解析結果を元に機械命令と必要なデータを目的プログ
ラム104として出力する。
【0016】本実施例では言語コンパイラは4つの処理
より構成しているが、これより少ない処理で構成されて
もよく、またこれ以外の処理が含まれてもよい。
【0017】また、文字コード指示文の入力、文字コー
ド指示テーブルへの登録、および文字コード変換テーブ
ルを用いた文字データの文字コードの変換は、字句解析
部以外の処理で行ってもよく、文字コードの変換は、文
字コード変換テーブルによる変換ではなく他の方法によ
り変換してもよい。
【0018】図2は、ソースプログラム102の文字デ
ータ部分の記述例である。
【0019】欄201は、ソースプログラムの各行の行
番号である。この行番号は、ソースプログラムの先頭行
を1として順に数えたもので、ソースプログラム中に記
述する必要はない。
【0020】行202は、文字を保持する領域「A」に
文字データ「stringA」を設定する文、行203
は、文字を保持する領域「B」に文字データ「stri
ngB」を設定する文である。
【0021】行番号204および205は、文字を保持
する領域「C」に文字データ「Ca」「Cb」「Cc」
「Ca」「Cb」「Cc」を順に設定する文を、2行に
分けて記述したものである。
【0022】図3は、文字コード指示文103の記述例
である。この記述例は、図2のソースプログラムの記述
例に対応している。
【0023】行301、302、303、および304
における「#pragma code」が文字コードの
変換を指示する識別子であり、その後の括弧内の記述が
変換後の文字コード、対象とする行番号の範囲、対象と
する文字データを示す。
【0024】行301は、ソースプログラム中の文字デ
ータの文字コードをEBCDIKコードとする指示であ
る。このように文字コードのみが指定されている場合
は、ソースプログラム中のすべての文字データに対する
指定である。この指示文は、ソースプログラムを記述し
た文字コードから他の文字コードへ変換しない場合には
不要である。
【0025】行302は、文字データの文字コードをA
SCIIコードとする指示であり、文字コードの指定の
直後に記述されている「10−15」がその対象をソー
スプログラムの行番号10から行番号15の間だけに限
定するものである。図2のソースプログラムの記述例に
おいては、行202の行番号10の文字データ「str
ingA」の文字コードをASCIIコードに変換す
る。
【0026】行303は、文字データの文字コードをA
SCIIコードとする指示であり、文字コードの指定の
直後に記述されている「”stringB”」がその対
象をソースプログラム中の文字データ「string
B」に限定するものである。図2のソースプログラムの
記述例においては、行203の文字データ「strin
gB」の文字コードをASCIIコードに変換する。こ
の指示では、ソースプログラム中の文字データ「str
ingB」のすべてが対象となる。
【0027】行304は、対象とする行番号と対象とす
る文字データの指定を組み合わせたものである。この指
示は、文字データの文字コードをUNICODEコード
とする指示であり、その対象はソースプログラムの行番
号30−35、対象文字データは「Ca」である。図2
のソースプログラムの記述例においては、行204の文
字データ「Ca」のみをUNICODEに変換する。行
204の他の文字データ「Cb」および「Cc」の文字
コードは変換しない。また、行205の文字データ「C
a」も文字コードは変換せず、行205の文字データ
「Cb」および「Cc」も変換しない。
【0028】文字コード指示文における文字コードの変
換を指示する識別子は、「#pragma code」
以外のものとしてもよく、その記述方法も、本実施例と
は異なる方法でもよい。
【0029】図4は、文字コード指示テーブル110を
示すテーブルである。言語コンパイラの字句解析部にお
いて、文字コード指示文を入力し、その指示文の内容を
このテーブルに登録し、文字データ解析時にこの登録内
容に従い文字コードを変換する。
【0030】この記述例は、図3の文字コード指示文の
記述例に対応している。行405は行301の、行40
6は行302の、行407は行303の、行408は行
304の、それぞれの文字コード指示文の指示内容を登
録したものである。
【0031】欄401には指示文で指定された行番号の
範囲の開始行の番号を、欄402には指示文で指定され
た行番号の範囲の終了行の番号を登録する。指示文に行
番号の指定がない場合には、ソースプログラムのすべて
の行に対する指示であるので、欄401の開始行として
は先頭行の番号である1を、欄402の終了行として
は、言語コンパイラで解析が可能な最大行の行番号を登
録する。本事例では最大行は99999としている。
【0032】欄403には、指示文で指定された対象文
字データを登録する。指示文で対象文字データが指定さ
れていない場合には空欄とする。
【0033】欄404には、指示文で指定された文字コ
ードを登録する。
【0034】文字コード指示テーブルにおける各欄の保
持方法および順番は異なっていてもよく、またこれら以
外の内容が含まれてもよい。
【0035】図5は、文字コード変換テーブル111を
示すテーブルである。この例は、EBCDIKコードか
らASCIIコードへの変換のためのテーブルであり、
他のコードでの変換の場合には変換する文字コードごと
に異なるテーブルを用意する。
【0036】501は、入力文字データで、この例では
「C」である。
【0037】502は、その入力文字データのEBCD
IKコードによる文字コードであり、ここでは16進数
表記で「C3」である。
【0038】この例では、文字の種類は256種類とす
る。
【0039】文字コード変換テーブル111は、その2
56種類の文字に対応して、そのすべてのコード(16
進数表記で「00」から「FF」まで)の変換後のコー
ドを保持する。
【0040】入力文字データ501が「C」、そのEB
CDIKでの文字コード502が「C3」であるとき、
そのコードを用いて文字コード変換テーブルを参照する
と、参照する位置は、位置503となる。その内容を取
り出して得られるのが文字コード504で、これが文字
データ「C」のASCIIコードでの文字コード「4
3」である。これを目的プログラムへの出力文字データ
とする。
【0041】このように、変換対象の文字データの文字
コードを元に文字コード変換テーブルを参照し、すべて
の変換対象の文字データの文字コードを変換する。
【0042】なお文字コード変換テーブルは、図5と異
なる形式でもよい。
【0043】次に、図6および図7を用いて、字句解析
部の字句解析処理における文字コード変換方法の詳細を
説明する。
【0044】図6は、言語コンパイラ105の字句解析
部106の字句解析処理の流れを示すフローチャートで
ある。
【0045】まず文字コード指示文が用意されているか
を判定する(ステップ601)。文字コード指示文があ
る場合はその指示文を1行入力し(ステップ602)、
指示文の内容を文字コード指示テーブルの各欄に登録す
る(ステップ603)。すべての文字コード指示文の入
力が終了したかを判定し(ステップ604)、終了して
いない場合は、文字コード指示文の入力を繰り返す。
【0046】全ての文字コード指示文の入力および文字
コード指示テーブルへの登録が終了した後、ソースプロ
グラムを1行入力する(ステップ605)。入力した行
より字句を切り出し(ステップ606)、その字句が文
字データかを判定する(ステップ607)。文字データ
の場合には、文字データ解析処理を行う(ステップ60
8)。文字データ以外の場合には、その他の字句の解析
処理を行う(ステップ609)。解析が終了した字句
は、構文解析処理へ出力する(ステップ610)。入力
した行よりすべての字句の切り出しが終了したかどうか
を判定し(ステップ611)、終了していない場合は、
字句の切り出し処理を繰り返す。字句切り出しが終了し
たら、ソースプログラムをすべて入力したかを判定し
(ステップ612)、入力が終了していない場合は、入
力を繰り返す。
【0047】図7は、字句解析部106の字句解析処理
における文字データ解析処理608の流れを示すフロー
チャートである。
【0048】まず、文字コード指示テーブルに指示が登
録されているかを判定する(ステップ701)。指示が
登録されている場合には、次にその指示内容を判定す
る。現在解析している文字データのソースプログラム上
の行番号が、指示の行番号の範囲内であるかを判定する
(ステップ702)。指示の行番号の範囲内である場合
には、次にその指示で対象とする文字データが指定され
ているかを判定する(ステップ703)。対象とする文
字データが指定されている場合には、その文字データと
現在解析している文字データが同じかを判定する(ステ
ップ704)。
【0049】指示で対象とする文字データが指定されて
いない場合、もしくは対象とする文字データが指定され
ておりその文字データと現在解析している文字データが
同じであれば、その指示で指定されている文字コード種
別に従い文字コード変換テーブルを選択し、それを用い
て解析している文字データの文字コードを変換する(ス
テップ705)。
【0050】現在解析している文字データのソースプロ
グラム上の行番号が、指示で指定されているの行番号の
範囲内ではない場合、または指示で指定されている行番
号の範囲内でも指示で対象とする文字データが指定され
ておりその文字データと現在解析中の文字データが異な
る場合は、他に指示が登録されていないかを判定し(ス
テップ706)、他に指示がある場合には、指示内容の
判定を繰り返す。
【0051】文字コード指示テーブルに指示がまったく
登録されていない場合、またはいずれの指示にも該当し
ない場合には、文字コードの変換は行わない(ステップ
707)。
【0052】このように、文字データ解析処理で文字コ
ード指示文の指示内容を登録した文字コード指示テーブ
ルを参照し判定することで、ソースプログラムの変更を
することなく、文字コードの変換が可能となる。また、
指示で指定されたの行番号の範囲および対象とする文字
データを判定することで、文字コードを変換する文字デ
ータを限定することができる。
【0053】
【発明の効果】以上に述べたように、本発明によれば、
言語コンパイラの字句解析処理において、ソースプログ
ラムとは別に文字コード指示文を読み込みその指示によ
り文字コードを変換するので、ソースプログラムを修正
し文字データに文字コードを指定することが不要にな
り、ソースプログラムの記述効率および保守効率が向上
するとともに、他の文字コードへ変換する場合などの移
植性が向上する。
【図面の簡単な説明】
【図1】本発明の処理方法の実施形態を示す処理装置お
よび言語コンパイラのブロック図である。
【図2】入力ソースプログラムの文字データ部分を示す
図である。
【図3】文字コード指示文を示す図である。
【図4】文字コード指示テーブルを示すテーブルであ
る。
【図5】文字コード変換テーブルを示すテーブルであ
る。
【図6】言語コンパイラの字句解析処理を示すフローチ
ャートである。
【図7】言語コンパイラの字句解析処理における文字デ
ータ解析処理を示すフローチャートである。
【符号の説明】
102…ソースプログラム、103…文字コード指示
文、104…目的プログラム、105…言語コンパイ
ラ、106…字句解析部、110…文字コード指示テー
ブル、111…文字コード変換テーブル。

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 言語コンパイラのソースプログラム解析
    処理において、ソースプログラムの字句解析時に文字コ
    ード指示文を入力し、解析中のソースプログラムの文字
    データの文字コードを文字コード指示文で指定された文
    字コードに変換し目的プログラムへ出力することを特徴
    とする文字コード変換方法。
  2. 【請求項2】 請求項1の文字コード変換方法におい
    て、文字コード指示文で文字コードとともに文字コード
    変換の対象とすべき文字データが指定されている場合、
    指定された文字データと合致する文字データのみ文字コ
    ードを変換することを特徴とする文字コード変換方法。
  3. 【請求項3】 請求項1の文字コード変換方法におい
    て、文字コード指示文で文字コードとともに文字コード
    変換の変換対象とすべきソースプログラムの範囲が指定
    されている場合、指定された範囲にある文字データのみ
    文字コードを変換することを特徴とする文字コード変換
    方法。
JP2000218718A 2000-07-14 2000-07-14 文字コード変換方法 Pending JP2002032231A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000218718A JP2002032231A (ja) 2000-07-14 2000-07-14 文字コード変換方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000218718A JP2002032231A (ja) 2000-07-14 2000-07-14 文字コード変換方法

Publications (1)

Publication Number Publication Date
JP2002032231A true JP2002032231A (ja) 2002-01-31

Family

ID=18713632

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000218718A Pending JP2002032231A (ja) 2000-07-14 2000-07-14 文字コード変換方法

Country Status (1)

Country Link
JP (1) JP2002032231A (ja)

Similar Documents

Publication Publication Date Title
US4860203A (en) Apparatus and method for extracting documentation text from a source code program
US20040049768A1 (en) Method and program for compiling processing, and computer-readable medium recoding the program thereof
JPH10301790A (ja) アセンブル処理方式
JP2002032231A (ja) 文字コード変換方法
JPH02183339A (ja) コンピユータ・プログラム変換装置および方法
JPS5922140A (ja) 対話型コンパイル方式
JPH07121379A (ja) 複数言語混在コンパイラ
JP3003459B2 (ja) プログラム作成支援装置
JPS63136260A (ja) 機械翻訳システムにおける文生成処理方式
JP3141945B2 (ja) コンパイル装置
JP3190377B2 (ja) 関数名変換装置
JPH06242958A (ja) コンパイル方式
JPH0659904A (ja) プログラムの字句解析方法
JPH05143351A (ja) 原始プログラム比較方式
JPH0561687A (ja) コンパイラの処理方式
JPH05204705A (ja) 未定義変数検出処理方法
JPH0231236A (ja) コンパイラ
KR20010063805A (ko) 씨 프로그램의 구문 분석방법
JPS63314645A (ja) プログラム言語トランスレ−タ
JP2001034482A (ja) コンパイル装置、プログラム最適化装置、コンパイル処理方法及び記録媒体
JP2000112768A (ja) パーザ生成器プリプロセッサシステム、パーザ生成器用プリプロセス方法
JPH03127264A (ja) 括弧付き文の機械翻訳方式
JPH0695889A (ja) プログラム修正方式
JPH02183370A (ja) 文章解析方式
JPH0950429A (ja) コンパイラにおけるポインタベクトル化システム