JPH04270422A - プリコンパイル処理方式 - Google Patents

プリコンパイル処理方式

Info

Publication number
JPH04270422A
JPH04270422A JP41240390A JP41240390A JPH04270422A JP H04270422 A JPH04270422 A JP H04270422A JP 41240390 A JP41240390 A JP 41240390A JP 41240390 A JP41240390 A JP 41240390A JP H04270422 A JPH04270422 A JP H04270422A
Authority
JP
Japan
Prior art keywords
syntax
operand
address
instruction
text
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.)
Withdrawn
Application number
JP41240390A
Other languages
English (en)
Inventor
Masaharu Minamoto
政春 源
Michiharu Matsubara
松原 道治
Akira Tsunoshima
角島 章
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.)
Fujitsu Ltd
PFU Ltd
Original Assignee
Fujitsu Ltd
PFU 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 Fujitsu Ltd, PFU Ltd filed Critical Fujitsu Ltd
Priority to JP41240390A priority Critical patent/JPH04270422A/ja
Publication of JPH04270422A publication Critical patent/JPH04270422A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は,プリコンパイル処理方
式に関し,特に,プリコンパイラにおいてテキストの構
文チェックを行なうプリコンパイル処理方式に関する。
【0002】コンパイル処理を実行する前に,その準備
的なフェーズとして,プリコンパイル処理が行なわれる
。プリコンパイラは,通常,FORTRAN等の高級言
語をホスト言語とする。即ち,所定の言語で記述された
入力テキストをプリコンパイル処理することにより,高
級言語で記述された中間テキストを得る。
【0003】
【従来の技術】近年,プログラムの大型化に伴い,プロ
グラムを部品化することが要求されている。この部品化
したプログラムを,プリコンパイラの出力である中間テ
キストとして得ることが行なわれている。そして,この
部品である中間テキストをコンパイル処理することによ
り,オブジェクト形成の出力テキストを得る。これを,
図4に示す。
【0004】図4において,プリコンパイラ2は,所定
の言語で記述された入力テキスト1を,そのテキスト編
集部3により翻訳(プリコンパイル処理)し,中間テキ
スト7を出力する。中間テキスト7は,部品化されたプ
ログラム(部品)であり,高級言語で記述される。更に
,コンパイラ8は,この中間テキスト7をコンパイル処
理し,出力テキスト10を出力する。このコンパイル処
理の際,コンパイラ8の構文チェック部9により,構文
チェックを行ない,中間テキスト7の記述形式が妥当か
否かをチェックする。この構文チェックにより構文にエ
ラーが発見された場合,入力テキスト1を修正し,再び
プリコンパイル処理及びコンパイル処理を行なって正し
い出力テキスト10を得る必要がある。
【0005】
【発明が解決しようとする課題】前述の従来技術によれ
ば,コンパイラ8においてのみ構文チェックを行なって
おり,プリコンパイラ2における入力テキスト1につい
ての構文チェックを行なっていない。このため,中間テ
キスト7をコンパイル処理した際にエラーを検出する可
能性が高いという問題があった。また,この場合,入力
テキスト1まで戻って修正しなければならず,その作業
の負担と時間の無駄が大きな問題であった。
【0006】一方,プリコンパイラ2において入力テキ
スト1の構文チェックを行なおうとすると,多くのチェ
ック処理を必要とし,更に作業の負担が大きく,時間を
要するという問題があり,採用されていなかった。即ち
,入力テキスト1に使用される全ての命令についてその
各々で許される記述形式の全てを考慮してチェック処理
を行なうプログラムを作成して,プリコンパイラ2に組
込むことが必要となる。このプログラム作成の負担は極
めて大きく非現実的である。また,この方式によれば,
命令や記述形式の変更があった場合に,プログラムの書
換えが必要となるので,この変更に対応するのが難しい
という問題もある。
【0007】本発明は,簡単な構成によりプリコンパイ
ル処理の際の構文チェックを可能としてデバック時の負
担を軽減したコンパイル処理方式を提供することを目的
とする。
【0008】図1は本発明の原理構成図であり,本発明
によるコンパイル処理の概略を示している。
【0009】プリコンパイラ2は,所定の言語で記述さ
れた入力テキスト1を翻訳(プリコンパイル処理)して
,高級言語で記述された中間テキスト7を出力する。 この翻訳は,テキスト編集部3が行なう。また,プリコ
ンパイラ2は,この翻訳の際に,入力テキスト1の構文
チェックを行なう。このために,プリコンパイラ2は構
文チェック部4とオペランドテーブル6とを少なくとも
備える。構文チェック部4は,読込まれた入力テキスト
1の命令の各々について,オペランドテーブル6を用い
て,構文チェックを行なう。
【0010】
【作用】図2は本発明の作用説明図であり,同図(A)
は命令の記述形式の一例を示し,同図(B)は構文チェ
ックの一例を示す。
【0011】今,入力テキスト1で用いられる命令の1
つ(「命令C」とする)の許される記述形式が,図2(
A)に示すものであるとする。即ち,命令Cの構文は,
命令名,オペランド1,キーワード1,オペランド2が
この順に記述されてなり,オペランド1はくり返すこと
ができ,キーワード1及びオペランド2は省略できると
いうものである。
【0012】この構文をチェックするため,オペランド
テーブル6は,入力テキストで用いられる命令の各々に
対応して,少なくとも,真アドレス,偽アドレス及び詳
細情報ビットを格納する。構文チェック部4は,オペラ
ンドテーブル6における「命令C」に対応する真アドレ
ス,偽アドレス及び詳細情報ビットを用いて,「命令C
」の構文チェックを行なう。
【0013】まず,オペランドテーブル6における「命
令C」についての最初の記述(相対番号1)の詳細情報
ビットの記述と「オペランド1」とを比較する。一致す
る場合は真アドレス「1」へ,不一致の場合は偽アドレ
ス「2」へ分岐する。この場合,一致すると仮定すると
,真アドレス「1」へ分岐する。
【0014】ここで,真アドレス及び偽アドレスは,相
対番号として表される。相対番号は,同一命令において
,その語種別に付された番号であり,その命令について
のオペランドテーブル6における記述の各々に与えられ
る相対アドレスである。この記述は,「オペランド1」
,「キーワード1」,「オペランド2」等の語種別にな
され,その命令の構文によって異なる内容及び数の記述
となる。
【0015】前述の如く,真アドレス「1」へ分岐した
後,次の「キーワード1」と相対番号1の内容とを比較
するが,不一致となるので偽アドレス「2」へ分岐する
。再び,「キーワード1」と相対番号2の内容とを比較
すると,今度は一致するので真アドレス「3」へ分岐す
る。一方,不一致の場合,偽アドレス「0」に分岐する
。このアドレス「0」は,相対番号としては用いられな
い値であり,解析終了(正常終了)を示す所定値として
用いられる。即ち,アドレス「0」へ分岐した場合,構
文チェック部4は,解析終了を出力して構文チェックを
終了する。
【0016】前述の如く,真アドレス「3」へ分岐した
後,次の「オペランド2」と相対番号3の内容とを比較
する。一致する場合は真アドレス「0」へ分岐し,解析
終了を出力する。不一致の場合は偽アドレス「×」へ分
岐する。このアドレス「×」は,相対番号としては用い
られない値であり,エラー(異常終了)を示す所定値と
して用いられる。即ち,アドレス「×」へ分岐した場合
,構文チェック部4は,エラーを出力して構文チェック
を終了する。
【0017】以上によれば,プリコンパイラ2において
入力テキスト1の構文チェックを行なうことが可能とな
る。従って,コンパイラ8による中間テキスト7のコン
パイル時にエラーを検出する率を小さくでき,一方,エ
ラーの修正を,直ちに入力テキスト1を修正することに
より容易に行なうことができる。また,プリコンパイラ
2は,読込んだ入力テキスト1とオペランドテーブル6
の内容との比較をくり返すのみで構文チェックができる
ので,その構成は簡単でよく,プログラム作成の負担は
少なくて済む。これに加えて,構文チェックのための情
報をオペランドテーブル6として持つことにより,命令
や記述形式の変更にも,プログラムを変更することなく
オペランドテーブル6の変更により容易に対応できる。
【0018】
【実施例】図1及び図2について更に説明した後,図3
に従って構文チェックの具体例について説明する。
【0019】図1において,中間テキスト7は,例えば
FORTRAN等の高級言語で記述されたものである。 一方,入力テキスト1は,FORTRANを記述するこ
とによるプログラムへの負担を軽くするため,例えば,
日本語による記述を許し,また,その構文を単純化した
ものである。入力テキスト1は,プリコンパイラ2によ
り中間テキスト7に翻訳されるが,この際,本発明に従
う構文チェックが行なわれ,エラーがあればこれが検出
される。これにより,早い段階で入力テキスト1の修正
によりエラーを解消できる。
【0020】中間テキスト7は,コンパイラ8により出
力テキスト10に翻訳される。出力テキスト10は,例
えば,オブジェクト形式のプログラム(オブジェクトモ
ジュール)である。この翻訳の際,コンパイラ8におい
ても,その構文チェック部9が中間テキスト7の構文チ
ェックを行なう。従って,この段階でも,エラーがあれ
ばこれが検出されるが,その率は低い。即ち,入力テキ
スト1に存在したエラーは先にプリコンパイル処理時に
除かれ修正されているので,コンパイル処理の対象とな
る中間テキスト7におけるエラーは極めて少ない。従っ
て,この中間テキスト7の構文チェックの際に検出され
るエラーも少なくなる。これにより,コンパイル処理後
に入力テキスト1を修正することは少なくなるので,そ
の作業と時間の無駄を少なくできる。
【0021】プリコンパイラ2は,構文チェックのため
に,オペランドテーブル6の他,命令テーブル5を持つ
。命令テーブル5は,図2(B)に示す如く,入力テキ
スト1で用いられる命令の各々に対応して,オペランド
テーブル6のテーブル番号を格納する。即ち,命令名毎
に対応するテーブル番号を格納する。
【0022】従って,オペランドテーブル6は,各命令
に対応した複数の単位テーブルからなり,各単位テーブ
ルには一意に定まるテーブル番号が付される。構文チェ
ック部4は,図2(B)に示す如く,入力テキスト1が
読込まれると,その命令名「命令C」を用いて命令テー
ブル5を検索して対応するテーブル番号「20」を求め
,これを用いてオペランドテーブル6のアクセスを行な
う。これにより,「命令C」に対応するオペランドテー
ブル6の単位ページが参照される。なお,命令名を用い
て,直接,オペランドテーブル6をアクセスできるよう
にしてもよい。
【0023】オペランドテーブル6の格納する情報は,
図2(B)に示す如く,「相対番号」,「語種別」,「
条件付フラグ」,「真アドレス」,「偽アドレス」及び
「詳細情報ビット」である。「相対番号」は,1命令即
ち1単位テーブルにおける相対番号即ち相対アドレスで
ある。「語種別」は,入力テキスト1における命令を記
述しているコード〔テキストコード)との比較をするた
めの語コードである。「条件付フラグ」は,「オペラン
ド1」の如きくり返し処理を許す場合に所定値「1」と
されるフラグである。このフラグが「1」の場合,その
くり返し処理において偽アドレスにのみ分岐する場合に
エラーとされる。即ち,くり返し処理において,1度で
も真アドレスに分岐すればエラーではないが,そうでな
い場合はエラーとされる。「真アドレス」は,オペラン
ドが詳細情報ビットの記述と一致した場合に選択される
。「偽アドレス」は,オペランドが詳細情報ビットの記
述と不一致の場合に選択される。「詳細情報ビット」は
,オペランドに記述できる内容を規定するものであり,
その内容毎に対応する複数ビットからなる。
【0024】次に,図3により,構文チェックの具体例
につき説明する。図3(A)は,構文の具体例を示し,
図2(A)に対応する。図3(B)は,構文チェックの
一例を示し,図2(B)に対応する。
【0025】図3(A)に示す如く,「小出力」という
命令は,「パラメタ1」をオペランド1とし,「#出力
先」をキーワード1とし,「パラメタ2」をオペランド
2とする構文でなければならない。これに対し,図3(
B)に示す如く,入力テキスト1に「小出力…$コンソ
ール」という記述があるとする。以下,この「小出力」
という命令を例に,構文チェックについて説明する。
【0026】なお,図3(B)に示す如く,命令として
は,「転記」,「小入力」,「表示」等があり,これら
のうち入力テキスト1に実際に記述されているものにつ
いて,命令毎に構文チェックが行なわれる。
【0027】入力テキスト1が読込まれると,命令名「
小出力」を用いて,命令テーブル5を検索し,そのテー
ブル番号「20」を抽出し,これを用いてオペランドテ
ーブル6を参照する。オペランドテーブル6のテーブル
番号「20」の単位ページにおいて,まず,その相対番
号「1」の欄を検索する。この場合,その詳細情報ビッ
トから,オペランド1には文字定数他は項目名を記述す
ることが可能であることが判る(これらのビットが所定
値「1」である)。そこで,「パラメタ1」の記述を見
ると,「OKデス」は文字定数であるので,真となり(
真アドレスに分岐する),「パラメタ1」の解析は終了
し,次の「#出力先」の解析を開始する。
【0028】なお,ここで,条件つきフラグが「1」で
あるので,最初にパラメタ1の記述が「偽」であるとさ
れた場合,相対番号「2」へ分岐するのではなく,エラ
ーとされる。
【0029】前述の如く,先の処理が「真」であったの
で,真アドレスの示す相対番号「1」の欄を再び検索す
る。ここで,「#出力先」は,文字定数でも項目名でも
ないため,偽となる。そこで,偽アドレスの示す相対番
号「2」へ分岐する。この欄を検索すると,入力テキス
ト1の記述「#出力先」と,語種別「#出力先」とが特
定コードで一致するので,真となる。これで「#出力先
」の解析は終了し,次の「パラメタ2」の解析を開始す
る。
【0030】相対番号「3」の欄を検索すると,オペラ
ンド2にはシステム定数を記述することが可能であるこ
とが判る。そこで,「パラメタ2」の記述をみると,「
$コンソール」はシステム定数であるので,真となる。 真アドレスが「0」であるので,解析終了が出力される
。仮に,「パラメタ2」が「$コンソール」の代りに「
OKデス」等の文字定数であった場合,偽となり,エラ
ーが出力される。
【0031】
【発明の効果】以上説明したように,本発明によれば,
プリコンパイル処理において,構文チェック部とオペラ
ンドテーブルを設けることにより,プリコンパイル処理
の際に入力テキストの構文チェックができるので,コン
パイル処理の際のエラーの検出率を小さくでき,デバッ
グの時間を少なくしその作業を容易にすることができる
。また,プリコンパイラの構成を簡単なものにできるの
で,その作成の負担が少なくて済み,命令や記述形式の
変更にも容易に対処することができる。
【図面の簡単な説明】
【図1】本発明の原理構成図である。
【図2】本発明の作用説明図である。
【図3】実施例説明図である。
【図4】従来技術説明図である。
【符号の説明】
1  入力テキスト 2  プリコンパイラ 3  テキスト編集部 4  構文チェック部 5  命令テーブル 6  オペランドテーブル 7  中間テキスト 8  コンパイラ 9  構文チェック部 10  出力テキスト

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】  所定の言語で記述された入力テキスト
    (1)を翻訳して高級言語で記述された中間テキスト(
    7)を出力するプリコンパイラ(2)において,  読
    込まれた前記入力テキスト(1)の構文チェックを行な
    う構文チェック部(4)と,前記入力テキスト(1)で
    用いられる命令の各々に対応して,真アドレス,偽アド
    レス及び詳細情報ビットを格納したオペランドテーブル
    (6)とを備え,前記構文チェック部(4)が,読込ま
    れた前記入力テキスト(1)の命令の各々について,そ
    のオペランドが前記詳細情報ビットの記述と一致する場
    合に前記真アドレスに分岐し,不一致の場合に前記偽ア
    ドレスに分岐すると共に,前記真アドレス又は偽アドレ
    スが第1の所定の値の場合に解析終了を出力し,第2の
    所定の値の場合にエラーを出力することを特徴とするプ
    リコンパイル処理方式。
  2. 【請求項2】  前記プリコンパイラ(2)が,前記入
    力テキスト(1)で用いられる命令の各々に対応して前
    記オペランドテーブル(6)のテーブル番号を格納した
    命令テーブル(5)を備え,前記オペランドテーブル(
    6)は前記命令の各々にテーブル番号を付した構成を有
    し,前記構文チェック部(4)が,前記命令テーブル(
    5)を用いて前記命令に対応する前記テーブル番号を求
    め,これを用いて前記オペランドテーブル(6)をアク
    セスすることを特徴とする請求項1記載のプリコンパイ
    ル処理方式。
  3. 【請求項3】  前記オペランドテーブル(6)は,前
    記命令の各々においてその語種別毎に相対番号を付した
    構成を有すると共に,前記真アドレス又は偽アドレスと
    して前記相対番号を記述してなることを特徴とする請求
    項1記載のプリコンパイル処理方式。
  4. 【請求項4】  対応する命令にくり返し処理がある場
    合に所定の値とされる条件付きフラグを前記オペランド
    テーブル(6)に設け,前記構文チェック部(4)が,
    前記条件付きフラグが所定の値であり,かつ,前記くり
    返し処理において前記偽アドレスに分岐する場合にエラ
    ーを出力することを特徴とする請求項1記載のプリコン
    パイル処理方式。
JP41240390A 1990-12-20 1990-12-20 プリコンパイル処理方式 Withdrawn JPH04270422A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP41240390A JPH04270422A (ja) 1990-12-20 1990-12-20 プリコンパイル処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP41240390A JPH04270422A (ja) 1990-12-20 1990-12-20 プリコンパイル処理方式

Publications (1)

Publication Number Publication Date
JPH04270422A true JPH04270422A (ja) 1992-09-25

Family

ID=18521247

Family Applications (1)

Application Number Title Priority Date Filing Date
JP41240390A Withdrawn JPH04270422A (ja) 1990-12-20 1990-12-20 プリコンパイル処理方式

Country Status (1)

Country Link
JP (1) JPH04270422A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010026589A (ja) * 2008-07-15 2010-02-04 Casio Comput Co Ltd 情報処理装置及びプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010026589A (ja) * 2008-07-15 2010-02-04 Casio Comput Co Ltd 情報処理装置及びプログラム

Similar Documents

Publication Publication Date Title
USRE33706E (en) Table driven translator
JP3405996B2 (ja) コンピュータベースのソフトウェアコンパイルシステム及びデバッガ
EP1280056A1 (en) Generation of debugging information
KR20020070809A (ko) 포스트-링크 코드 최적화
RU2115159C1 (ru) Способ и устройство для проверки использования полей записей во время компиляции
US20030084041A1 (en) Programmer's dynamic spellchecker
JPH04270422A (ja) プリコンパイル処理方式
US20020199174A1 (en) Tool for converting .MAP file formats
JP3461185B2 (ja) ロードモジュールへのソースコード行番号登録方法および装置
Andrews et al. The formal definition of Modula-2 and its associated interpreter
JP3058050B2 (ja) ソースプログラム修正支援装置
JP3029368B2 (ja) プログラム誤り検出方法および誤り検出装置
JP2785606B2 (ja) パイプライン処理方式コンピュータ用プログラムのデバッガ
JP2728504B2 (ja) 入力命令文検査装置
JP3417960B2 (ja) 文章校正支援方法および装置
JPH04260936A (ja) コンパイラ装置
JPH05197561A (ja) コンパイル方式
JPH07168719A (ja) 冗長式除去装置
JPS59231649A (ja) コンパイルリスト出力処理方式
JPH10312312A (ja) 仕様によって動作が変わるc言語の計算機プログラム検査処理方法およびプログラム記憶媒体
JP2000132405A (ja) インライン展開処理装置及び方法
JPH05108372A (ja) コンパイラ最適化処理内容の出力方式
JPS58169637A (ja) コンパイル処理方式
JPH06290052A (ja) 再コンパイル方式
JPH03100730A (ja) 高級言語による緊急修正データ作成処理方法

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19980312