JPH0635713A - 論理型言語と他言語の相互呼び出し方式 - Google Patents

論理型言語と他言語の相互呼び出し方式

Info

Publication number
JPH0635713A
JPH0635713A JP19351692A JP19351692A JPH0635713A JP H0635713 A JPH0635713 A JP H0635713A JP 19351692 A JP19351692 A JP 19351692A JP 19351692 A JP19351692 A JP 19351692A JP H0635713 A JPH0635713 A JP H0635713A
Authority
JP
Japan
Prior art keywords
language
logical
calling
another
instruction
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
JP19351692A
Other languages
English (en)
Inventor
Noriyuki Hirono
規之 廣野
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.)
KOBE NIPPON DENKI SOFTWARE KK
NEC Software Kobe Ltd
Original Assignee
KOBE NIPPON DENKI SOFTWARE KK
NEC Software Kobe 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 KOBE NIPPON DENKI SOFTWARE KK, NEC Software Kobe Ltd filed Critical KOBE NIPPON DENKI SOFTWARE KK
Priority to JP19351692A priority Critical patent/JPH0635713A/ja
Publication of JPH0635713A publication Critical patent/JPH0635713A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 論理型言語から他言語へ戻るための処理を呼
び出す命令を用いることで、論理型言語の実行制御情報
を格納する領域を区分する必要をなくし、領域を管理す
る処理のオーバヘッドをなくす。 【構成】 論理型言語プログラムを命令列に変換すると
きに、最後に実行される命令として他言語への戻り手段
114を呼び出す命令を置くことで、参照すべき実行制
御情報を有無によって論理型言語の実行終了を判断する
必要をなくす。これにより実行制御情報を格納する領域
を区分する必要がなくなり、そのための処理が不要とな
る。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、論理型言語と他言語の
相互呼び出し方式に関し、特に、論理型言語から他言語
を呼び出し、呼び出された他言語から論理型言語を呼び
出す、論理型言語と他言語の相互呼び出し方式に関す
る。
【0002】
【従来の技術】以下説明のために論理型言語としてPR
OLOGを用いる。
【0003】PROLOGでは、プログラムを実行する
ときに、現在実行中の述語が成功したときに参照する実
行環境と、述語の実行に失敗したときにバックトラック
と呼ばれる別解探索を行なうためのバックトラック情報
からなる実行制御情報をスタック中に格納する必要があ
る。
【0004】従来、PROLOGから他言語を呼び出し
呼び出された他言語から再度PROLOGを呼び出した
ときに、実行制御情報を格納するためのスタックを現在
使用しているスタックとは別に新しく作成したり、ある
いはスタック中の領域を他言語を呼び出す前に実行制御
情報を格納するために使用していた領域と区分するため
の境界を示す情報を設けたりして、呼び出されたPRO
LOGの実行制御情報を格納する領域を他言語を呼び出
す前に使用していた領域と明確に区分し、その領域内に
参照すべき実行制御情報が存在しなければ他言語から呼
び出されたPROLOGの実行が終了したと判断してい
る。
【0005】
【発明が解決しようとする課題】上述した従来の技術で
は、他言語から呼び出されたPROLOGの実行終了を
判断するために他言語を呼び出す前と後で実行制御情報
を格納する領域を区分する必要があるため、新しい領域
を確保したり、使用する領域を切り替えたり、不要とな
った領域を解放する処理が必要となりオーバヘッドが大
きいという問題がある。
【0006】
【課題を解決するための手段】本発明は、論理型言語を
命令列に変換するコンパイラと、前記コンパイラによっ
て変換された命令列を格納するプログラム格納領域と、
前記プログラム格納領域に格納された命令列を解釈実行
するインタプリタと、前記インタプリタが次に実行する
命令を示すプログラムカウンタと、実行制御情報を格納
するスタックと、他言語の機械命令を格納する他言語プ
ログラム格納領域と、論理型言語から他言語を呼び出す
ための他言語呼び出し手段と、前記他言語呼び出し手段
によって呼び出された他言語の実行が終了したときに論
理型言語に制御を戻すための論理型言語への戻り手段
と、前記他言語呼び出し手段により呼び出された他言語
から論理型言語を呼び出すための論理型言語呼び出し手
段と、前記論理型言語呼び出し手段により呼び出された
論理型言語の実行が終了したときに他言語に制御を戻す
ための他言語への戻り手段とを有する論理型言語処理系
における論理型言語と他言語の相互呼び出し方式におい
て、前記他言語への戻り手段を呼び出す命令を有するこ
とを特徴とするものである。
【0007】
【実施例】次に、本発明について図面を参照して説明す
る。
【0008】図1は本発明の一実施例を示す構成図であ
る。
【0009】この実施例は、論理型言語を命令列に変換
するコンパイラ101と、コンパイラ101によって変
換された命令列を格納するプログラム格納領域102
と、プログラム格納領域102に格納された命令列を解
釈実行するインタプリタ103と、インタプリタ103
が次に実行する命令を示すプログラムカウンタ104
と、実行制御情報を格納するスタック105と、他言語
の機械命令を格納する他言語プログラム格納領域106
と、論理型言語から他言語を呼び出すための他言語呼び
出し手段111と、他言語呼び出し手段111によって
呼び出された他言語の実行が終了したときに論理型言語
に制御を戻すための論理型言語への戻り手段112と、
他言語呼び出し手段111により呼び出された他言語か
ら論理型言語を呼び出すための論理型言語呼び出し手段
113と、論理型言語呼び出し手段111により呼び出
された論理型言語の実行が終了したときに他言語に制御
を戻すための他言語への戻り手段114とを有する論理
型言語処理系における論理型言語と他言語の相互呼び出
し方式において、他言語への戻り手段114を呼び出す
命令を有することを特徴とするものである。
【0010】図2は本発明の一実施例の説明のためのプ
ログラムを示す。ここでは他言語プログラムを記述する
言語としてC言語を用いる。
【0011】図2(a) はC言語を呼び出すPROLOG
プログラムを示し、本体部ゴール201で図2(c) のC
言語プログラムを呼び出す。
【0012】図2(b) は図2(a) のPROLOGプログ
ラムをコンパイラ101によって変換し、PROLOG
プログラム領域102に格納されている命令列を示し、
命令202は他言語を呼び出すための他言語呼び出し手
段111を呼び出す命令である。
【0013】インタプリタ103が図2(b) の命令列を
実行し、命令202を実行する直前のスタック105の
内容は、図3(a) に示すものとなる。
【0014】命令202を実行するとインタプリタ10
3は、他言語呼び出し手段111を呼び出す。
【0015】他言語呼び出し手段111は、他言語プロ
グラムからPROLOGに戻ったときに命令202の次
の命令からPROLOGプログラムの実行を継続するた
めの情報を持つ実行環境301をスタック105上に作
成し、図2(c) のC言語プログラムに制御を移す。スタ
ック105の内容は図3(b) に示すものとなる。
【0016】図2(c) は図2(a) のPROLOGプログ
ラムから呼び出されるC言語のソースプログラムを示
し、命令203で図2(d) のPROLOGプログラムを
実行するために論理型言語呼び出し手段113を呼び出
す。このC言語プログラムは、C言語のコンパイラによ
って機械命令に翻訳され、他言語プログラム格納領域1
06に格納されている。
【0017】図2(d) はC言語から呼び出されるPRO
LOGプログラムを示す。
【0018】図2(e) は図2(d) のPROLOGプログ
ラムをコンパイラ101によって変換し、プログラム格
納領域102に格納されている命令列を示し、命令20
5は述語が成功したときにC言語に戻るために他言語へ
の戻り手段114を呼び出すための命令、命令206は
述語が失敗したときにC言語に戻るために他言語への戻
り手段114を呼び出すための命令である。
【0019】図2(c) の命令203から呼び出された論
理型言語呼び出し手段113は、図2(d) のPROLO
Gプログラムを実行するためにプログラムカウンタ10
4を図2(e) の命令204から実行するように設定し、
インタプリタ103に制御を移す。このとき、以後のP
ROLOGの実装制御情報を格納するために特別な領域
を確保したり、スタック中の領域を区分する境界を示す
情報を設ける必要はない。
【0020】インタプリタ103は命令204を実行
し、述語pprocが失敗したときに命令206を実行
するためのバックトラック情報302をスタック105
上に作成する。このときのプログラムカウンタ104の
内容は図3(c) に示すものとなる。
【0021】図2(d) のプログラムの実行が進み命令2
05を実行するとインタプリタ103は他言語から呼び
出されたPROLOGの実行を終了し他言語に戻るため
に他言語への戻り手段114を呼び出す。
【0022】また、図2(d) のプログラムの実行中に述
語pprocが失敗した場合インタプリタ103は、バ
ックトラック情報302の内容に従って命令206を実
行し、他言語から呼び出されたPROLOGの実行を終
了し他言語に戻るために他言語への戻り手段114を呼
び出す。
【0023】他言語への戻り手段114の呼び出しは、
他言語から呼び出されるPROLOGプログラムをコン
パイラ101によって変換したときに生成される命令2
05または命令206をインタプリタ103が実行する
ことで行なわれるため、スタック中の実行制御情報を検
索して他言語への戻り手段114を呼び出す必要がある
かどうかを判断する必要はない。
【0024】他言語への戻り手段114は、不要となる
バックトラック情報302をスタック105上から削除
し呼び出したC言語に制御を戻す。このときのスタック
105の内容は、図3(b) に示すものと同じである。
【0025】図2(c) のC言語プログラムの実行が終了
すると論理型言語への戻り手段112に制御が移る。
【0026】論理型言語への戻り手段112は、実行環
境301の内容に従って命令202の次の命令を実行す
るようにプログラムカウンタ104を設定し、インタプ
リタ103に制御を移す。実行環境301は不要となる
ため、スタック105上から削除し、スタック105の
内容は、図3(a) に示すものと同じになる。
【0027】以上のように、他言語から呼び出されたP
ROLOGの実行が終了したときに他言語への戻り手段
114を呼び出す命令を用いることで、実行制御情報を
格納する領域を区分することなくPROLOGの他言語
の相互呼び出しが可能になり、実行制御情報を格納する
領域を区分した場合に必要な処理のオーバヘッドをなく
すことが可能となる。
【0028】
【発明の効果】以上説明したように、本発明によれば、
他言語から呼び出された論理型言語の終了を実行制御情
報を格納する領域に参照する実行制御情報が存在するか
どうかで判断する必要がないため、他言語から呼び出さ
れた論理型言語のための実行制御情報を格納する領域を
他言語を呼び出す前に使用していた領域と区分する必要
かなくなり、実行制御情報を格納する領域を新しく確保
したり、使用する領域を切り替えたり、不要となった領
域を解放する処理が不要となり、論理型言語と他言語の
相互呼び出しにおけるオーバヘッドを削減することがで
きる。
【図面の簡単な説明】
【図1】本発明の一実施例の構成図である。
【図2】図1の実施例の説明に用いるプログラムのリス
トを示す図である。
【図3】図1の実施例の説明に用いるスタックを例示す
る図である。
【符号の説明】
101 コンパイラ 102 プログラム格納領域 103 インタプリタ 104 プログラムカウンタ 105 スタック 106 他言語プログラム格納領域 111 他言語呼び出し手段 112 論理型言語への戻り手段 113 論理型言語呼び出し手段 114 他言語への戻り手段

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 論理型言語を命令列に変換するコンパイ
    ラと、前記コンパイラによって変換された命令列を格納
    するプログラム格納領域と、前記プログラム格納領域に
    格納された命令列を解釈実行するインタプリタと、前記
    インタプリタが次に実行する命令を示すプログラムカウ
    ンタと、実行制御情報を格納するスタックと、他言語の
    機械命令を格納する他言語プログラム格納領域と、論理
    型言語から他言語を呼び出すための他言語呼び出し手段
    と、前記他言語呼び出し手段によって呼び出された他言
    語の実行が終了したときに論理型言語に制御を戻すため
    の論理型言語への戻り手段と、前記他言語呼び出し手段
    により呼び出された他言語から論理型言語を呼び出すた
    めの論理型言語呼び出し手段と、前記論理型言語呼び出
    し手段により呼び出された論理型言語の実行が終了した
    ときに他言語に制御を戻すための他言語への戻り手段と
    を有する論理型言語処理系における論理型言語と他言語
    の相互呼び出し方式において、前記他言語への戻り手段
    を呼び出す命令を有することを特徴とする、論理型言語
    と他言語の相互呼び出し方式。
JP19351692A 1992-07-21 1992-07-21 論理型言語と他言語の相互呼び出し方式 Pending JPH0635713A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP19351692A JPH0635713A (ja) 1992-07-21 1992-07-21 論理型言語と他言語の相互呼び出し方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP19351692A JPH0635713A (ja) 1992-07-21 1992-07-21 論理型言語と他言語の相互呼び出し方式

Publications (1)

Publication Number Publication Date
JPH0635713A true JPH0635713A (ja) 1994-02-10

Family

ID=16309371

Family Applications (1)

Application Number Title Priority Date Filing Date
JP19351692A Pending JPH0635713A (ja) 1992-07-21 1992-07-21 論理型言語と他言語の相互呼び出し方式

Country Status (1)

Country Link
JP (1) JPH0635713A (ja)

Similar Documents

Publication Publication Date Title
JP2692609B2 (ja) マルチタスクのプログラムデバッグ方法とその装置
KR950027565A (ko) 처리 시스템 및 그의 동작 방법
JP2752094B2 (ja) 論理型言語におけるバックトラック処理方式
JPH0635713A (ja) 論理型言語と他言語の相互呼び出し方式
JPS6378231A (ja) 部分的プログラム結合方式
JPH0581069A (ja) プログラムのデバツグ方法
KR900008402A (ko) 저장 및 복귀방법과 이방법의 실행에 가장 적절한 프로세서 시스템
JP2642788B2 (ja) 実行監視点削減方式
JP2591818B2 (ja) 補助機能の選択制御方法
JPH05216649A (ja) システムプログラム動的変更方式
JP2000242319A (ja) 数値制御装置
JPH0619721A (ja) 機械語翻訳最適化方式
JPS60142744A (ja) 多重言語処理システム
JPH0667942A (ja) ログ採取方式
JPS6172339A (ja) プログラム実行表示制御方式
JPH0588878A (ja) Lisp命令実行方式
JPH02211589A (ja) データ駆動型制御方法およびコンパイル装置
JPH07134656A (ja) 割り込み制御方法及びそれを実現するマルチタスクシステム
JPH0447854B2 (ja)
JPH06301549A (ja) プログラム翻訳装置
JPH10293691A (ja) レジスタ割り付け方法
JPH083792B2 (ja) 関数呼び出し処理方法
JPH01258029A (ja) データ処理装置
JPH04101226A (ja) インタープリタ型言語処理方式
JPH0477840A (ja) 障害解析情報収集方式

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20000328