JPH07141178A - オブジェクトアクセス装置 - Google Patents

オブジェクトアクセス装置

Info

Publication number
JPH07141178A
JPH07141178A JP15981093A JP15981093A JPH07141178A JP H07141178 A JPH07141178 A JP H07141178A JP 15981093 A JP15981093 A JP 15981093A JP 15981093 A JP15981093 A JP 15981093A JP H07141178 A JPH07141178 A JP H07141178A
Authority
JP
Japan
Prior art keywords
class
information
pointer
route information
virtual base
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
JP15981093A
Other languages
English (en)
Inventor
Takahiro Ishikawa
貴洋 石川
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 JP15981093A priority Critical patent/JPH07141178A/ja
Publication of JPH07141178A publication Critical patent/JPH07141178A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 本発明は、クラス内のオブジェクトをアクセ
スするアドレスを生成するオブジェクトアクセス装置に
関し、クラスの継承機能を持つ高級言語において、仮想
基底クラスのメンバオブジェクトをメンバポインタによ
りアクセス可能にすることを目的とする。 【構成】 ルート情報3およびシンボル情報4からなる
メンバアクセスルート情報5を出力するメンバアクセス
ルート情報生成部1と、クラスのメンバオブジェクトへ
のアクセス時に、メンバアクセスルート情報5中のルー
ト情報3のポインタでリンクされたシンボル情報4がク
ラス名であって仮想基底クラスの有および仮想基底クラ
スへのポインタが設定されていたときに当該仮想基底ク
ラスへのポインタで指される他のシンボル情報4のクラ
スのメンバオブジェクトをアクセスするためのメンバ参
照式を生成するメンバアクセスルート情報解析部2とか
ら構成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、クラス内のオブジェク
トをアクセスするアドレスを生成するオブジェクトアク
セス装置であって、仮想基底クラスのメンバへのメンバ
ポインタを使用した仮想基底クラスのメンバオブジェク
トヘのアクセスを行なうアドレスを生成するオブジェク
トアクセス装置に関するものである。
【0002】クラス継承機能を持つ高級言語は、基底ク
ラスのメンバに対し、メンバの型ごとのアクセスを行な
う機能が要求されている。このため、メンバポインタを
使用し、基底クラスのメンバオブジェクトをアクセスす
る機能が提供されているが、仮想基底クラスのメンバオ
ブジェクトに対しても、メンバポインタを使用してアク
セスする機能が要求されている。
【0003】
【従来の技術】従来のメンバポインタの使用によるメン
バオブジェクトのアクセスは、アクセスするメンバのオ
フセット値をメンバポインタの値とし、メンバポインタ
を使用してオブジェクトをアクセスする際に、メンバポ
インタの保持しているオフセット値をオブジェクトの先
頭から加算し、メンバオブジェクトのアクセスを行って
いた。
【0004】
【発明が解決しようとする課題】ここで、図4に示すよ
うに、仮想基底クラスのオブジェクトは、仮想基底クラ
スを基底としているクラスからポインタにより指されて
いるため、通常の基底クラスのメンバオブジェクトへの
アクセス方法では、メンバ参照式を展開することができ
ないという問題があった。以下図4の構成および動作を
簡単に説明する。
【0005】図4は、従来技術の説明図を示す。図4に
おいて、シンボル情報21、22は、各種シンボルの情
報を設定したものであって、コンパイラの中間言であ
る。ここでは、クラス名“A”、“V”についてのシン
ボル情報を図示のように設定したものである。
【0006】ここで、仮想基底クラスVのオブジェクト
は、仮想基底クラスVを基底としているクラスAからポ
インタ(Vへのポインタ)により指されているため、通
常の上述したメンバポインタMPの保持しているオフセ
ット値をオブジェクトの先頭から加算して算出するとい
う方法では、メンバ参照式を展開できない。従って、仮
想基底クラスのメンバを通常の基底クラスと同様に、メ
ンバポインタを使用し、メンバオブジェクトのアクセス
を行なうことができないという問題を生じていた。
【0007】本発明は、クラスの継承機能を持つ高級言
語において、仮想基底クラスのメンバオブジェクトをメ
ンバポインタによりアクセス可能にすることを目的とし
ている。
【0008】
【課題を解決するための手段】図1は、本発明の原理構
成図を示す。図1において、メンバアクセスルート情報
生成部1は、ルート情報3からポインタによってリンク
したシンボル情報4中にクラス名、当該クラスのメンバ
名、仮想基底クラスの有無、当該仮想基底クラスヘのポ
インタを設定、ルート情報3からリンクされた他のルー
ト情報3からポインタによってリンクしたシンボル情報
4中にクラス名、当該クラスのメンバ名を設定、および
ルート情報3からリンクされた他のルート情報3からポ
インタによってリンクしたシンボル情報4中にメンバ名
を設定するものである。
【0009】メンバアクセスルート情報解析部2は、メ
ンバアクセスルート情報5中のルート情報3のポインタ
でリンクされたシンボル情報4がクラス名であって仮想
基底クラスの有および仮想基底クラスへのポインタが設
定されていたときに当該仮想基底クラスへのポインタで
指される他のシンボル情報4のクラスのメンバオブジェ
クトをアクセスするためのメンバ参照式を生成するもの
である。
【0010】
【作用】本発明は、図1に示すように、メンバアクセス
ルート情報生成部1がルート情報3からポインタによっ
てリンクしたシンボル情報4中にクラス名、当該クラス
のメンバ名、仮想基底クラスの有無、当該仮想基底クラ
スヘのポインタを設定、ルート情報3からリンクされた
他のルート情報3からポインタによってリンクしたシン
ボル情報4中にクラス名、当該クラスのメンバ名を設
定、およびルート情報3からリンクされた他のルート情
報3からポインタによってリンクしたシンボル情報4中
にメンバ名を設定したメンバアクセスルート情報5を出
力し、クラスのメンバオブジェクトへのアクセス時に、
メンバアクセスルート情報解析部2がメンバアクセスル
ート情報5中のルート情報3のポインタでリンクされた
シンボル情報4がクラス名であって仮想基底クラスの有
および仮想基底クラスへのポインタが設定されていたと
きに当該仮想基底クラスへのポインタで指される他のシ
ンボル情報4のクラスのメンバオブジェクトをアクセス
するためのメンバ参照式を生成するようにしている。
【0011】従って、クラスの継承機能を持つ高級言語
において、ルート情報3からポインタによって仮想基底
クラスのメンバオブジェクトをアクセスすることが可能
となると共に、アクセスするメンバが変更されても再度
メンバアクセスルート情報5を生成して容易にメンバオ
ブジェクトをアクセスすることが可能となる。
【0012】
【実施例】次に、図1から図3を用いて本発明の実施例
の構成および動作を順次詳細に説明する。
【0013】図1は、本発明の原理構成図を示す。図1
において、メンバアクセスルート情報生成部1は、メン
バ単位にメンバへのメンバアクセスルート情報5を出力
するものであって、図示のように、ルート情報3からポ
インタによってリンクしたシンボル情報4中にクラス
名、当該クラスのメンバ名、仮想基底クラスの有無、当
該仮想基底クラスヘのポインタを設定したり、ルート情
報3からリンクされた他のルート情報3からポインタに
よってリンクしたシンボル情報4中にクラス名、当該ク
ラスのメンバ名を設定したり、ルート情報3からリンク
された他のルート情報3からポインタによってリンクし
たシンボル情報4中にメンバ名を設定したりして出力す
るものである。
【0014】ルート情報3は、図示のようにポインタに
よってリンクしたものであって、クラスやメンバ毎にリ
ンクしたものである。シンボル情報4は、ルート情報3
からポインタによってリンクされ、図示のように、 ・仮想基底クラスへのポインタ ・クラスのメンバ名 ・仮想基底クラスのクラス名 ・クラス名 などを設定するものである。
【0015】メンバアクセスルート情報解析部2は、メ
ンバアクセスルート情報5をもとに、先頭オブジェクト
のアドレス展開、仮想オブジェクトのアドレス展開、メ
ンバのオフセット展開などのアクセス式展開(アクセス
する式(メンバ参照式)の展開)を行なうものである
(図3参照)。
【0016】ここで、図1中の記号は、図示の下記を表
す。 ・Rlist、ルート情報3、シンボル情報4:コンパ
イラの中間言である。
【0017】・MP:メンバポインタである ・A:クラス名である。 ・Amem:メンバ名である。
【0018】・V:クラス名である。 ・Vmem:メンバ名である。 ・クラスA:クラスVを仮想基底クラスとして持つ。
【0019】・メンバAmem:クラスAのメンバであ
る。 ・メンバVmem:クラスVのメンバである。 ・メンバポインタMP:メンバVmemへのメンバポイ
ンタである。
【0020】次に、図2のフローチャートに示す順序に
従い、ソースプログラムからメンバアクセスルート情報
5を生成する手順を詳細に説明する。図2において、S
1は、ソースプログラムを入力する。ここでは、 A::V::Vmem を入力する。この入力されたソースプログラムの先頭か
ら入力字句毎に順次S2以降の処理を繰り返す。この入
力されたソースプログラムは、形態素解析、構文解析な
どされ、右上に示す中間言となる。
【0021】S2は、クラス名か判別する。これは、S
1で入力されたソースプログラムの先頭の字句から順次
取り出し、クラス名か判別する。YESの場合には、S
3でメンバアクセスルート情報5(ルート情報3および
シンボル情報4)を生成し、S4で次の字句の解析を行
い、S2に戻る。一方、NOの場合には、S5に進む。
【0022】S5は、メンバ名か判別する。これは、S
1で入力されたソースプログラムの先頭の字句から順次
取り出し、メンバ名か判別する。YESの場合には、S
6でメンバアクセスルート情報5(ルート情報3および
シンボル情報4)を生成し、終了する。一方、NOの場
合には、別処理を行い、次の字句解析を行い、S2に戻
る。
【0023】以上によって、S1のソースプログラムを
入力として、形態素解析、構文解析などした右上の中間
言をもとに、下に示す、メンバアクセスルート情報5を
生成する。以下具体的に説明する。
【0024】(1) “A”の入力字句の処理:S2の
YES、S3によって、のルート情報3およびのシ
ンボル情報4を生成する。ここで、のシンボル情報4
は、上段の中間言のと同じである。
【0025】(2) “::”の入力字句の処理:S
4、S2のNO、S5のNOによって、別処理を行な
う。 (3) “V”の入力字句の処理:S2のYES、S3
によって、のルート情報3およびのシンボル情報4
を生成する。ここで、のシンボル情報4は、上段の中
間言のと同じである。
【0026】(4) “::”の入力字句の処理:S
4、S2のNO、S5のNOによって、別処理を行な
う。 (5) “Vmem”の入力字句の処理:S2のNO、
S5のYES、S6によって、のルート情報3および
のシンボル情報4を生成する。ここで、のシンボル
情報4は、上段の中間言のと同じである。
【0027】以上の入力字句の処理によって、S1のソ
ースプログラムから下段のメンバアクセスルート情報5
が生成されることとなる。次に、図3のフローチャート
に示す順序に従い、仮想基底クラス有の場合および仮想
基底クラス無の場合について、メンバアクセスルート情
報解析およびそのときの参照式の展開について詳細に説
明する。
【0028】図3の(a)において、S11は、ソース
プログラム“Aobj.*MP”を入力する。ここで、
Aobjは、右側に記載したように、Aのクラス情報か
ら作られたオブジェクトである。
【0029】S12は、MP(メンバポインタ)からメ
ンバアクセスルート情報の取り出しを行なう。これは、
図2のフローチャートに従い、メンバポインタMP単位
にメンバへのメンバアクセスルート情報5を生成して保
持しているので、例えば図1のメンバアクセスルート情
報5を取り出す。
【0030】S13は、オブジェクトAobjの先頭ア
ドレスを展開[a]する。この先頭アドレス展開[a]
は、S12で取り出したメンバアクセスルート情報5の
N1の先頭のルート情報、シンボル情報をもとに、
図3の(b)の[a]に示すように、実行時に領域獲得
するAobjの先頭アドレスの展開を行なう。
【0031】S14は、次のルート情報を取り出す。こ
こでは、N2のルート情報およびシンボル情報の取
り出しを行なう。S15は、クラス名か判別する。ここ
では、シンボル情報からクラス名と判明したので、S
16に進む。一方、クラス名でないと判明した場合に
は、S19に進む。
【0032】S16は、仮想クラスか判別する。ここで
は、のシンボル情報4中にのシンボル情報4のクラ
スVが仮想基底クラスと設定されていたので、YESと
なり、S17に進む。一方、NOの場合には、S20に
進む。
【0033】S17は、Vのオブジェクトへのポインタ
の取り出しを行なう[b]。この[b]は、図3の
(b)の[b]に示すように、のシンボル情報4から
“Vへのポインタ”を取り出す。
【0034】S18は、次のルート情報取り出す。ここ
では、N3のルート情報およびシンボル情報の取り
出しを行なう。S15は、クラス名か判別する。ここで
は、シンボル情報からメンバ名でNOと判明したの
で、S19に進む。
【0035】S19は、Vmemのオフセット展開
[c]を行なう。この[c]は、図3の(b)の[c]
に示すように、のシンボル情報4からオフセット値
“0”であるので、メンバVmemのオフセット展開、
ここでは“0”を行う。
【0036】以上の手順によって、図1のメンバアクセ
ス情報5を参照して、図3の(b)に示すように、 ・S13で[a]の先頭オブジェクトアドレス展開し、 ・S17で[b]の仮想オブジェクトアドレス展開し、 ・S19で[c]のメンバのオフセット展開し、 結果として、図示の斜線のメンバ(Amem、Vme
m)をアクセスするメンバ参照式を展開できたこととな
る。そして、実行時にこのメンバ参照式によってメンバ
(Amem、Vmem)をアクセスするアドレスを算出
し、アクセスすることとなる。
【0037】図3の(c)は、仮想基底クラス無の場合
を示す。これは、図1のメンバアクセスルート情報5の
シンボル情報4のの仮想基底クラスが無と設定されて
いた場合のものである。この場合は、図3の(a)のS
16でNOとなり、S20でオブジェクトAobjから
のオフセット展開[d]し、図3の(c)の[c]に示
すように、Vのオブジェクトが、オブジェクトAobj
に含まれる場合に該当する。
【0038】
【発明の効果】以上説明したように、本発明によれば、
メンバポインタMP単位にルート情報3およびシンボル
情報4からなるメンバアクセスルート情報5を保持し、
メンバオブジェクトへのアクセスを行なう時点で当該メ
ンバアクセスルート情報5を辿って先頭オブジェクトア
ドレス展開、仮想オブジェクトアドレス展開、およびメ
ンバのオフセット展開を行ってメンバ参照式を展開(作
成)する構成を採用しているため、仮想基底クラスのメ
ンバオブジェクトを、メンバポインタMPを使用してア
クセスすることができる。
【0039】また、メンバポインタMP毎にメンバアク
セスルート情報5を保持しているため、メンバポインタ
MPでアクセスするメンバが変更された場合でも、メン
バアクセスルート情報5を再生成することにより、正し
くかつ容易にメンバオブジェクトをアクセスすることが
できる。
【0040】更に、メンバオブジェクトのアクセスを行
なう時点で、メンバアクセスルート情報5を出力するこ
とができ、この情報により、デバッグ機能の充実を図る
こともできる。
【図面の簡単な説明】
【図1】本発明の原理構成図である。
【図2】本発明のメンバアクセスルート情報生成フロー
チャートである。
【図3】本発明のメンバアクセスルート情報解析フロー
チャートである。
【図4】従来技術の説明図である。
【符号の説明】
1:メンバアクセスルート情報生成部 2:メンバアクセスルート情報解析部 3:ルート情報 4:シンボル情報 5:メンバアクセスルート情報

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】クラス内のオブジェクトをアクセスするア
    ドレスを生成するオブジェクトアクセス装置において、 ルート情報(3)からポインタによってリンクしたシン
    ボル情報(4)中にクラス名、当該クラスのメンバ名、
    仮想基底クラスの有無、当該仮想基底クラスヘのポイン
    タを設定、ルート情報(3)からリンクされた他のルー
    ト情報(3)からポインタによってリンクしたシンボル
    情報(4)中にクラス名、当該クラスのメンバ名を設
    定、およびルート情報(3)からリンクされた他のルー
    ト情報(3)からポインタによってリンクしたシンボル
    情報(4)中にメンバ名を設定する、メンバアクセスル
    ート情報(5)を出力するメンバアクセスルート情報生
    成部(1)と、 クラスのメンバオブジェクトへのアクセス時に、上記メ
    ンバアクセスルート情報(5)中のルート情報(3)の
    ポインタでリンクされたシンボル情報(4)がクラス名
    であって仮想基底クラスの有および仮想基底クラスへの
    ポインタが設定されていたときに当該仮想基底クラスへ
    のポインタで指される他のシンボル情報(4)のクラス
    のメンバオブジェクトをアクセスするためのメンバ参照
    式を生成するメンバアクセスルート情報解析部(2)と
    を備えたことを特徴とするオブジェクトアクセス装置。
JP15981093A 1993-06-30 1993-06-30 オブジェクトアクセス装置 Pending JPH07141178A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP15981093A JPH07141178A (ja) 1993-06-30 1993-06-30 オブジェクトアクセス装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP15981093A JPH07141178A (ja) 1993-06-30 1993-06-30 オブジェクトアクセス装置

Publications (1)

Publication Number Publication Date
JPH07141178A true JPH07141178A (ja) 1995-06-02

Family

ID=15701755

Family Applications (1)

Application Number Title Priority Date Filing Date
JP15981093A Pending JPH07141178A (ja) 1993-06-30 1993-06-30 オブジェクトアクセス装置

Country Status (1)

Country Link
JP (1) JPH07141178A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997029422A1 (fr) * 1996-02-05 1997-08-14 Athena Telecom Lab, Inc. Procede et appareil de gestion d'objets et structure de donnees

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997029422A1 (fr) * 1996-02-05 1997-08-14 Athena Telecom Lab, Inc. Procede et appareil de gestion d'objets et structure de donnees
WO1997029421A1 (fr) * 1996-02-05 1997-08-14 Athena Telecom Lab, Inc. Procede et equipement de gestion d'objets

Similar Documents

Publication Publication Date Title
US8321371B2 (en) Enhanced artificial intelligence language
JPH03116281A (ja) 論理合成装置
JPH07141178A (ja) オブジェクトアクセス装置
JP2006178013A (ja) データベース作成装置及び方法
JP2002351871A (ja) 形態素解析装置、形態素解析方法、プログラムおよび記録媒体
JP2003280922A (ja) コードサイズ削減方法
JPH07146868A (ja) 自然言語処理装置
JP2000029894A (ja) 主題文抽出方式
JP2006011549A (ja) 構造化文書変換装置及びプログラム
JPH0744560A (ja) 文書処理装置における論理構造認識処理方式
JP2004272785A (ja) 質問応答装置及び質問応答プログラム
JPS62163146A (ja) 計算機言語の変換処理方式
JPH0756908A (ja) 文書処理装置
JPH08147151A (ja) ソフトウェア開発方法
JP2982418B2 (ja) 機能シミュレーション装置
JP2003323421A (ja) プログラム、文処理装置及び文処理方法
JPH0333977A (ja) 構文解析装置における文法誤り発見方法
KR960018924A (ko) 디비엠에스(dbms)의 실시간 지원을 위한 데이타 조작어 처리 방법
JP2000132405A (ja) インライン展開処理装置及び方法
JP2002269071A (ja) 曖昧文作成装置
JPH096620A (ja) エキスパートシステムのルール作成支援ツール
JPH11249879A (ja) 設計装置および記録媒体
JPH06175862A (ja) 電子計算機装置
JPH0728821A (ja) テキスト処理装置
JPH0264738A (ja) 文字列出力装置

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20010403