JPH04142629A - 高級言語処理装置 - Google Patents

高級言語処理装置

Info

Publication number
JPH04142629A
JPH04142629A JP26588290A JP26588290A JPH04142629A JP H04142629 A JPH04142629 A JP H04142629A JP 26588290 A JP26588290 A JP 26588290A JP 26588290 A JP26588290 A JP 26588290A JP H04142629 A JPH04142629 A JP H04142629A
Authority
JP
Japan
Prior art keywords
extended instruction
instruction
analysis information
extended
information storage
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
JP26588290A
Other languages
English (en)
Inventor
Katsuyoshi Mitsuyanagi
三柳 勝義
Shinichi Konya
紺谷 真一
Yoshinobu Nakamura
好伸 中村
Fusaji Takahashi
高橋 房治
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
Original Assignee
Fujitsu 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 filed Critical Fujitsu Ltd
Priority to JP26588290A priority Critical patent/JPH04142629A/ja
Publication of JPH04142629A publication Critical patent/JPH04142629A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔概要〕 BAS I Cのような高級言語で記述されたソースプ
ログラムを、解釈実行するインタプリタまたは翻訳する
コンパイラを備えた高級言語処理装置に間し。
新規命令を既存の命令実行環境に影響を与えずに、外付
けで簡単にサポート可能にすることを目的とし。
基本命令セット以外の交換可能な拡張命令に関する実行
ルーチンを格納する拡張命令ライブラリと、インタプリ
タ本体またはコンパイラ本体の外部に用意される拡張命
令解析情報を記憶する拡張命令解析情報記憶部と、基本
命令セットの予約語以外の文が現れた場合に、拡張命令
解析情報記憶部を参照して解析し、拡張命令に応じた中
間コードまたは機械語コードを出力する拡張命令解析処
理部とを備え、実行時に、拡張命令を示す中間コードま
たは機械語コードに対応して、拡張命令ライブラリ中の
該当する実行ルーチンを動的に呼び出すように構成する
〔産業上の利用分野〕 本発明は、BASICのような高級言語で記述されたソ
ースプログラムを、解釈実行するインタプリタまたは翻
訳するコンパイラを備えた高級言語処理装置に関する。
例えば計算機用の高級言語の1つとして普及しているB
ASICの処理機構は、オペレーティング・システム(
O5)のない環境で発達した歴史があり3周辺装置に対
する入出力機能など、新しい機能が必要になるごとに、
それを処理する新規命令の処理機構が内部に組み込まれ
ることになり。
巨大化する傾向にあった。そのため、新しい特殊命令を
必要としないユーザにとってもメモリ等の負荷が増大す
る原因になった。既存命令使用ユーザに負荷をかけずに
、新規命令をサポートできる手段が必要とされる。また
、ユーザ自身で命令を簡単に作成できれば便利である。
〔従来の技術〕
従来のBASICインクブリタは2例えば次のようにB
AS I Cで記述されたプログラムを解釈し実行して
いる。
ソースプログラムのロード時に、ソースを1行ずつ読み
込んで、予約語テーブルをサーチし、対応するトークン
コードに変換する。トークンコードは1例えば命令や関
数の種類などを示す中間コードである。
変換したトークンコードについて、構文解析テーブルを
用いて構文チエツクおよびオペランドのスタックなどを
行い、トークンコードに対応する実行ルーチンを呼び出
して、ソースプログラムによって指示された命令を実行
する。
また、従来のBASICコンパイラは1例えば次のよう
に処理している。
ソースプログラムを1行ずつ入力し、予約語テーブルを
用いて中間コードのテキストであるコード化テキストを
作成する。そのコード化テキストについて、構文解析テ
ーブルにより構文チエツクを行い、コード化テキストか
ら機械語命令またはそれに類する擬似コードC以下、P
コードという)を生成する。すべてのソースプログラム
についての処理が終了したならば、Pコード等からなる
中間オブジェクトファイルについてアドレス解決処理を
行い、実行可能なオブジェクトのファイルをコンパイル
結果として出力する。
このコンパイル結果のオブジェクトを実行するときには
、ますローダがPコードをメモリ上に展開する。そして
、Pコードを取り出してPコードに対応する実行ルーチ
ンを呼び出すことにより。
ユーザが所望する処理を行う。
従来技術では1以上のように高級言語の命令が一律に解
釈実行または翻訳されており、O3のコマンド、O8の
機能2周辺装置等に関する命令をサポートする場合には
、その命令を高級言語を処理する本体の中に、一体化し
て紐み込むようにされていた。
また、ユーザ自身が独自に開発した機能をプログラムで
使用したいときには2機械語ライブラリを作成し、その
機械語ライブラリの実行ルーチンを呼び出す命令を使わ
なければならなかった。
[発明が解決しようとする課題〕 従来技術では2例えば新しい周辺装置を扱う特殊命令を
サポートしようとすると、それを解析するルーチンや実
行ルーチンは、他の既存の命令と同等に扱われるため、
その特殊命令を必要としないユーザにとっても、負荷の
大きいBASICインタプリタまたはBASICコンパ
イラを使用させられることになるという問題があった。
また1機械語ライブラリという形で、新たな機能を実現
する場合には2本来、素人向き言語であるBAS ] 
Cが、突然マニアツクなりASICに早変わりしてしま
い、使用方法の誤りによる暴走が生じることがあった。
使用方法に誤りがなくても1機械語ライブラリを呼び出
すCALL命令の記述の羅列になり、非常に解読性、保
守性の悪いプログラムになるという問題があった。
本発明は上記問題点の解決を図り、新規命令を〔課題を
解決するための手段〕 第1図は本発明の原理構成図である。
第1図において、10は高級言語で記述されたソースプ
ログラム、11はインクプリタ本体やコンパイラ本体な
どの高級言語処理本体部、12は基本命令セット以外の
命令である拡張命令を解析する拡張命令解析処理部、1
3は解析した結果の中間コードまたは機械語コード(以
下、単に中間コードという)、14は拡張命令について
所定の形式による文法を定義する文法定義文、15は文
法定義文14を拡張命令解析情報に変換する文法定義文
コンバータ、16は拡張命令解析情報を記憶する拡張命
令解析情報記憶部、17は解析のための初期化を行う初
期化ルーチン、18は拡張命令を解析するための解析テ
ーブル、19は標準で用意されている基本命令ライブラ
リ520は標準で用意されている基本命令を処理する基
本命令実行ルーチン、21は拡張命令ライブラリ、22
は拡張命令を処理する拡張命令実行ルーチンを表す。
本発明では、あらかじめ定められた基本命令セント以外
の交換可能な拡張命令に関する各種の拡張命令実行ルー
チン22を格納する拡張命令ライブラリ21と、それら
の拡張命令の構文チエツクなどを行い、必要に応じてオ
ペランドをスタックする処理などを行う拡張命令解析情
報を記憶する拡張命令解析情報記憶部16とが、高級言
語処理本体部11に対して外付けで用意できるようにな
っている。
高級言語処理本体部11は、ソースプログラム10中に
基本命令セットの予約語以外の文が現れた場合に、拡張
命令解析処理部12を呼び出し。
その文について拡張命令解析情報記憶部16を参照して
解析することにより、拡張命令に応じた中間コード13
を出力する。
これにより、インタプリタにおける実行時またはコンパ
イル後の実行時に、拡張命令を示す中間コード13が出
現すると、拡張命令ライブラリ21中の該当する拡張命
令実行ルーチン22を動的に呼び出し、特殊な命令につ
いての処理を行う。
本体に最初から標準で備わっている基本命令については
、従来同様、高級言語処理本体部11に組み入れられて
いる基本命令の実行ルーチンまたはランタイムシステム
と呼ばれる基本命令ライブラリ19に収容されている基
本命令実行ルーチン20によって処理する。
拡張命令解析情報記憶部16の生成を、ユーザが簡単に
行うことができるようにするために、拡張命令の文法を
記述する文法定義文14が、所定の規則により定められ
ており、それによってユーザが拡張命令解析情報の基礎
となる情報を指定することができる0文法定義文コンバ
ータ15は。
文法定義文14を入力し、それを解析して拡張命令解析
情報記憶部16を自動生成する。
拡張命令解析情報記憶部16は、拡張命令の予約語や構
文解析テーブルなどの各種の解析テープル18を有し、
それらのテーブル等を初期化する初期化ルーチン17を
持っている。拡張命令解析情報記憶部16は、実行時に
呼び出し元に動的に結合されるダイナミック・リンク・
ライブラリ形式で作成され、高級言語処理本体部11か
ら呼び出しがあると、高級言語処理本体部11に動的に
結合される。
〔作用〕
本発明では、標準で用意される基本命令セット以外の命
令については、外部から命令の構文および実行ライブラ
リの情報を獲得できるようになっている。したがって、
BASICなどの高級言語における基本命令セット以外
の特殊命令を、外付けで使用することができる。すなわ
ち、ハードウェアに拡張ボードを取り付けると機能アン
プするように、ソフトウェアに拡張命令を取り付ければ
基本命令セット以外の命令が簡単に使用できるようにな
り9機能アップ可能となる。
特に、BASIC言語は、比較的小規模の計算機システ
ムで使用されることが多く9また。新しい機能の追加が
しばしば必要になることが多いため、既存の実行環境に
あまり影響を与えないで新規命令を追加できる効果は大
きい、もちろん、他の高級言語にも応用可能である。
〔実施例〕
第2図は本発明の適用システムの例であって。
特に第2図(イ)はBASICインタプリタへの適用例
、 (ロ)はRAS I Cコンパイラへの適用例を示
している。
第2図において、30はCPUおよびメモリ等を備えた
データ処理装置、31はBAS I Cインタプリタ本
体部、32は基本命令に関する予約語を記憶する予約語
テーブル、33は基本命令に関する構文情報を記憶する
構文解析テーブル、34はソースコードを変換したトー
クンコード、35は第1図に示す拡張命令解析情報記憶
部16に記憶されている拡張命令解析情報、36はBA
S ICコンパイラ本体部、37は実行形式プログラム
ファイルを表す。
BAS I Cインタプリタ本体部31は、ソースプロ
グラム10を入力すると、予約語テーブル32によって
、トークンコード34への変換を行う。
入力したソースが予約語テーブル32に登録されていな
ければ、拡張命令解析情報35によって。
拡張命令であるかどうかの判定を行い、拡張命令であれ
ば、それを示すトークンコード34に変換する。さらに
、トークンコード34について、構文解析テーブル33
または拡張命令解析情報35により構文チエツクなどを
行い、該当する基本命令実行ルーチン20または動的に
結合される拡張命令実行ルーチン22によって、命令の
実行を行う。
BASICコンパイラ本体部36も同様であるが、ソー
スプログラム10を解析して、すぐに実行するのではな
く、解析結果について機械語コードまたはPコードに変
換したものを、実行形式プログラムファイル37として
出力する。なお、直接実行形式で出力するのではなく、
結合編集の対象となるオブジェクトファイルとして出力
することもあるが、以下の実施例では、説明を簡単にす
るために、実行形式で出力するものとして説明する。
ソースプログラム10中に拡張命令があると。
BAS I Cコンパイラ本体部36は、拡張命令解析
情報35に基づいて解析を行い、拡張命令実行ルーチン
22を呼び出す命令に展開する。したがって、実行形式
プログラムファイル37のプログラムを実行すると、必
要な時点で拡張命令を処理するための拡張命令実行ルー
チン22が呼び出されて処理されることになる。
以下9本発明の実施例についての詳しい説明に先立って
、まず実施例に関係する技術について説明する。
第3図は本発明の実施例に係るインタプリタによる解析
説明図である。
インタプリタでは、ソースプログラムをトークンコード
に変換する。トークンコードは、ソースを解析しやすい
ように、命令、関数、定数、変数。
ラベル、コメント区切り記号等に分類し、あるコードに
変換したものである。ソースプログラムのローディング
時に、予約語テーブルによってトークンコードへの′変
換(フランチ)を行う。
ソースプログラムは、第3図(イ)に示すようにフラン
チされることになる。各行の先頭は2次の行へのポイン
タである0次に1行番号とトークンコードの並びが続く
、各行の最後は、16進数の’oo”で示される。
解析/実行時には、トークンコードにより、第3図(ロ
)に示すように、対応する構文解析テーブルを参照して
、構文チエツクを行い、スタックに実行ルーチンとのイ
ンタフェース情報を積み込む、積み込むのは主にオペラ
ンド値である。
なお、構文解析テーブルには9文の成立ちを示す情報が
記述されており3分類したトークンが記述される順序を
規定した情報などが格納されている。
例えばrABC文字列 〔、数値〕」と表される文法に
対する構文解析テーブルのイメージは。
第3図(ハ)に示すように1文字型の次は、カンマ(1
)と数値型、または省略というような順序を規定する情
報である。構文チエツクにより、この流れに合わない記
述はエラーとなる。
実行ルーチンに渡す情報(オペランド値)は。
第3図(ニ)、(ホ)のように、スタック40に積まれ
る。第3図(ニ)では2文字列”ABCD”の領域に対
するポインタと数値「lO」がスタック40に積まれる
。オペランドが省略された場合には、第3図(ホ)に示
すように、省略オペランドを意味する特殊コードのオペ
ランドが積まれる。
なお、スタック40に積むオペランドは、簡略化して記
述しているが、型や長さ(文字型)等もスタック情報と
して存在する。
実行は、トークンコードに応じたディスパッチテーブル
(図示省略)により、対応する実行ルーチンを呼び出し
て行う、実行ルーチンは、スタック40からオペランド
値を取り込み処理する。
一方、コンパイラの場合、インタプリタのトークンコー
ドと同様に、ソースを一旦、コード化テキストという解
析しやすい中間コード情報に変換する。このコード化テ
キストによって、第4図(イ)に示すように対応する構
文解析テーブルによる構文チエツク等を行う。
コンパイラにおける構文解析テーブルのイメージも、第
4図(ロ)に示すように、インタプリタの場合と同様で
ある。
コンパイラは、コード化テキストをもとに9機械語コー
ドまたは機械語に近いプリミティブな命令からなるPコ
ード(擬似コード)を出力する。
例えばrABC”123”、A+2Jというようなソー
スの命令があワたとき、第4図(ハ)に示すようなPコ
ード41が生成される。数値式の場合は、順次実行可能
なように逆ボーランド記法により2例えば第4図(ニ)
や第4図(ホ)に示すようなPコード41が生成される
こうしてコンパイラによって生成された実行形式プログ
ラムファイル37は、第5図(イ)に示すような構成に
なっている。実行ファイルのヘッダー(EXEヘッダー
)に続くローダは、ランクイムシステムをロードすると
ともに、以下の領域をロードし、ランタイムシステムに
制御を渡す。
ランタイムシステムは、Pコードを解析し、実行する。
BASICヘッダーは、BASICのコンパイル結果の
領域を管理する。特にLINK情報は。
CHAINやサブプログラムで使用する領域である。D
LLテーブルは、ダイナミック・リンク・ライブラリを
管理するテーブルである。
Pコード41は、コンパイル時に構文チエツクがされて
いるため5例えば第5図(ロ)に示すような実行に関す
る命令■〜■の集まりとなる。・この命令の実行で、A
BC命令に対応する実行ルーチンに制御が渡るときには
、Pコード41の実行により、第5図(ハ)に示すよう
にスタック40へのスクッキングが行われ、■の状態で
スタック40が渡される。
次にユーザが任意に作成することができる拡張命令につ
いて説明する。
拡張命令は2文法定義文により定義する0文法定義文は
、拡張命令に対する文法と実行ルーチンへのディスバッ
チ情報を持つ文であり、サポートする拡張命令のライブ
ラリ単位で1つのファイルを構成する。
文法定義文の構文は1例えば第6図(イ)に示すように
なっている。各項目は、タブまたは空白で区切らなけれ
ばならない。文の終りは復帰・改行コードである。文中
に記述する項目は、以下の内容である。
〈種別〉:定義する文法が「命令」か「関数Jかを記述
する。
命令:命令の文法を記述するとき指定する。
関数二関数の文法を記述するとき指定する。
<ANK名称〉:命令または関数のANK名称をを記述
する。ANK文字で記述しなければならない、許される
ANK文字は、英数字、アンダースコアである。ただし
、最初の文字は英字でなければならない。関数で文字型
の場合には最後に$を指定する。小文字で指定した場合
大文字に変換される。この名称は実行ルーチン名の一部
としても使用される。
〈国語名称〉:「命令」または「関数」の国語名称を記
述する。
〈オペランド記述〉:オペランドの形態を下記の形式で
記述する。記述に用いる特殊記号は半角でも全角でも構
わない、関数の場合、オペランドが1つも存在しなくて
も、ダミーとして最低1つのオペランドを記述しなけれ
ばならない。
BNF風表記でオペランドの記述の文法を示すと以下の
とおりである。
オペランド::識オペランド項目 オペランド、オペランド項目 オペランド項目::一数値型1 〔数値型〕文字型I 
〔文字型〕 配列変数1 〔配列変数〕 〔〕:省略可能を示す。
数値型は、整数型、単精度実数型9倍精度実数型の定数
、変数2式を示す。文字型は2文字型の定数、変数7式
を示す、配列変数は1文字型、整数型、単精度実数型1
倍精度実数型の配列を示す。
配列は実行時に確保されるため、型、配列要素数。
存在の有無の検査は、実行ルーチンで行う必要がある。
拡張命令実行ルーチンの実行ルーチン名は9次のように
ユーザ実行ルーチン識別IDと、ANK名称により定め
る。
命令の場合=「UbS」とrANKANK名称の場合:
 rUbfJとrANK名称ノただし、rANKANK
名称初の文字は大文字。
それ以後は小文字とする。もし文字型の場合、最後の$
は記述できないため、  24 ($の16進コード)
に置き換えて記述する。
例えば、あるファイルに属性を設定する拡張命令rsE
TJを作成するとする。これの文法定義文14は、第6
図(ロ)図示のように記述する。
これの拡張命令実行ルーチン22の実行ルーチン名は、
”UbsSet”となる。
オペランドは、ファイル名と属性文字の2つの文字型で
あり、ANK名称の(a)または国語名称の(b)のよ
うに用いることができる。(a)の場合、ファイル名″
FILE”に“A″の属性を設定することを意味する。
第6図(ハ)は、スクリーンを指定時間だけロックする
拡張命令rscRLOcK」の例である。
文法定義文14は、省略可能な待ち時間を示す数値型と
9機能番号を示す数値型の2つのオペランドを定義して
いる0例えば(C)のように用いる。
同様に関数についても、ユーザが作成したものを用いる
ことができる。第6図(ニ)は、数値を2進数に変換す
る関数rBIN$Jまたは「二進$」の定義を示してい
る。 (d)、 (e)のように用いることができる。
この拡張命令実行ルーチン22については、実行ルーチ
ン名”UbfBin24″で拡張ライブラリに組み込ん
でおく。
第1図に示す文法定義文コンバータ15は9文法定義文
14を格納した定義文ファイルの名前を羅列した定義文
指定ファイルを入力し、各定義文ファイル中の文法定義
文14から拡張命令解析情報を生成する。
拡張命令解析情報は、第7図に示すような情報からなる
第7図に示す拡張命令解析情報35のファイルは、ダイ
ナミック・リンク・ライブラリ(DLL)形式で作成さ
れる。したがって、これをロードするだけで、拡張命令
解析情報35がメモリに展開される。
解析テーブル初期化ルーチン35−1は、予約語&構文
解析情報35−2のアドレスと、DLL名テーブル35
−3のアドレスを呼び出し元へ通知する。
予約語&構文解析情報35−2は、第7図に示すように
、DLL名テーブル35−3における何番目かを示すD
LL番号、命令/関数識別idおよび文法定義文14で
定義されたANK予約語。
国語予約語、構文解析テーブル、実行ルーチンへのポイ
ンタを持つ。なお、実行ルーチンへのポインタは、実行
時にダイナミック・リンクにより解決される。
DLL名テーブル35−3は、実行ルーチンをローディ
ングするとき、実行ルーチンが存在するライブラリを求
めるために使用する。
構文解析テーブルは、第8図(イ)に示すように、関数
または命令を識別する関数/命令識別子と2文字式、数
値式2区切り記号(1)等のトークンコード、正常時に
たどる構文解析テーブルエントリへのポインタ、異常時
にたどる構文解析テーブルエントリへのポインタなどを
持つ。
例えば、オペランドの文法が。
「文字式、〔、数値式〕」であるとき、その構文解析テ
ーブルのイメージは、第8図(ロ)ニ示すようになる。
インタプリタにおける拡張命令のトークンコードは、第
9図(イ)に示すような構造になっている。次のトーク
ンへのポインタと、ソースの通番と、拡張命令を示す拡
張命令識別子と、予約語&構文解析情報のエントリ番号
とからなる。
拡張命令識別子により拡張命令であることがわかると、
該当する予約語&構文解析情報により。
その解析・実行を行う。
コンパイラにおける拡張命令のPコードは、第9図(ロ
)に示すような構造になっている。拡張命令認識コード
は、拡張命令用と拡張関数用とがある。DLL番号は、
DLL名テーブルのエントリ番号である。ANK予約語
へのポインタは、命令または関数名へのポインタであり
1国語予約語が指定されても、ANK予約語に変換され
、それをポイントする。実行ルーチンへのポインタは。
実行時に解決される。
拡張命令のPコードの実行は、以下のように行う。
i)Pコードの実行ルーチンへのポインタを入手する。
j)Pコードの実行ルーチンへのポインタが設定されて
いなければ、以下の処理を行う。
(a)DLL番号からDLL名を手に入れる。
(b)DLL名で指定された拡張命令ライブラリをロー
ドする。もし、拡張命令ライブラリが見つからない場合
には、エラーとする。
(C)ANK予約語によって示された文字列より実行ル
ーチン名を作成する。すなわち、命令ならUbs、関数
ならUbfをANK予約語の頭に付加し、この名前によ
って実行ルーチンのアドレスを手に入れる。もし、実行
ルーチンのアドレスが手に入らない場合には、エラーと
する。
(d)  実行ルーチンのアドレスをPコードに設定す
る。
■)実行ルーチンを呼び出す。
第10図は、第1図に示す文法定義文コンバータ15の
処理フローを示している。以下、第10図に示す■〜[
相]に従って説明する。
■ 必要な初期化を行い、定義文ファイル名が格納され
ている定義文指定ファイル60をオープンする。
■ 定義文指定ファイル60から、定義文ファイル名を
1つ取り出す。
■ 定義文指定ファイル60のデータが終了したならば
、処理■へ移る。
■ 処理■で取り出した定義文ファイル名の定義文ファ
イル61をオーブンする。
■ オーブンした定義文ファイル61から1文法定義文
を1つ取り出す。
■ 文法定義文が終了したかどうかを判定し、終了した
ならば、処理■へ移る。
■ 文法定義文を第7図に示すような拡張命令解析情報
に変換する。その後、処理■に戻り、同様に次の文法定
義文を処理する。
■ 文法定義文が終了したならば、定義文ファイル61
をクローズし、処理■へ戻る。
■ すべての定義文ファイル61についての処理が終了
したならば、拡張命令解析情報を予約語の昇順にソート
する。
■ 拡張命令解析情報をダイナミック・リンク・ライブ
ラリ形式のファイル(拡張命令解析情報ファイル62)
として作成し2文法定義文コンバータの処理を終了する
本発明の実施例によるインタプリタは、第11図に示す
ように処理する。以下、第11図に示す■〜■に従って
説明する。
■ 初期化時に、拡張命令解析情報ファイル62が存在
するか否かを調べ、存在すれば、メモリ上に拡張命令解
析情報35として読み込む。
■ ロード・トークン変換処理を行う、この処理につい
ては、第12図に従って後述する。
■ 処理■によって作成したトークンコード34をバッ
ファに読み込む。
■ 終了トークンかどうかを判定し、終了トークンであ
れば実行を終了する。
■ 終了トークンでなければ、トークンコードに対応す
る構文解析テーブル33により構文チエツクおよびオペ
ランドのスタックを行う、なお、拡張命令の場合には、
拡張命令解析情報35を使用し、構文チエツクおよびオ
ペランドのスタックを行う。
■〜■ トークンコードに対応する実行ルーチンを呼び
出す0通常の命令の場合、■の基本命令実行ルーチンに
より実行し、拡張命令の場合、拡張命令ライブラリ21
からロードした■の拡張命令実行ルーチンによって実行
する。その後、処理■へ戻り9次のトークンを処理する
第12図は、第11図に示す処理■のロード・トークン
変換処理の処理フローを示している。以下、第12図に
示す処理■〜■に従って説明する。
■ 実行するソースプログラム10のファイルをオーブ
ンする。
■ ソースプログラム10からソースを1行読み込む。
■ ソースが終了したならば5処理■へ移る。
■ ソースについて、予約語テーブル32をサーチする
■ 見つかった場合、処理■を実行し、見つからなかっ
た場合、処理■へ移る。
■ 予約語テーブル32を参照し、予約語に対応するト
ークンコード34への変換を行う、その後。
処理■へ戻る。
■ 基本命令セットの予約語テーブル32に登録されて
いない場合、拡張命令解析情報35中の予約語テーブル
をサーチする。
■ 見つかった場合、処理■を実行し、見つからなかっ
た場合、処理[相]を実行する。
■ ソースを拡張命令トークンに変換して、トークンコ
ード34として設定する。その後、処理■へ戻る。
[相] 該当する予約語がなかった場合、変数トークン
に変換する。その後、処理■へ戻る。なお、変数トーク
ンの命令は、実行時にエラーとなる。
■ すべてのソースについての処理が終了したならば、
ソースプログラムファイルをクローズし。
呼び出し元へ戻る。
本発明の実施例によるコンパイラは、第13図に示すよ
うに処理する。以下、第13図に示す■〜■に従って説
明する。
■ 初期化時に、拡張命令解析情報ファイル62が存在
するか否かを調べ、存在すれば、メモリ上に拡張命令解
析情報35として読み込む。
■ ソースプログラム10からソースを1行読み込む。
■ ソースが終了したならば、処理■へ移る。
■ 予約語テーブル32によりコード化テキスト70に
変換する。見つからない場合、拡張命令解析情報35を
使用し、コード化テキスト70に変換する。
■ コード化テキスト70について、構文解析テーブル
33により構文チエツクを行う、拡張命令の場合には、
拡張命令解析情報35により構文チエツクを行う。
■ 構文チエツクを行ったならば、コード化テキスト7
0をもとに、対応するPコードを作成し。
中間オブジェクトファイル71に格納する。拡張命令の
場合には、拡張命令用のPコードを作成する。その後、
処理■へ戻る。
■ ソースプログラム10が終了したならば、中間オブ
ジェクトファイル71についてアドレス解決を行い、実
行形式プログラムファイル37を作成する。
■ ファイルのクローズなど必要な後処理を行い。
処理を終了する。
コンパイル結果の実行は、第14図に示すように行われ
る。以下、第14図に示す処理■〜■に従って説明する
■ ローダが、実行形式プログラムファイル37のPコ
ード80をメモリ上に展開する。
■ Pコード80を取り出す。
■ Pコードが終了するかまたはend命令になったな
らば実行を終了する。
■〜■ 取り出したPコードに対応する実行ルーチンを
呼び出す0通常の命令の場合、■の基本命令実行ルーチ
ンにより実行し、拡張命令の場合。
■の拡張命令実行ルーチンによって実行する。拡張命令
の場合、初めて呼び出す場合には、拡張命令ライブラリ
21からローディングする。実行後。
処理■へ戻り1次のPコードについての処理を行う。
〔発明の効果〕
以上説明したように1本発明によれば、以下の効果があ
る。
)機能アップにより命令がどんどん増えたときに、すべ
て基本命令としてサポートすると、新規命令を必要とし
ないユーザには負荷がかがるが。
本発明によれば、既存の基本命令だけでよいユーザには
まったく負荷がかからない。
11)拡張命令を使用するユーザは、拡張命令解析情報
記憶部と拡張命令ライブラリを外付けすることにより、
最適な環境、すなわちユーザカスタマイズされた環境で
、高級言語を使用することができる。拡張命令解析情報
が2文法定義文によって。
拡張命令ライブラリとは別に用意されるため、構文チエ
ツクなどによってエラーの事前検出が可能になる。した
がって、プログラムの暴走などを防止でき、実行ルーチ
ンの作成が容品になる。
1ii)計算機言語の専門知識がなくても、ある程度の
プログラム作成経験があれば、ユーザ自身で拡張命令を
作成することが可能になる。
【図面の簡単な説明】
第1図は本発明の原理構成図。 第2図は本発明の適用システムの例。 第3図はインタプリタによる解析説明図。 第4図はコンパイラによる翻訳説明図。 第5図はコンパイル後の実行説明図。 第6図は本発明の実施例に係る文法定義文の例。 第7図は本発明の実施例に係る拡張命令解析情報の例。 第8図は本発明の実施例に係る構文解析テーブルの例。 第9図は本発明の実施例に係る拡張命令のトークンコー
ドとPコードの例。 第10図は本発明の実施例による文法定義文コンバータ
の処理フロー 第11図は本発明の実施例によるインタプリタの処理フ
ロー 第12図はロード・トークン変換処理の処理フロー 第13図は本発明の実施例によるコンパイー7(7)処
理フロー 第14図は本発明の実施例によるコンパイル結果実行時
の処理フローを示す。 図中、10はソースプログラム、11は高級言語処理本
体部、12は拡張命令解析処理部、13は中間コード、
14は文法定義文、15は文法定義文コンバータ、16
は拡張命令解析情報記憶部。 17は初期化ルーチン、18は解析テーブル、19は基
本命令ライブラリ、20は基本命令実行ルーチン、21
は拡張命令ライブラリ、22は拡張命令実行ルーチンを
表す。

Claims (1)

  1. 【特許請求の範囲】 1)高級言語で記述されたソースプログラム(10)を
    、解釈実行するインタプリタまたは低レベルの言語に翻
    訳するコンパイラを備えた高級言語処理装置において、 あらかじめ定められた基本命令セット以外の交換可能な
    拡張命令に関する実行ルーチンを格納する拡張命令ライ
    ブラリ(21)と、 インタプリタ本体またはコンパイラ本体の外部に用意さ
    れる拡張命令解析情報を記憶する拡張命令解析情報記憶
    部(16)と、 ソースプログラム中に基本命令セットの予約語以外の文
    が現れた場合に、その文について前記拡張命令解析情報
    記憶部を参照して解析し、拡張命令に応じた中間コード
    または機械語コードを出力する拡張命令解析処理部(1
    2)とを備え、インタプリタにおける実行時またはコン
    パイル後の実行時に、拡張命令を示す中間コードまたは
    機械語コードに対応して、前記拡張命令ライブラリ中の
    該当する実行ルーチンを動的に呼び出すようにしたこと
    を特徴とする高級言語処理装置。 2)請求項1記載の高級言語処理装置において、拡張命
    令に関する文法定義文(14)を入力し、その文法定義
    文に基づいて前記拡張命令解析情報を自動生成する文法
    定義文コンバータ(15)を備えたことを特徴とする高
    級言語処理装置。 3)請求項1または請求項2記載の高級言語処理装置に
    おいて、 前記拡張命令解析情報記憶部(16)は、解析に必要な
    テーブルの初期化ルーチン(17)を含み、実行時にイ
    ンタプリタ本体またはコンパイラ本体に動的に結合され
    るダイナミック・リンク・ライブラリ形式で作成される
    ことを特徴とする高級言語処理装置。
JP26588290A 1990-10-03 1990-10-03 高級言語処理装置 Pending JPH04142629A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP26588290A JPH04142629A (ja) 1990-10-03 1990-10-03 高級言語処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP26588290A JPH04142629A (ja) 1990-10-03 1990-10-03 高級言語処理装置

Publications (1)

Publication Number Publication Date
JPH04142629A true JPH04142629A (ja) 1992-05-15

Family

ID=17423412

Family Applications (1)

Application Number Title Priority Date Filing Date
JP26588290A Pending JPH04142629A (ja) 1990-10-03 1990-10-03 高級言語処理装置

Country Status (1)

Country Link
JP (1) JPH04142629A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002529849A (ja) * 1998-11-06 2002-09-10 ブル・セー・ペー・8 データ処理リソースを供給された内蔵システムにおいて実行可能な中間オブジェクトコードプログラムのためのデータ圧縮方法、および、この方法に対応しかつマルチアプリケーションを備えた内蔵システム
JP2014507023A (ja) * 2010-12-14 2014-03-20 エヌジーモコ リミテッド ライアビリティ カンパニー 高水準言語とネイティブ言語との間の通信プロトコル

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002529849A (ja) * 1998-11-06 2002-09-10 ブル・セー・ペー・8 データ処理リソースを供給された内蔵システムにおいて実行可能な中間オブジェクトコードプログラムのためのデータ圧縮方法、および、この方法に対応しかつマルチアプリケーションを備えた内蔵システム
JP2014507023A (ja) * 2010-12-14 2014-03-20 エヌジーモコ リミテッド ライアビリティ カンパニー 高水準言語とネイティブ言語との間の通信プロトコル

Similar Documents

Publication Publication Date Title
EP2463771B1 (en) Method for translating a cobol source program into readable and maintainable program code in an object oriented second programming language
US8464232B2 (en) Compiler compiler system with syntax-controlled runtime and binary application programming interfaces
Sestoft Programming language concepts
JP2004295398A (ja) コンパイラ、コンパイル方法、及びプログラム開発ツール
JPH06501583A (ja) 多言語最適化コンパイラ内のフォールディングメカニズムを構成する方法
US7460996B2 (en) Using strong data types to express speech recognition grammars in software programs
KR20230040516A (ko) 자바스크립트의 중간 언어 기반 의미론 추출 자동화 시스템 및 방법
JP2022522880A (ja) プログラム論理の表現を生成する方法、逆コンパイル装置、再コンパイルシステムおよびコンピュータプログラム製品
US20030154467A1 (en) Preprocessing of interfaces to allow fast call through
Schildt The art of java
Blagodarov et al. Tool demo: Raincode assembler compiler
Jana Java and object-oriented programming paradigm
Fritzson et al. Meta-programming and language modeling with MetaModelica 1.0
US20080141230A1 (en) Scope-Constrained Specification Of Features In A Programming Language
Nakamaru et al. Generating fluent embedded domain-specific languages with subchaining
Rao Sams teach yourself C++ in one hour a day
Chan Learn Java in one day and learn it well: Java for beginners with hands-on project: the only book you need to start coding in Java immediately
Roubinchtein IR-MetaOCaml:(re) implementing MetaOCaml
Cutler et al. Getting Started with Python
Gorman et al. The Pynini Library
Hunt A First Kotlin Program
White et al. The NewYacc User's Manual
Lazzarini Introduction to the Programming Environment
SU1062721A1 (ru) Устройство дл синтаксически-управл емого перевода
Lee Object-Oriented Programming