JPH0659904A - プログラムの字句解析方法 - Google Patents

プログラムの字句解析方法

Info

Publication number
JPH0659904A
JPH0659904A JP20932392A JP20932392A JPH0659904A JP H0659904 A JPH0659904 A JP H0659904A JP 20932392 A JP20932392 A JP 20932392A JP 20932392 A JP20932392 A JP 20932392A JP H0659904 A JPH0659904 A JP H0659904A
Authority
JP
Japan
Prior art keywords
program
lexical
processing
language
term
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
JP20932392A
Other languages
English (en)
Inventor
Yuji Yamatani
祐二 山谷
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP20932392A priority Critical patent/JPH0659904A/ja
Publication of JPH0659904A publication Critical patent/JPH0659904A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 これまで必要としていた埋込みプログラムの
プリプロセッサーによる翻訳処理を不要とし、コンパイ
ラーの字句解析部で翻訳処理する。 【構成】 異なる言語、例えばCOBOL特有の字句で
あるか、あるいはSQLで記述されたプログラムの最初
を示す字句であるかを判断し、この判断の結果に基づい
てCOBOLで記述されたプログラムとSQLで記述さ
れた埋込みプログラムに対する処理をそれぞれ第1の字
句解析モードと第2の字句解析モードで字句処理する。
このように字句解析モードを変えて処理することによ
り、従来プリプロセッサーで実行されていた異なる言
語、例えばSQLで記述されたプログラムに対する処理
が、これまで字句解析部で実行されていたCOBOLで
記述されたプログラムに対する処理と同様に、字句解析
部で実行され、処理時間の高速化が図れるとともにエラ
ー処理においても元のプログラム(変数や行番号)に対
して出力することが可能となる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、第1の高級言語で記述
されたプログラムに第2の言語で記述されたプログラム
が埋め込まれたソースプログラムを翻訳処理するプログ
ラムの字句解析方法に関する。
【0002】
【従来の技術】従来、例えば、SQL埋込みCOBOL
プログラムを翻訳するにはプリプロセッサーを必要とし
ていた。すなわち、プリプロセッサーにおいては、CO
BOL言語で記述されているプログラムに対する処理は
実行されないが、埋込みSQLプログラムに対してはS
QL言語からCOBOL言語に変換したCOBOLソー
スを作成する処理が実行され、作成されたCOBOLソ
ースはプリプロセッサーからCOBOLコンパイラーに
出力される。COBOLコンパイラーは変換されたCO
BOLソースを含むCOBOLプログラムに対し翻訳処
理を実行する。
【0003】このように、プリプロセッサーを必要とす
るような形式で記述されたプログラムは、必ずプリプロ
セッサーを介し、プリプロセッサーによって出力された
プログラムに対して翻訳を行なう必要があった。
【0004】
【発明が解決しようとする課題】しかしながら、上記し
たようなプリプロセッサーを必要とするプログラムの翻
訳処理においては、プリプロセッサーが元のプログラム
を一度読み込み、再度プログラムの形にしてテキストを
コンパイラーに出力し、コンパイラーがそのテキストを
また読み込むステップを必要とするため、処理時間の上
で性能的に問題があった。また、翻訳処理は元のプログ
ラムとは異なるプログラムにより実行されるため、コン
パイラーがエラーを出力するときに、マッピングなどの
特別な操作が必要になるという問題などがあった。
【0005】本発明は、上記事情に鑑みてなされたもの
で、これまでプリプロセッサー処理を必要としていた埋
込みプログラムの翻訳処理をコンパイラーの字句解析部
で処理するプログラムの字句解析方法を提供することを
目的とする。
【0006】
【課題を解決するための手段】本発明は、上記目的を達
成するために、第1の高級言語で記述されたプログラム
に第2の言語で記述されたプログラムが埋め込まれたソ
ースプログラムを翻訳処理するコンパイラーであって、
上記ソースプログラムから字句を取り出す取り出しステ
ップと、この取り出しステップで取り出された字句が上
記第1の高級言語特有の字句であるかあるいは上記第2
の言語で記述されたプログラムの最初を示す字句である
かを判断する判断ステップと、この判断ステップで上記
第1の高級言語特有の字句であると判断された字句に対
し字句処理を行ない中間テキストを作成する第1の字句
処理ステップと、上記判断ステップで上記第2の言語で
記述されたプログラムのの最初を示す字句であると判断
されたとき、上記第2の言語で記述されたプログラムか
ら字句を取り出すとともに取り出した字句に対し字句処
理を行ない中間テキストを作成する第2の字句処理ステ
ップとからなることを特徴とする。
【0007】
【作用】本発明は上記のように構成したので、第1の高
級言語特有の字句であるか、あるいは第2の言語で記述
されたプログラムの最初を示す字句であるかを判断し、
この判断の結果に基づいて第1の高級言語で記述された
プログラムと第2の言語で記述された埋込プログラムに
対する処理をモードを変えて字句処理することにより、
従来プリプロセッサーで実行されていた第2の言語で記
述されたプログラムに対する処理が、これまで字句解析
部で実行されていた第1の高級言語で記述されたプログ
ラムに対する処理と同様に、字句解析部で実行され、処
理時間の高速化が図れるとともにエラー処理においても
元のプログラム(変数や行番号)に対して出力すること
が可能となる。
【0008】
【実施例】以下、図面を参照して本発明の実施例を説明
する。
【0009】図1は本発明の一実施例のコンパイラーを
示す図で、図2は図1に示すコンパイラーの字句解析部
の動作を示すフローチャートである。
【0010】図1において、1 は、第1のプログラム言
語、例えばCOBOLで記述されたプログラムに第2の
プログラム言語、例えばSQLで記述されたプログラム
が埋め込まれた、いわゆるSQL埋込みCOBOLプロ
グラム(ソースプログラム)を格納する外部記憶装置
(以下、ファイルと称す)で、このファイル1 に格納さ
れているソースプログラムはCOBOLコンパイラー
(以下、コンパイラーと称す)2 に出力される。ファイ
ル1 からコンパイラー2 に出力されたソースプログラム
はコンパイラー2 において機械語で記述されたオブジェ
クトプログラムに翻訳され、ファイル3 に格納される。
【0011】コンパイラー2 は、ソースプログラムを識
別子、定数、演算子など構文上の基本単位となる字句
(文字列)に切り分ける字句解析部2a、バッカス記法に
従って記述されたソースプログラムと生成規則との対応
を解析する構文解析部2b、識別子(名前)の宣言に基づ
く型の決定、宣言と使用との対応付けなどを解析する文
字解析部3c、および実行時環境に合わせたオブジェクト
コードを生成するコード生成部2dから構成される。ま
た、字句解析部2aは、後述するように、COBOLで記
述されたプログラムを字句解析する第1の字句解析モー
ドと、SQLで記述されたプログラムを字句解析する第
2の字句解析モードとを有しており、従来プリプロセッ
サーにより実行されていたSQLで記述されたプログラ
ムに対する処理を実行可能としている。
【0012】また、4 は、字句解析部2aで字句処理され
て作成される中間テキストを格納するファイルで、字句
解析部2aにおいて実行される処理が終了すると、ファイ
ル4に格納されている中間テキストは構文解析部2bに出
力される。
【0013】次に、図2を参照し、字句解析部2aの作用
について説明する。
【0014】ファイル1 からコンパイラー2 にソースプ
ログラムが出力されると、字句解析部2aは、まず、ソー
スプログラムから字句を1つ取出す。この字句の取出し
後、取出された字句が存在するか否か、すなわち、ソー
スプログラムの字句取出しが完了か否かが判断される。
(ステップS1、ステップS2)。
【0015】字句取出しの際に取出された字句が存在す
るときには、続いて、COBOLで記述されたプログラ
ムを字句解析する第1の字句解析モードとSQLで記述
されたプログラムを字句解析する第2の字句解析モード
の一方を選択するモード選択が判断される。この判断は
取出された字句が埋込みSQLプログラムの先頭を示す
字句“EXEC”であるか否かを判断することにより実
行される。すなわち、取出された字句が“EXEC”で
ないときには、COBOLプログラムに特有の字句であ
ると判断されて第1の字句解析モードが選択され、ま
た、“EXEC”であるときには、SQLプログラムの
先頭であると判断されて第2の字句解析モードが選択さ
れる。(ステップS3)。
【0016】ステップS3において、第1の字句解析モー
ドが選択されると、処理はステップS4に移行し、ステッ
プS1で取出されたCOBOLプログラムの字句に対して
中間テキストを作成する字句処理が実行され、この字句
処理により作成された中間テキストはファイル4 に格納
される。また、字句処理の際に誤りがあった場合には、
中間テキストは作成されないで、誤りの形態によっては
構文解析部2b以降に誤りがあったことを伝達するための
誤り情報が付加される。(ステップS4)。
【0017】また、ステップS3において、第2の字句解
析モードが選択されると、処理はステップS5に移行す
る。ステップS5では、埋込みSQLプログラムから1つ
の字句を取出す字句取出しと、取出された字句に対して
SQL言語からCOBOL言語に変換し仮のテキストを
作成する字句処理が実行される。この字句処理により、
従来プリプロセッサーで処理されていた埋込みSQLプ
ログラムからCOBOLソースを作成する処理が字句解
析部2aで実行されることになる。上記字句取出しと字句
処理は、埋込みSQLプログラムの最後を示す字句“E
ND−EXEC”が取出されるまで繰り返し実行され
る。この繰り返し実行される字句取出しと字句処理にお
いて誤りがあった場合には、仮のテキストは作成されな
いで、誤りの形態によっては誤り情報が付加される。
(ステップS5、ステップS6)。
【0018】“END−EXEC”が取出されると、繰
り返し実行される字句取出しと字句処理の実行は完了
し、処理はステップS7に移行する。ステップS7において
は、埋込みSQLプログラムに対する処理全般に関する
処理、例えば、ステップS5で作成された仮のテキストを
中間テキストとして正式にファイル4 に出力する処理、
あるいは誤りが発生したときには誤り処理などの処理を
実行する。埋込みSQLプログラムに対する処理全般に
関する処理が完了すると、処理はステップS1に戻り、ソ
ースプログラムから字句の取出しが繰り返される。(ス
テップS7)。
【0019】ステップS1における字句の取出しが繰り返
され、取出す字句が存在しなくなると、取出す字句の不
在がステップS2で判断され、処理はステップS8に移行す
る。ステップS8においては、字句解析部2aにおける最終
処理として、埋込みプログラムがあったか否かの情報処
理、あるいはステップS4とステップS5でエラーがあった
か否かの処理やその情報処理などが実行され、これらの
処理結果ともにファイル4 に格納されている中間テキス
トが構文解析部2bに出力され、字句解析部2aにおける処
理を終了する。(ステップS8)。
【0020】字句解析部2aにおける処理が終了すると、
引き続いて構文解析部2b、意味解析部2c、およびコード
生成部2dにおいてそれぞれの処理が実行され、最終的
に、ファイル3 にオブジェクトプログラムが格納され
る。
【0021】なお、上記実施例では、COBOLプログ
ラムにSQLプログラムが倦め込まれているソースプロ
グラムについて説明したが、これに限ることはなく、例
えばPASCALプログラムにSQLプログラムが倦め
込まれているソースプログラムであってもよく、要は高
級言語プログラムに他の言語のプログラムが埋め込まれ
ているソースプログラムに適用されるものである。
【0022】なお、本発明は上記実施例に限定されるこ
となく、本発明の要旨を逸脱しない範囲において、種々
変形可能であることは勿論である。
【0023】
【発明の効果】以上詳述したように、本発明のプログラ
ムの字句解析方法によれば、第1の高級言語特有の字句
であるかあるいは第2の言語で記述されたプログラムの
最初を示す字句であるかを判断し、この判断の結果に基
づいて第1の高級言語で記述されたプログラムと第2の
言語で記述された埋込プログラムに対する処理をモード
を変えて字句処理することにより、従来プリプロセッサ
ーで実行されていた第2の言語で記述されたプログラム
に対する処理をこれまで字句解析部で実行されていた第
1の高級言語で記述されたプログラムに対する処理と同
様に字句解析部で実行することが可能となり、処理時間
の高速化が図れるとともにエラー処理においても元のプ
ログラム(変数や行番号)に対して出力することができ
る。
【図面の簡単な説明】
【図1】本発明の一実施例のコンパイラーを示す図であ
る。
【図2】図1に示すコンパイラーの字句解析部の動作を
示すフローチャートである。
【符号の説明】
2 …コンパイラー 2a…字句解析部

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 第1の高級言語で記述されたプログラム
    に第2の言語で記述されたプログラムが埋め込まれたソ
    ースプログラムを翻訳処理するコンパイラーであって、
    上記ソースプログラムから字句を取り出す取り出しステ
    ップと、この取り出しステップで取り出された字句が上
    記第1の高級言語特有の字句であるかあるいは上記第2
    の言語で記述されたプログラムの最初を示す字句である
    かを判断する判断ステップと、この判断ステップで上記
    第1の高級言語特有の字句であると判断された字句に対
    し字句処理を行ない中間テキストを作成する第1の字句
    処理ステップと、上記判断ステップで上記第2の言語で
    記述されたプログラムのの最初を示す字句であると判断
    されたとき、上記第2の言語で記述されたプログラムか
    ら字句を取り出すとともに取り出した字句に対し字句処
    理を行ない中間テキストを作成する第2の字句処理ステ
    ップとからなることを特徴とするプログラムの字句解析
    方法。
JP20932392A 1992-08-06 1992-08-06 プログラムの字句解析方法 Pending JPH0659904A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP20932392A JPH0659904A (ja) 1992-08-06 1992-08-06 プログラムの字句解析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP20932392A JPH0659904A (ja) 1992-08-06 1992-08-06 プログラムの字句解析方法

Publications (1)

Publication Number Publication Date
JPH0659904A true JPH0659904A (ja) 1994-03-04

Family

ID=16571049

Family Applications (1)

Application Number Title Priority Date Filing Date
JP20932392A Pending JPH0659904A (ja) 1992-08-06 1992-08-06 プログラムの字句解析方法

Country Status (1)

Country Link
JP (1) JPH0659904A (ja)

Similar Documents

Publication Publication Date Title
US7711685B1 (en) Method and system for an extensible macro language
US6516461B1 (en) Source code translating method, recording medium containing source code translator program, and source code translator device
JPS61103247A (ja) 翻訳プログラム作成システム
US5838980A (en) Compilation and virtual machine arrangement and process for source code including pre-runtime executable language structure constructs
KR20060069364A (ko) 다중 예외 처리 모델에 대한 중간 표현
JPH06501583A (ja) 多言語最適化コンパイラ内のフォールディングメカニズムを構成する方法
US6625807B1 (en) Apparatus and method for efficiently obtaining and utilizing register usage information during software binary translation
US7539981B2 (en) XML-based preprocessor
US20080141230A1 (en) Scope-Constrained Specification Of Features In A Programming Language
JP7391983B2 (ja) プログラム論理の表現を生成する方法、逆コンパイル装置、再コンパイルシステムおよびコンピュータプログラム製品
JP2879099B1 (ja) 抽象構文木処理方法、抽象構文木処理プログラムを記録したコンピュータ読み取り可能な記録媒体、抽象構文木データを記録したコンピュータ読み取り可能な記録媒体、及び、抽象構文木処理装置
JPH0659904A (ja) プログラムの字句解析方法
KR20230040516A (ko) 자바스크립트의 중간 언어 기반 의미론 추출 자동화 시스템 및 방법
JPH07121379A (ja) 複数言語混在コンパイラ
JP3003459B2 (ja) プログラム作成支援装置
JP3141945B2 (ja) コンパイル装置
JP2001005655A (ja) アプリケーションジェネレータ開発支援装置及びアプリケーションジェネレータ開発支援方法
JP3596570B2 (ja) クラスの主記憶装置への配置方法
JP2001034482A (ja) コンパイル装置、プログラム最適化装置、コンパイル処理方法及び記録媒体
JPH06242958A (ja) コンパイル方式
JPH05313909A (ja) 中間コードインライン展開機能を有するコンパイラシステム
CN117008919A (zh) 仿真模型文件的解析方法、装置、电子设备及存储介质
JP2000132405A (ja) インライン展開処理装置及び方法
JPH0695890A (ja) コンパイラにおける名前置換方式
JP2861630B2 (ja) 接続構造解析器