JP3406706B2 - 状態変数管理方法 - Google Patents

状態変数管理方法

Info

Publication number
JP3406706B2
JP3406706B2 JP25317894A JP25317894A JP3406706B2 JP 3406706 B2 JP3406706 B2 JP 3406706B2 JP 25317894 A JP25317894 A JP 25317894A JP 25317894 A JP25317894 A JP 25317894A JP 3406706 B2 JP3406706 B2 JP 3406706B2
Authority
JP
Japan
Prior art keywords
state variable
data structure
document
state
dictionary
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.)
Expired - Lifetime
Application number
JP25317894A
Other languages
English (en)
Other versions
JPH07168722A (ja
Inventor
モトヤマ テツロウ
リン チャン ユー
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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co 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
Priority claimed from US08/146,724 external-priority patent/US5422992A/en
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Publication of JPH07168722A publication Critical patent/JPH07168722A/ja
Application granted granted Critical
Publication of JP3406706B2 publication Critical patent/JP3406706B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Document Processing Apparatus (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、テキスト、グラフィッ
ク成分及び/またはイメージからなる文書のコンピュー
タ制御による印刷、表示、その他のプレゼンテーション
に関する。本発明は特に、辞書の集合、それら辞書のサ
ーチ順を定義するコンテキストスタック(context stac
k)、状態変数テーブル、資源の集合、及びオペランド
スタック(operand stack)を使用して、バーチャルマ
シンのステータスと呼ばれるプレゼンテーション装置の
ステータスを管理しつつ、文書データストリーム中のピ
クチャーまたはページセットの始まりと終わりを処理す
るための方法及び装置に関し、特に階層構造文書の処理
中に使用される状態変数の管理方法に関する。
【0002】本発明は米国特許出願第08/087,5
71号(1993年7月2日受理,”Method and Sys
tem to Handle Context of Interpretation in aDo
cument Processing Language”)の一部継続出願であ
り、当該米国特許出願第08/087,571号は米国
特許出願第07/931,808号(1992年8月1
1日受理,”A Method and System to Handle Dic
tionaryGeneration and Context Declaration in a
Document ProcessingLanguage”)の一部継続出願で
あり、当該米国特許出願第07/931,808号は、
米国特許出願第07/876,601号(1992年4
月30日受理,”Method and Apparatus to Manage
Picture and Pageset for DocumentProcessin
g”)、及び米国特許出願第07/876,251号(1
992年4月30日受理,”Method and System to
Handle Inclusion of ExternalFiles into a Docu
ment Processing Language”)の一部継続出願であ
り、当該各米国特許出願は引用により本明細書に組み込
まれる。
【0003】
【従来の技術】1970年代初期のレーザプリンタの開
発により、文字データのみならず一般的なグラフィクデ
ータも含む文書を高品質かつ低コストで印刷する機会が
与えられた。コンピュータによりプリンタに対するコマ
ンドを制御する当初の方法は、DIABLO(登録商
標)コマンドシーケンスに使用される種類のコマンドに
似たコマンド、いわゆる”エスケープシーケンス”(es
cape sequence)を採用していた。この種のコマンド
は、その前に特殊なバイト、一般にエスケープキャラク
タ(ASCII 27)、を置くことにより、普通のキャラクタ
データと区別された。この方法は、デイジーホイールプ
リンタやドットマトリクスプリンタには問題がないが、
必要条件が変化する可能性のある文書を印刷する目的に
は、あまり適さない。例えば、ニーズの変化や技術の進
歩に従い、プレゼンテーション装置のアップグレードが
必要になる。従来、この種のアップグレードには、プレ
ゼンテーション装置のプログラムコントローラの交換が
必要であった。少なくとも、プリンタの命令を格納した
新しいPROMが必要になった。しかし、これは一時的
に変更する方法としては実用的ではない。いくつかの印
刷ジョブのために新しいPROMを取り付け、その後に
元のPROMまたは別の新しいPROMと交換しなけれ
ばならないからである。このアップグレード方法は無駄
が多く、またプレゼンテーション装置のコントローラの
故障の増加を招く。
【0004】エスケープシーケンスコマンドには、この
ような本質的な制約があるので、レーザプリンタ、その
他のページプリンタを制御するための様々なタイプの”
ページ記述言語”(PDL)が開発された。これらのレ
ーザプリンタのバックワード互換性は、エスケープシー
ケンスコマンドをシミュレート可能にすることにより提
供された。現在用いられているページ記述言語の例とし
て、Adobe Systems社のポストスクリプト(PostScr
ipt,登録商標)とXerox社のインタープレス(Interp
ress,登録商標)がある。これ以外にもいくつかの権利
化されたPDLが知られている。
【0005】従来のあるページ記述言語は、オブジェク
トの処理のためのツールやシンタックスを提供したり、
またオペランドスタック類を利用できるようにする等に
よって、在来の標準的なエスケープシーケンスに対し様
々な改善をもたらした。さらに、これらページ記述言語
はスタック指向のプログラミング言語である。これらの
言語はまた、場合によって、プリンタの利用可能なリソ
ースにフォントやグラフィクイメージを追加する機能の
ように、プリンタの状態のダイナミックな変更を可能に
する。これらの特徴の一部について、Adobe Systems
社の”PostScript Language Reference Manual”及
び”PostScript LanguageProgram Design”(いずれ
もAddison-Wesley Publishing社発行)等の市販参考
書類に述べられている。他のPDLも同様に様々な技術
書及び参考書、例えば Harrington 他著”Interpres
s,The Source Book ”(Simon andSchuster社,
1988)に述べられている。
【0006】一つの標準化ページ記述言語が提案され、
国際標準化機構(ISO)で国際規格として開発中であ
る。この提案は本願発明者もその一寄与者であるが、現
在、ISOの1セクションに草案として提出されてい
る。この草案は、ISO/IEC DIS10180”Information Pr
ocessing Text-Communication Standard PageDesc
ription Language”として知られて、ニューヨークの
米国規格協会(ANSI)で入手できる。
【0007】従来のページ記述言語の多くは、様々な欠
点を持っている。例えば、ポストスクリプトの欠点の一
つは、文書のページ記述にリソース宣言(すなわち追加
フォント)や新しい辞書宣言を含めることができ、それ
を文書のどこにでも使用できることである。つまり、ポ
ストスクリプトでは構造が強制されないので、あるプリ
ンタが文書を印刷するために必要なリソースを持ってい
ることを確認するためには、文書全体を処理しなければ
ならない。この”前処理”を行なわないと、印刷プロセ
スのどの段階でも、終了間際でさえも、プリンタが文書
ページ記述のコマンドに対応できず文書の印刷を失敗す
る虞がある。
【0008】ポストスクリプトを採用した従来システム
は、他にも問題点がある。例えば、文書のあるページを
印刷するためには、文書の当該ページより前の全ページ
のPDL記述全体を、各ページのプレゼンテーションの
前に読んで処理し、文書ページセットアップパラメータ
(すなわちリソース宣言、辞書定義等)の状態を調べる
必要が一般にあることである。別のいい方をすれば、印
刷コントローラプログラムは、全てのページのセットア
ップコマンドの影響を考慮するために、文書の初めから
指定ページまでのPDL記述全体を読まなければならな
い。このページセットアップのスキャン処理は、比較的
簡単ではあるが、プリンタで有効に利用可能なプロセッ
サ時間の相当量を必要とする。
【0009】さらに、ポストスクリプトには、構造、プ
ロローグ(prologue)やデータ宣言の範囲(scope)を
処理するためのシンタックス(syntax)もセマンテック
ス(semantics)も定義されていない。規約は存在す
る。しかし、この規約に従わなくともよい。
【0010】周知のゼロックス社のインタープレスシス
テムに関する1つの問題点は、その構造が入力データス
トリーム中の辞書定義を効率的に処理できないことであ
る。インタープレスは、プロローグ構造を即座に使用す
ることもできない。また、インタープレスの標準的なエ
ンコーディングはバイナリだけで、人間が読めるクリア
テキスト(clear text)ではない。
【0011】
【発明が解決しようとする課題】本発明の目的は、一般
的には、前述したような問題点を解決もしくは改善し、
階層構造文書の効率的な処理を実現することにあり、本
発明の格別の目的は、階層構造文書の効率的処理を実現
するために、階層構造の文書の処理中に、該処理を実行
するバーチャルマシンの状態を定義する各種変数(状態
変数)を管理する好適な方法を提供することである。
【0012】
【課題を解決するための手段】本発明によれば、例えば
ISO/IECDIS10180(以下DIS 10180)に
定義されたようなページ記述言語の効率的な処理が可能
となる。
【0013】最近制定されたDIS 10180 によれば、各文
書デーストリームはページセットまたはピクチャーのい
ずれかの構造で与えられる。ページセットエレメント及
びピクチャーエレメントは、定義及び宣言コマンドを含
む1つのオプションのプロローグ(prologue)と、1つ
のオプションのボディ(body)とからなる。ページセッ
トボディ(pageset body)はゼロ個以上のページセットま
たはピクチャーからなり、ピクチャーボディ(picture
body)はゼロ個以上のピクチャーまたはトークンシーケ
ンス(tokensequence)からなる。特定のトークンまた
は特定のイメージを必要なオペレータとともに定義する
コマンドを含むトークンシーケンスは、”コンテント”
(content)と呼ばれるのに対し、文書の他の要素は”
構造”(structure)と呼ばれる。構造は、コンテント
が適当な出力イメージを生成するための環境をセットア
ップする。ピクチャーまたはページセットの階層レベル
内のプロローグの影響が及ぶのは、そのピクチャーまた
はページセットの終わりまでである。したがって、文書
の階層構造中の1つのピクチャーのプロローグは、同レ
ベル以上の構造には影響を及ぼさないが、下の階層レベ
ルの構造には影響を及ぼす。本発明は、1つのスタック
及び様々なポインタを使用することにより、このような
階層ツリー構造をプロローグの範囲とともに効率的に操
作する。
【0014】ツリー接続階層構造(tree-linked hierar
chical structure)は、文書の任意の部分の処理を当該
部分を直接的にアドレッシングして行なうことができる
という有利性があり、また、高い階層の部分の処理に、
階層ツリーの他の枝の他のアイテムを処理する必要がな
いという有利性がある。すなわち、文書のある特定部分
より上の階層ツリーに出現する構造定義しか処理する必
要がない。このことは、文書の処理効率の向上をもたら
し、またさらに、実際に文書の印刷を開始するに先だっ
て、印刷装置または表示装置で必要となるリソースのタ
イプを容易に決定できるようにする。後者のことは、様
々な装置による文書の印刷または表示の速度及び効率を
向上させる。
【0015】文書の1つの階層レベルが処理される時に
は常に、この階層レベルに対応したピクチャー/ページ
セットスタック(picture/pageset stack)に1つのエ
ントリー(entry)がプッシュされる。ピクチャー/ペ
ージセットスタックの各エントリーは、プロローグデー
タ構造(prologue data structure)へのポインタと、
カレント解釈コンテキスト(current context of inter
pretation、以下 ”CCI”)データ構造へのポインタ
とを持つ。文書もしくはファイルのコンテントの処理中
には必ずCCIデータ構造が用いられる。CCIデータ
構造のエントリーは、文書もしくはファイルの構造の処
理中に修正可能であり、また、コンテントの処理中にも
修正可能である。しかしながら、コンテントは、ピクチ
ャー/ページセットプロローグデータ構造(picture/pa
geset prologue data structure)のエントリーを直接的
に修正することはできない。
【0016】本発明の格別なる目的に関連し、1つの文
書の処理中に、該処理を実行しているバーチャルマシン
の状態を定義する変数が、1つの状態変数テーブル内に
定義される。状態変数テーブル内の状態変数は、様々な
処理コマンドにより修正することができる。
【0017】1つの文書のプレゼンテーションの開始時
に1つのプロローグデータ構造が生成されるが、このプ
ロローグデータ構造は、当該文書の最初の階層レベルに
関しては、デフォルト(default)の状態変数テーブル
へのポインタを持っている。この文書のコンテント部分
(トークンシーケンス)が処理される時に、1つのカレ
ント解釈コンテキスト(CCI)データ構造が生成され
るが、このCCIデータ構造は、それ自体の状態変数テ
ーブルへのポインタを持ち、この状態変数テーブルは初
めはデフォルト状態変数テーブル内の状態変数と同じ状
態変数を持っている。当該トークンシーケンスの直ぐ上
位の構造エレメントが終わると、CCIデータ構造は、
必要ならば若干の処理の後に、削除される。
【0018】次の階層レベルの処理時に、その直ぐ上位
の階層構造エレメントのためのCCIデータ構造が存在
するならば、当該次の階層レベルに対するプロローグデ
ータ構造の状態変数へのポインタは、当該上位エレメン
トに対するCCIデータ構造内の状態変数テーブルへの
ポインタと等しい内容に設定される。直ぐ上位の階層構
造エレメントに対するCCIデータ構造が存在しないと
きは、当該次の階層レベルに対するプロローグデータの
状態変数テーブルへのポインタは、当該上位エレメント
に対するプロローグデータ構造内の状態変数テーブルへ
のポインタと等しい内容に設定される。
【0019】トークンシーケンスの処理中に状態変数が
修正され、また、その直ぐ上位の構造エレメントがセッ
トアッププロシージャ(setup procedure)であれば、
このセットアッププロシージャの完了時に、当該トーク
ンシーケンスのCCIデータ構造内の状態変数テーブル
へのポインタが、当該状態変数テーブル内のポインタへ
コピーされる。当該直ぐ上位の構造エレメントがセット
アッププロシージャでなければ、状態変数の修正は現ト
ークンシーケンスエレメントに対して使用されることを
意図されていたに過ぎないので、当該状態変数に対して
なされた変更はセーブされない。
【0020】
【作用】本発明の状態変数の管理構成及び他の関連した
構成を上に述べたが、それによれば、階層構造文書に関
する従来技術の問題点を解決もしくは改善し、階層構造
文書の処理の一層の効率化・高速化を実現することがで
きるようになる。
【0021】
【実施例】以下、添付の図面を参照して、本発明の実施
例について詳細に説明する。なお、添付図面において、
いくつかの図にわたって用いられる同一の参照番号は、
同一または対応した部分を意味する。
【0022】図1及び図2に、2つの文書と、それらの
構造エレメントすなわち標準ページ記述言語(”SPD
L”)で定義されたピクチャー及びページセットが示さ
れている。
【0023】SPDLでは、文書は単一のピクチャーま
たは単一のページセットとして定義できる。ページセッ
トは追加のページセットまたはピクチャーより構成する
ことができる。1つのピクチャーは、1ページを超える
ことはできないし、あるページからもう1つのページへ
跨ることもできない。
【0024】図1は4ページの1つのページセット(ピ
クチャーの最高レベル)より構成された文書を示す。図
2はテキストと2つのピクチャーを含む単一ページ文書
を示す。図2の文書は、1ページだけであるので、1ペ
ージのページセットとして表現することもできるし、1
つのピクチャーとして表現することもできる。
【0025】図3はSPDL文書の階層構造の説明図で
ある。図3に示された文書は、その最高位の階層構造エ
レメントとしてページセット10を含んでいる。このペ
ージセット10はページセット12とピクチャー14と
からできている。さらに、このページセット12はピク
チャー16,18,20からなっている。
【0026】例を用いて階層レベルを定義すると、ペー
ジセット12は、ページセット10より低い階層レベル
にあるがピクチャー(ページ)16,18,20より高
い階層レベルにある。各階層エレメントは、普通、それ
より低いレベルの階層エレメント及び/または1つ以上
のトークンシーケンスエレメントから構成される。トー
クンシーケンスは、コンテントを含む特別種類の構造エ
レメントである。コンテントとは、文書として印刷また
は表示されるものの実体である。トークンシーケンス
は、例えば、図、テキストまたはイメージを記述する。
トークンシーケンスにより図、テキストまたはイメージ
等のコンテントを表現することは、非常に高速かつ効率
的な文書のプロゼンテーション処理を可能にし、殊に、
文書の一部だけのプレゼンテーションをしようとする時
には、対象外のページのトークンシーケンスを処理しな
くてもよいので、高速かつ効率的な処理が可能である。
ピクチャー14,16,18,20はそれぞれ、多分、
少なくとも1つのトークンシーケンスエレメントを持っ
ているであろう。
【0027】図4に示す如く、ピクチャー及びページセ
ットは”文法”(grammar) が設定されている。ピクチャ
ーは、1つのオプションのプロローグ及び1つのオプシ
ョンのピクチャーボディ(picture body)を持つものと定
義されている。ページセットは、1つのオプションのプ
ロローグ及び1つのオプションのページセットボディ(p
ageset body)を持つものと定義されている。オプション
のプロローグは、文書を処理するために処理システムに
より使用される様々なパラメータを定義するもので、外
部宣言(external declaration)、情報宣言(informati
ve declaration)、リソース宣言(resource declaratio
n)、文書プロダクション命令宣言(document producti
on instruction declaration)、コンテキスト宣言、辞
書生成宣言、セットアッププロシージャ等のエレメント
を含む。プロローグ中のこれらエレメントは全てオプシ
ョンであり、また、同一アイテムが多重的に存在しても
よいという意味で事実上は繰り返し可能である。したが
って、1つのプロローグに関し複数のレベルが存在して
もよく、これらの多重的ケースは後述のように処理可能
である。
【0028】図5は一例としての2ページ文書の構造エ
レメントの詳細説明図である。この文書は、プロローグ
51とページセットボディ60とを持つ1つのページセ
ット50からなっている。図4に関して説明したよう
に、プロローグは、オプションの構造エレメントで、ピ
クチャーまたはページセットのための様々なパラメータ
を定義する。プロローグ51は4つの従属要素、すなわ
ちリソース宣言52、辞書ジェネレータ(dictionary g
enerator)54、辞書ジェネレータ56及びセットアッ
ププロシージャ58、並びに対応したトークンシーケン
スを含んでいる。リソース定義(resource definitio
n)52は、トークンシーケンス53がプレゼンテーシ
ョンのために使用されるリソースを定義する(例えば文
書に使用されるフォームを定義する)コンテントを含ん
でいることを示す構造エレメントである。
【0029】辞書ジェネレータ54は、トークンシーケ
ンス55が1つの辞書を定義することを示す。同様に、
辞書ジェネレータ56は、トークンシーケンス57が1
つの辞書を定義することを示す。辞書定義は、順序付け
られた、キー(key)と値(value)のペアを含む。コン
テント中にキーが見つかった時には、辞書から得られた
当該キーに対応の値が当該キーの代わりに用いられる。
辞書内の値エントリーは整数、実数、プロシージャまた
は他の任意の型の値にすることができる。辞書ジェネレ
ータにより生成される辞書は、後述のように読み出し専
用のコンテント辞書(content dictionary)となる。
【0030】セットアッププロシージャ(setup proced
ure)58は、コンテントの処理時に用いられる様々な
状態変数を初期化する。代表的な状態変数は、カレント
色(current_color)、カレント・フォント(current_f
ont)及びカレント位置(current_position)等の変数
である。セットアッププロシージャは、ユーザ辞書のコ
ンテントを必要に応じ変更するためにも用いられる。ユ
ーザ辞書は、コンテキスト辞書及びコンテント辞書をサ
ーチして目的のキーが見つからなかった場合に、その後
でサーチされるリード/ライト(read/write)辞書で
ある。
【0031】ページセットボディ60は、ピクチャー6
1,75を持つ2ページを含む。ピクチャー61はそれ
自体のプロローグ62を持つが、このプロローグ62は
ピクチャー61だけに対するパラメータを定義しピクチ
ャー75には影響を及ぼさない。プロローグ62はコン
テキスト宣言(context declaration)63とその辞書
識別子(dictionary identifier)64、辞書ジェネレ
ータ65とそのトークンシーケンス66、セットアップ
プロシージャ67とそのトークンシーケンス68を含
む。ピクチャー61のピクチャーボディ69はトークン
シーケンス70,74を含み、ピクチャー71はピクチ
ャーボディ72とトークンシーケンス73を持つ。この
文書の第2ページはピクチャー75を持ち、このピクチ
ャー75のピクチャーボディ76はトークンシーケンス
77を持つ。
【0032】コンテキスト宣言63は、構造のより高い
階層レベルで定義されるコンテキスト辞書の操作を指示
する。辞書識別子64のような辞書識別子がコンテキス
ト宣言の後に続くときは、この辞書識別子がコンテキス
ト辞書のサーチ順の変更方法を指示する。コンテキスト
宣言の後に辞書識別子エレメントが来ないときは、辞書
の定義されたサーチ順は廃棄され、当該階層レベルに対
するコンテキスト辞書のサーチはなされず、ユーザ辞書
及びシステム辞書がコンテキストスタックのボトムに入
れられる。辞書のサーチ順はコンテキスト辞書スタック
データ構造を用いて定義されるが、その詳細は後述す
る。
【0033】なお、図5はSPDL文書の構造の概念的
な記述だけを示したものであり、実際のSPDL文書は
それとは異なった記述を用いることもあることを理解す
べきである。
【0034】さて、図6に示した本発明の典型的なハー
ドウエア構成について説明すると、システムは一般的
に、少なくともCPU102、メモリ(一般にROM1
06とRAM104の形をとる)、文書データストリー
ムを受信する入力/出力手段、及び最終出力の表示/印
刷のための手段を備える。最終的な出力イメージはイメ
ージラスター装置によって作られるが、このイメージラ
スター装置はCPUに直接接続されてもよく、また特有
のネイティブ描画形式を持っていてもよい。後者の場合
には当然に、文書データストリームを個々の描画装置の
持つ形式の描画コマンドへ変換する必要がある。一例と
してポストスクリプト形式の装置がシステムに接続され
る場合を挙げることができよう。この場合、本発明で
は、システムは要求された時に文書記述データストリー
ムを送って処理し、ポストスクリプト言語へ変換した後
のデータを印刷する。これは当然、既存プリンタのサポ
ート方法を考慮している。
【0035】前述のように、文書は構造とコンテントを
含んでいる。図7は、SPDL文書の構造とコンテント
を処理して出力イメージに変換するためのシステムの説
明図である。図6のCPU102のような単一のCPU
を使用して文書を処理することができるが、図7には、
独立した構造プロセッサ152、コンテントプロセッサ
162、及び、処理後の構造及びコンテントを結合して
出力イメージ166にするイメージャ(imager)164
が含まれている。図7に示した処理モデルを、以後、バ
ーチャルマシンと呼ぶ。
【0036】図7を詳しく見ると、例えばワードプロセ
ッサやページ記述ジェネレータ(page description gen
erator)によって作成されたSPDL文書150は、既
知の一般的な文法解析(parsing)プロセスにより文法
解析をされた後に、構造プロセッサ152によって解釈
される。説明の簡略化のため、文法解析プロセスの詳細
はここでは述べない。コンテントを含む構造エレメント
であるトークンシーケンスが構造プロセッサ152によ
り処理される時に、このトークンシーケンスのコンテン
トがライン156に沿ってコンテントプロセッサ162
へ送られる。なお、SPDL文書の全体ではなく、ある
ページだけを出力したいときは、出力されないトークン
シーケンスのコンテントはコンテントプロセッサ162
へ送られないことに注意されたい。こうすることで、処
理時間が従来技術のシステムより減る利点がある。
【0037】コンテントプロセッサ162は、コンテン
トの処理中に、当該文書の構造により定義された様々な
パラメータを知る必要がある。これを達成するため、構
造プロセッサ及びコンテントプロセッサは、CCIデー
タ構造154及びピクチャー/ページセットプロローグ
データ構造158(picture/pageset prologue datast
ructure)をアクセス可能である。CCIデータ構造1
54は、それを通じて構造プロセッサとコンテントプロ
セッサとが通信をするところの1つの構造である。CC
Iデータ構造が存在するのは、コンテントを含む構造エ
レメントの処理中である。その構造エレメントの階層レ
ベルの処理が終了すれば、一般に、CCIデータ構造中
の情報が構造プロセッサへ返され、CCIデータ構造は
構造プロセッサによって削除されるかセーブされる。例
えば図5において、プロローグ51はトークンシーケン
ス53,55,57,59を含んでいる。1つのトーク
ンシーケンスが処理される時には必ず、1つのCCIデ
ータ構造が生成される。このトークンシーケンスの処理
の終了時に、CCIデータ構造に格納されていた情報は
返されてピクチャー/ページセットプロローグデータ構
造に接続される。
【0038】カレント解釈コンテキスト(current cont
ext of interpretation)は、利用可能なリソースの集
合とバーチャルマシンの状態からなる。この利用可能な
リソースの集合は、あるコンテントエレメントの処理に
利用できるリソースの集まりである。バーチャルマシン
の状態は、コンテキストスタック、オペランドスタック
及び状態変数である。バーチャルマシンの状態を構成す
るこれらのエレメントの詳細については後述する。
【0039】コンテントプロセッサ162によりテキス
トまたはイメージのコンテントを処理している時に、構
造プロセッサ152よりライン160を通じて、処理後
の文書コンテント及び印刷命令が送出されるが、これら
はイメージャ164において結合され、イメージャは出
力イメージ166を出力する。
【0040】図7の処理モデルは1個のCCIデータ構
造と1個のピクチャー/ページセットプロローグデータ
構造しか示していないが、実際には構造の各レベルがそ
れ自体のCCIデータ構造とピクチャー/ページセット
プロローグデータ構造を持っている。構造の様々なレベ
ルを管理するために、図8に示すスタック202のよう
なスタックが使用される。
【0041】このスタックのボトムエントリー210
は、文書の処理中に常に存在する。CCIデータ構造へ
のポインタ214(pointer to CCI data structur
e)は初めはヌル(null)を指している。それというの
も、コンテントを含むトークンシーケンスはまだ全く出
現していないので、カレント解釈コンテキスト(CC
I)の必要性がないからである。CCIデータ構造は、
トークンシーケンスエレメントの処理中にのみ使用さ
れ、構造プロセッサとコンテントプロセッサとの間の通
信リンクとして利用される。ボトムスタックエントリー
210のプロローグデータ構造へのポインタ212(po
inter to prologue data structure)は、プロローグデ
ータ構造中の値が文書内のエレメントにより変更される
までは、ピクチャー/ページセットプロローグデータ構
造のデフォルト値を指している。
【0042】SPDL文書内のエレメントはまずパーサ
ー(parser)200によって処理される。このパーサー
200は、SPDL文書のデータストリームを受け取
り、同データストリーム中の様々なトークンを識別す
る。トークンであるピクチャービギン(picture_begi
n)、ピクチャーエンド(picture_end)、ページセット
ビギン(pageset_begin)及びページセットエンド(pag
eset_end)は、階層構造レベルの変化を指示する。パー
サー200は、これらの構造エレメントを認識した時
に、データストリームの処理を扱うための適当なルーチ
ンをコールする。ソフトウエア、ハードウエアまたは両
者の組合せによる通常の種類の文法解析を用いることが
できる。パーサー200は、例えば、図6のCPU10
2上に実現してもよい。パーサー200はまた、図7の
構造プロセッサ152の一部にしてもよい。さらに、こ
の文法解析を、例えば独立したプロセッサで行なっても
よい。説明の簡略化のため、文法解析メカニズムに関す
るこれ以上の説明は行なわない。
【0043】図8のエレメント180〜190は、1つ
のSPDL文書の様々な階層構造エレメントを表わして
いる。これらの構造エレメントは単に説明のためのもの
であって、簡略化した文書を示している。実際のSPD
L文書は、恐らく、トークンシーケンスのみならにず他
の構造エレメントも含むであろう。このエレメント18
0〜190を含む文書の処理の開始前は、ピクチャー/
ページセットスタック202は空である。この文書を処
理中にピクチャービギン180に出会うと、プロローグ
データ構造へのポインタ及びCCIデータ構造へのポイ
ンタを含む1つのエントリーが、ピクチャー/ページセ
ットスタック202にプッシュされる。ピクチャーエン
ド182に出会うと、スタック202上の上記エントリ
ーがポップされ、ピクチャー/ページセットスタック2
02は再び空になる。
【0044】次に、ページセットビギン184に出会
う。プロローグデータ構造へのポインタ212及びCC
Iデータ構造へのポインタ214を含むエントリー21
0が、ピクチャー/ページセットスタックにプッシュさ
れる。トークンシーケンスのコンテントに出会い、これ
がページセットビギンのレベルにあれば、CCIデータ
構造へのポインタ214は、ヌルを指す状態から、当該
トークンシーケンスに応じて生成されたCCIデータ構
造を指すように変更される。ページセットビギン184
の後に、ピクチャービギン186に出会う。スタック2
02のトップ、つまりエントリー210の上に、エント
リー204がプッシュされる。このエントリー204
は、プロローグデータ構造へのポインタ206と、CC
Iデータ構造へのポインタ208を含む。ピクチャービ
ギン186に対応したピクチャーが終わった後、ピクチ
ャーエンド188がスタック202よりエントリー20
4をポップする。これでスタックに残っているエントリ
ーは、エントリー210だけである。ページセットエン
ド190がスタック202よりエントリー210をポッ
プする。
【0045】簡単にするため、すべての文書のピクチャ
ー/ページセットスタックを常に参照番号202で示
し、最高位の階層構造エレメントがピクチャー/ページ
セットスタック202のエントリー210に対応し、ま
た、エレメント204が任意の文書の任意の次階層レベ
ルに対応するものとする。
【0046】SPDL文書の実際のクリアテキストエン
コーディング(clear text encoding)においては、構造
タームは、始まりが<picture>、<pageset>のように
記され、他方、終わりを示すためには</picture>、
</pageset>のように記される。SPDLにおけるク
リアテキストエンコーディングは、ISOドキュメント
文書8879:1986で定義され、ここに引用するこ
とにより本明細書に組み込まれるところの”SGML”
(Standard Generalized Markup Language)に従って
いる。さて、SPDL文書は、クリアーテキスト形式に
対立する形式であるバイナリ形式で表現することもでき
る。文書データストリームのバイナリエンコーディング
方式は、ピクチャー及びページセットのビギン(begi
n)及びエンド(end)条件の識別のために、特殊なタグ
をバイトカウント(byte count)とともに用いることが
できる。バイナリのSPDL文書は、ISO/IECド
キュメント8824:1990に定義された”ASN.
1”(Abstract Syntax Notation One)に従ってエ
ンコードされ、ISO/IEC8825:1990に定
義されたベーシック・エンコーディング規約に従う。な
お、ISO/IEC8824:1990及びISO/I
EC8825:1990は、引用により本明細書に組み
込まれる。
【0047】図9は、図8のピクチャー/ページセット
スタック202、並びに、プロローグデータ構造へのポ
インタ206及びCCIデータ構造へのポインタ208
により指示されたデータ構造を示す。ピクチャー/ペー
ジセットプロローグデータ構造220及びCCIデータ
構造240はそれぞれ、図7に示されているピクチャー
/ページセットプロローグデータ構造158及びCCI
データ構造154に相当する。
【0048】ピクチャー/ページセットプロローグデー
タ構造220を見ると、階層構造におけるあるページセ
ットレベル(pageset level)がエントリー221に格
納されており、また、あるピクチャーレベル(peicture
level)がピクチャーレベルエントリー222に格納さ
れている。一連のポインタ223,224,225,2
26,227,228,229,230,231は、外
部宣言(externaldeclaration)へのポインタ223、
情報宣言(informative declaration)へのポインタ2
24、リソース定義(resource definition)へのポイ
ンタ225、リソース宣言(resource declaration)へ
のポインタ226、コンテキスト宣言(context declar
ation)へのポインタ227、辞書ジェネレータ(dicti
onarygenerator)へのポインタ228、状態変数テーブ
ル(state variable table)へのポインタ229、マシン
状態(machine state)へのポインタ230、ユーザ辞書
リンク(user dictionary link)へのポインタ231とい
うように、様々なアイテムの所在を明らかにするもので
ある。ピクチャー/ページセットプロローグデータ構造
220のアイテム232は、座標系の初期変換(initia
l transformation)を格納している。
【0049】CCIデータ構造240はスタックエレメ
ント204のCCIデータ構造へのポインタ208によ
り指示され、トークンシーケンスエレメントの処理中に
生成されるものであるが、これは文書のプレゼンテーシ
ョン処理中にコンテントプロセッサ及び構造プロセッサ
により用いられる様々なパラメータを格納している。C
CIデータ構造240中のエレメントは、リソース宣言
へのポインタ242、コンテキストスタック(context
stack)へのポインタ244、オペランドスタック(ope
rand stack)へのポインタ246、状態変数テーブルへ
のポインタ2487、マシン状態へのポインタ250、
ユーザ辞書リンクデータ構造(userdictionary link da
ta structure)へのポインタ252からなる。処理のた
めに生成されたCCIデータ構造は一時的なデータ構造
と考えてよく、コンテント部(すなわちトークンシーケ
ンスエレメント)に始めて出会った時に生成され、1つ
のトークンシーケンスが終了した時及びそのトークンシ
ーケンスの階層構造エレメントが終了した時に破棄され
る。
【0050】図10に典型的な状態変数テーブル300
を示すが、同テーブルはCCIデータ構造のポインタ2
48及び/またはピクチャー/ページセットプロローグ
データ構造のポインタ229によって指示される。この
テーブル内の状態変数は、コンテントの処理用のグラフ
ィック変数を含む様々なパラメータを定義するために用
いられる。本発明を実際に実施する場合には、おそら
く、図10の状態変数テーブル内に示された状態変数よ
りも多い状態変数が格納されることになろう。
【0051】さて、文書の処理の詳細について述べる。
図11及び図12は、SPDL文書中のピクチャーの先
頭に出会った時に実行されるステップ群を示している。
図11はピクチャー/ページセットプロローグデータ構
造を扱い、図12は状態変数の処理を扱う。
【0052】ピクチャーレベル(Pic_level)及びペー
ジセットレベル(PS_level)等のグローバル変数はど
のルーチンでも利用できる。一方、図9に見られるピク
チャー/ページセットスタック202中のエントリ20
6で指示されたプロローグデータ構造220内に格納さ
れた変数であるピクチャーレベル(picture_level)2
22とページセットレベル(pageset_level)221
は、ローカル変数である。図11及び図12のルーチン
は、例えば、処理中に、図5に示した文書のピクチャー
61,71または75に出会った時に実行される。
【0053】新しい文書データストリームの処理の初期
化時または”電源投入(power up)”時にPic_levelが
ゼロに初期化される。ステップ401において、処理さ
れる階層レベルが最高の階層レベルでないと判定すると
(すなわち、処理の開始時、及び、上のレベル全てが処
理済みの場合)、処理の流れはステップ402に進み、
エラーチェックが行なわれる。何か問題が起こると、ス
テップ403でエラーフラグがセットされ、続いてステ
ップ404で図6のCPU102による他の処理へリタ
ーンする。問題が起こらなければ、処理は継続しステッ
プ405においてグローバル変数Pic_levelがインクリ
メントされる。
【0054】ページの選択が必要な時には、ステップ4
05の後に次の処理 If(Pic_level==1) then page-number is incremented が挿入される。この処理の内容は次のとおりである。ス
テップ405の後で、Pic_levelが1であるか調べられ
る。それが1ならば、”ピクチャービギン”(picture
begin)はピクチャー階層の最高レベルの始まり、つま
りページの開始を示している。したがって、page-numbe
rはインクリメントされる。この”page-number”は、電
源投入初期化時または処理システムのリセット時に、ゼ
ロに初期化される。”page-number”は、どのルーチン
によってもアクセス可能なグローバル変数であるのが理
想的である。Pic_levelはグローバル変数であるので、
レベル番号は他の全てのルーチンに適用され、多重レベ
ルも実現可能である。
【0055】ステップ406で、図9のピクチャー/ペ
ージセットプロローグデータ構造220に対するメモリ
割り当てが起こる。このピクチャー/ページセットプロ
ローグデータ構造のアドレスへのポインタが、ステップ
406でスタック202にプッシュされる。ステップ4
08では、まだトークンシーケンスに出会っておらず、
したがって処理すべきピクチャービギンに対するCCI
データ構造は存在しないので、ピクチャー/ページセッ
トスタックのCCIデータ構造へのポインタにヌルがプ
ッシュされる。ステップ409において、プロローグデ
ータ構造220のピクチャーレベル(picture_level)
及びページセットレベル(pageset_level)がセットさ
れる。そして、処理の流れはプロローグデータ中のエン
トリーの処理及び状態変数処理のための図12のフロー
チャートへ進む。
【0056】図12の最初のステップ420で、処理中
のピクチャービギンがピクチャー/ページセットスタッ
クの最初のエントリであるか調べる。そうであれば、ス
テップ422へ進み、割り当てられたプロローグデータ
構造の状態変数テーブル・ポインタは、デフォルトの状
態変数テーブルを指すように設定される。このステップ
は最初の階層レベルの処理中に行なわれので、使用する
必要のある状態変数で、それ以前に修正されたものはな
い。ステップ424において、割り当てられたプロロー
グデータ構造中のポインタは、前に定義された状態変数
・ポインタを除いて、全てヌルを指すように設定され
る。
【0057】ステップ420で処理中のエントリーがピ
クチャー/ページセットスタックの最初のエントリーで
ないと判定したときは、処理の流れはステップ426に
進み、割り当てられたプロローグデータ構造中の、状態
変数テーブル・ポインタ以外のポインタは、ピクチャー
/ページセットスタックの1つ下のエントリーに関する
プロローグデータ構造と同じアドレスを指し示す。な
お、この下のスタックエントリーは上の階層レベルに対
応する。というのは、より低い階層レベルはピクチャー
/ページセットスタックのトップにプッシュされるから
である。処理の流れはステップ428に進み、ピクチャ
ー/ページセットスタックの該下のエントリーのCCI
データ構造へのポインタがヌルに設定されているか調べ
られる。ヌルに設定されているときは、処理の流れはス
テップ430へ進み、現プロローグデータ構造中の状態
変数テーブルへのポインタは、1スタックレベル下のプ
ロローグデータ構造の状態変数テーブルと同じアドレス
を指すように設定される。ステップ428で、ピクチャ
ー/ページセットスタック中の下のエントリーのCCI
データ構造へのポインタがヌルでないと判定したとき
は、この現プロローグデータ構造の状態変数テーブルへ
のポインタは、下のレベルのCCIデータ構造の状態変
数テーブルと同じアドレスを指すように設定される。
【0058】ステップ432より、処理の流れはステッ
プ434へ進み、現在の変換の値が、割り当てられたプ
ロローグデータ構造の初期変換エントリーにコピーされ
る。ステップ436でピクチャービギンの処理が完了
し、文書の次の処理のため構造プロセッサへリターンす
る。
【0059】ページセットビギン(pageset bigin)の
ために行なわれる処理は、図11及び図12に示した処
理と同様であるが、いくつかの小さな変更がある。これ
らの変更としては、例えば、ピクチャーレベル(pictur
e_level)がPic_levelと等しいか調べる代わりに、ピ
クチャーレベル及びPic_levelが共にゼロであるか調べ
なければならない。さらに、ステップ405は、Pic_l
evelをインクリメントする代わりにPS_levelをインク
リメントするように変更される。図12の処理は、ペー
ジセットビギンに対しても全く同一でよい。
【0060】図13は、トークンシーケンスに出会った
時に文書の、CCIデータ構造を持つ直ぐ上の階層レベ
ルが存在しない場合に、CCIデータ構造を生成するた
めに用いられるプロセスのフローチャートを示す。図1
3に示したCCIデータ構造生成用プロセスは、例え
ば、図5に示した文書のトークンシーケンス53,5
5,57,59,66,68,70,73,77が処理
される時に実行される。トークンシーケンス74は、ト
ークンシーケンス70により生成されたCCIデータ構
造を用いるので、CCIデータ構造を生成しない。
【0061】トークンシーケンスエレメントに出会い、
かつピクチャー/ページセットスタックのトップエント
リーがヌルを指している時に、CCIデータ構造を生成
するために、構造プロセッサは図13のステップ602
をコールする。ステップ604は、図9に示されたCC
Iデータ構造240のような新しいCCIデータ構造の
ためにメモリを割り当てる。この生成されたデータ構造
のアドレスはアドレスポインタPTR_CCIとして記
憶され、ステップ606は、このポインタPTR_CC
IをCCIデータ構造へのポインタへ、例えば図9のピ
クチャー/ページセットスタック202のロケーション
208へ書き込む。ステップ608は、CCIデータ構
造に対する状態変数テーブルを生成し、この状態変数テ
ーブルのアドレスを状態変数テーブルへのポインタへ、
例えばCCIデータ構造240のポインタ248へ書き
込む。次にステップ610において、ピクチャー/ペー
ジセットプロローグデータ構造220の状態変数テーブ
ルへのポインタ229により指示された状態変数テーブ
ルの値が、CCIデータ構造の指示された状態変数テー
ブルへコピーされる。
【0062】ステップ612は、CCIデータ構造24
0内の様々なポインタの値を、ピクチャー/ページセッ
トプロローグデータ構造220内の対応エントリーに基
づいて割り付ける。すなわち、リソース宣言へのポイン
タ226をCCIデータ構造のポインタ242へコピー
し、コンテキスト宣言へのポインタ227をCCIデー
タ構造のポインタ244へコピーし、マシン状態へのポ
インタ230をCCIデータ構造の同ポインタ250へ
コピーし、ユーザ辞書リンクへのポインタ231をCC
Iデータ構造のポインタ252へコピーする。
【0063】最後にステップ614は、トークンシーケ
ンスより上位の構造エレメントに基づいて適当なオペラ
ンドスタックを作成する。本ステップは、CCIデータ
構造のオペランドスタックへのポインタ246に対する
ヌルの書き込み、あるいは他のポインタ値の書き込みを
含むこともある。そして、ステップ616で処理流れは
構造プロセッサへ戻る。
【0064】図13のフローチャートに示されたプロセ
スは、トークンシーケンスが終わった時に、必要なら、
CCIデータ構造の値がピクチャー/ページセットプロ
ローグデータ構造へコピーされると仮定している。しか
し、トークンシーケンス(例えば図5のトークンシーケ
ンス70)は、文書の階層レベルが1レベル下がった時
(例えばピクチャー71に出会った時)に、そのCCI
データ構造が破棄されないことがある。
【0065】この場合、ピクチャー71は図11及び図
12に示したプロセスを実行させる。図12のステップ
428に来た時に、トークンシーケンス70のためのC
CIデータ構造は破棄されてないので、ピクチャー/ペ
ージセットスタック内のトップエントリーの下のエント
リーに対するCCIデータ構造中のポインタはヌルでは
ないと判定される。したがって、ステップ432が実行
され、当該新プロローグデータ構造中の状態変数テーブ
ルへのポインタを、スタックの下のエントリーに対する
CCIデータ構造の状態変数テーブルへのポインタと等
しい値に設定する。その結果、万一、トークンシーケン
ス70より後でトークンシーケンス74より前の何等か
のエレメントにより状態変数が修正されても、ピクチャ
ー71用に生成された状態変数は修正されず、そして、
トークンシーケンス70の処理時に用いられる状態変数
テーブルは修正されない。
【0066】図5に戻って、それぞれのレベルに対する
ピクチャー/プロローグデータ構造及びCCIデータ構
造を指し示す様々なレベルのピクチャー/ページセット
スタックを生成する例について述べる。図5のページセ
ット50に出会った時に、図11及び図12に示された
ピクチャー用プロセスと類似したページセット用プロセ
スがコールされ、ピクチャー/ページセットスタックに
対して最初のエントリー(図9のピクチャー/ページセ
ットスタック202のエントリー210に対応する)が
プッシュされる。リソース定義52はトークンシーケン
ス53を含み、同トークンシーケンスはCCIデータ構
造を生成させ、同データ構造はポインタ214により指
し示されることになる。トークンシーケンス53が終わ
ると、CCIデータ構造へのポインタ214はヌルを指
すように設定され、CCIデータ構造は構造プロセッサ
が必要な情報を獲得した後に破棄される。同様に、トー
クンシーケンス55,57,59に出会った時に、各ト
ークンシーケンスに対してCCIデータ構造が生成さ
れ、これはトークンシーケンスの終わりで構造プロセッ
サが必要な情報を獲得後に破棄される。
【0067】セットアッププロシージャ58,67に対
して、構造プロセッサは返されたCCIの状態変数テー
ブルを取得し、同テーブルへのポインタにより、プロロ
ーグデータ構造中の状態変数テーブルへのポインタを置
き換える。状態変数の管理のために用いられる関連した
データ構造の操作に関する説明は、図38乃至図42に
より述べる。
【0068】ピクチャー62に出会った時に、同ピクチ
ャーは低い階層レベルであるので、ピクチャー/ページ
セットスタック202に対しエントリー204がプッシ
ュされる。トークンシーケンス66が処理されている時
にCCIデータ構造が生成され、これはトークンシーケ
ンス66の終わりで、構造プロセッサが必要情報を取得
後に破棄される。同様の処理が、トークンシーケンス6
8に対しても行なわれる。
【0069】トークンシーケンス70は、他のトークン
シーケンス同様、CCIデータ構造を生成させる。しか
し、トークンシーケンス70の下にピクチャー71があ
るので、トークンシーケンス70に対応したCCIデー
タ構造は、トークンシーケンス70の処理の終わりで破
棄されず、メモリに残る。ピクチャー71は第3の階層
レベルを生成させ、第3のエントリーがピクチャー/ペ
ージセットスタック202にプッシュされる。トークン
シーケンス73は、ピクチャー/ページセットスタック
の第3エントリーに対するCCIデータ構造を生成させ
る。トークンシーケンス73の終了時に、第3エントリ
ーのCCIデータ構造は破棄され、階層レベルは再びピ
クチャー61に対応した第2レベルへと変化する。した
がって、トークンシーケンス70用に元々生成されたC
CIデータ構造は、トークンシーケンス74用に再び使
用される。トークンシーケンス74が終わった時に、対
応のCCIデータ構造は破棄される。また、トークンシ
ーケンス74が終わった時に、ピクチャー61が終わる
ので、ピクチャー/ページセットスタックの第2エント
リーはポップされる。
【0070】ピクチャー75は第2階層レベルであるの
で、新しい第2エントリーをピクチャー/ページセット
スタックにプッシュさせる。トークンシーケンス77
は、同スタックの第2エントリーに対するCCIデータ
構造を生成させる。そして、トークンシーケンス77の
終わりは文書の終わりであるので、文書が終わった時に
全てのCCIデータ構造が破棄され、かつピクチャー/
ページセットスタックの全エントリーがポップされる。
【0071】1つのトークンシーケンスが終わった時
に、通常、そのCCIデータ構造を削除し、かつ様々な
ポインタ操作を行なう必要がある。図9のCCIデータ
構造240のようなCCIデータ構造の削除方法を説明
する前に、様々な種類のの辞書の操作に関して詳細に述
べる。
【0072】SPDL文書の処理中に、文書によって使
用された値(value)及びプロシージャを見つけるため
に4種類の辞書が使用される。すなわち、図14に示す
ようなシステム辞書、図27に示すようなユーザ辞書、
コンテキスト辞書及びトークンシーケンスにより生成さ
れるコンテント辞書とである。辞書は、キー及び値に対
応した順序付けられたオブジェクトペアの集合である。
文書のSPDLコンテント中でキーに出会った時は常
に、辞書中の値が同キーの代わりに用いられる。辞書の
値部分は整数、実数等の任意の種類の値、プロシージ
ャ、または任意の他の種類のオブジェクトである。
【0073】図14はシステム辞書の一例である。シス
テム辞書は、SPDL文書の全てのオペレータ(operat
or)をキーフィールドに格納しており、また、対応した
プロシージャを値フィールドに格納している。例えばS
PDLコンテント中で”add”に出会った時には、addに
対応した値がシステム辞書において検索され、そしてad
d に対応したプロシージャは、2つの値がオペランドス
タックよりポップされて、その種類がチェックされ、加
算され、その結果がオペランドへ改めてプッシュされる
ことを示す。システム辞書内で見つかるであろう他の種
類のプロシージャが図14に示されているが、通常、さ
らに多くのエントリーがシステム辞書に存在するであろ
う。システム辞書は、ユーザやSPDL文書によって修
正することができないもので、SPDL文書を処理する
システムの一部分である。
【0074】2番目の種類の辞書はユーザ辞書である。
ユーザ辞書は、初めは空であるが、トークンシーケンス
エレメントによってエントリーの追加及び修正が可能で
ある。ユーザ辞書は、情報の書き込みが可能であるだけ
でなく、書き込み後にユーザによって変更可能である。
ユーザ辞書は、エントリーをユーザが修正可能な辞書
(すなわちリード/ライト辞書)であり、かつ、ユーザ
がオペレータ”dict”を使用して生成する必要のない辞
書である。ユーザ辞書内の値は、どのようなタイプの値
でもよく、整数、実数、プロシージャを包含する。概念
的には、ユーザ辞書は1個だけである。しかし、ある階
層レベルが修正した辞書を必要とするのに対して他の階
層レベルが、その修正した辞書を使用しない場合には、
システムは、様々な階層レベルについて同一のキーに対
し様々な値を記憶しておかなければならないので、ユー
ザ辞書に様々な階層レベルについて様々なエントリーが
存在することになろう。
【0075】次の種類の辞書はコンテキスト辞書であ
る。システム辞書とユーザ辞書が1個ずつしかないのに
対して、各階層レベルに対し及び同一の階層レベル内に
多数のコンテキスト辞書が存在し得る。コンテキスト辞
書は読み出し専用辞書である。すなわち、コンテキスト
辞書は一旦定義されたならば、ユーザによって修正する
ことはできない。コンテキスト辞書は、辞書ジェネレー
タ構造エレメント下のトークンシーケンスにより生成さ
れる。コンテキスト辞書の生成に関するより詳細な説明
は、同一出願人の継続中の米国特許出願第07/93
1,808号(1992年8月11日受理、”Method
and System to Handle DictionaryGenerator and
Context Declaration in Standard Page Descript
ionLanguage”)に見ることができ、同特許出願の開示
内容は引用により本明細書に組み込まれる。
【0076】最後の種類の辞書はコンテント辞書で、こ
れはユーザにより定義された辞書であり、またトークン
シーケンスエレメントにより定義される。コンテント辞
書は、生成される時にはリード/ライト辞書であり、直
上位の構造エレメントの範囲内でのみ有効である。後に
より詳しくコンテント辞書について説明する。
【0077】サーチする辞書内のキーが、様々な辞書の
いずれにおいても見つかる可能性がある。そこで、本発
明によれば、様々な辞書についてキーをサーチするため
のサーチ順が採用され、これは図15に示すような”コ
ンテキストスタック”(context stack)とよばれるも
のによって定義される。コンテキストスタックは、トッ
プよりサーチされる。コンテキスト辞書及びコンテント
辞書は最初にサーチすべき辞書である。ユーザ辞書は同
スタックのボトムの次のものであり、システム辞書はボ
トムに置かれる。本出願の親出願においては、コンテキ
ストスタックはコンテキスト辞書との関連でのみ説明さ
れた。しかし、コンテキストスタックは全辞書について
のサーチ順を定義する。
【0078】辞書内のあるキーをサーチする時には、最
初に、CCIデータ構造中のコンテキストスタックへの
ポインタを調べてコンテキスト辞書及びコンテント辞書
をサーチすべきか判定する。下に説明するコンテキスト
スタックリンクデータ構造(context stack link data
structure)により指し示されたコンテキスト辞書また
はコンテント辞書に当該キーが見つからないときは、C
CIデータ構造中のユーザ辞書リンク構造(user dicti
onary link structure)へのポインタを調べて当該キー
がユーザ辞書に存在するか判定することによってユーザ
辞書がサーチされる。当該キーがコンテキスト辞書また
はコンテント辞書のいずれにも、またユーザ辞書にも見
つからない場合、システム辞書がサーチされる。システ
ム辞書は1つだけであり、かつ修正されないので、プロ
ローグデータ構造またはCCIデータ構造にシステム辞
書へのポインタを置く必要はない。システム辞書は常に
同一ロケーションで見つかるので、文書の階層レベル毎
にシステム辞書のロケーションを管理する必要はない。
【0079】コンテキストスタックは、4種類の辞書の
サーチ順を定義するスタックと見做される。しかし、コ
ンテキストスタックは、スタックなる用語の一般的な意
味でのスタックではない。コンテキストスタックなる用
語は、辞書に対するサーチ順要件の説明を簡単にするた
めに用いられている。コンテキストスタックにおいて、
ボトムのエントリーは常に同じであって、システム辞書
のアドレスを指す。コンテキストスタックの次に高いエ
ントリーはユーザ辞書リンク構造であり、これはピクチ
ャ/ページセットプロローグデータ構造内のポインタ2
31またはCCIデータ構造内のポインタ252に相当
する。ユーザ辞書リンク構造は後続のユーザ辞書リンク
構造を指し示すことができる。コンテキストスタックの
最も上のエントリーは、コンテキストスタックリンクデ
ータ構造により指示されるコンテキスト及びコンテント
辞書である。コンテキストスタックの中央のエレメント
である、ユーザ辞書リンク構造へのポインタは、修正す
ることが可能であり、かつ、ユーザ辞書のエントリーを
変更するために使用可能であって、しかも、コンテキス
トスタック内で上側のコンテキスト及びコンテント辞書
のサーチ順に影響を及ぼさないので、”コンテキストス
タック”は必ずしも一般的なスタックではないが、概念
的にはスタック類似の構造のものである。
【0080】ここで、CCIデータ構造により使用され
る様々な辞書及び文書の処理時に使用されるピクチャー
/ページセットプロローグデータ構造について見ると、
3つのレベルの辞書がある。最高の辞書レベルはコンテ
キスト辞書及びコンテント辞書であり、これらはトーク
ンによってユーザに定義される辞書である。コンテキス
ト辞書は読み出し専用辞書である。したがって、コンテ
キスト辞書は、生成された後は修正することができな
い。コンテキスト辞書は、それが生成された階層レベル
において、該レベルより低い階層レベルに対してしか使
用されない。コンテキスト辞書及びコンテント辞書は、
最高の辞書レベルにあるので、キーに出会った時に最初
にサーチされる。そのキーがコンテキスト辞書またはコ
ンテント辞書の中のある1つに見つかれば、それ以上の
辞書サーチは不要である。そのキーがコンテキスト辞書
でもコンテント辞書でも見つからないときは、次に、そ
のキーについてユーザ辞書がサーチされる。そのキーが
ユーザ辞書で見つからないと、最後にシステム辞書がサ
ーチされる。
【0081】コンテキスト辞書及びコンテント辞書の操
作並びに、それら辞書のサーチ順について説明する前
に、コンテキスト辞書の生成プロセスを簡単に説明する
必要がある。辞書ジェネレータ構造エレメント、例えば
図5に示した文書の辞書ジェネレータ54に出会った時
に、同辞書ジェネレータ下のトークンシーケンス55は
生成すべき1つの辞書を定義し、構造プロセッサは、そ
の辞書をコンテキスト辞書に分類して、図16に示すよ
うな1つのコンテキスト辞書ジェネレータデータ構造
(context dictionary generator data structure)6
50を生成する。このコンテキスト辞書ジェネレータデ
ータ構造は、ページセットレベル(pageset_level)6
52、ピクチャーレベル(picture_level)654、当
該辞書の名前に対応した辞書識別子656、辞書サイズ
658、辞書データ構造へのポインタ660、及び次の
辞書ジェネレータへのポインタ(next)662に関する
情報を内容とするリンクリスト(linked list)であ
る。この辞書ジェネレータデータ構造へのポインタ22
8は、図9のピクチャー/ページセットプロローグデー
タ構造220内にある。
【0082】新たに生成された辞書ジェネレータデータ
構造中のエントリー”next”662は、2個以上のコン
テキスト辞書が生成されるならば、前に生成されたある
辞書ジェネレータデータ構造を指し示す。こうすること
で、新たに生成された辞書ジェネレータデータ構造は、
それ以前に生成された辞書ジェネレータデータ構造の前
に挿入され、後には挿入されない。
【0083】辞書ジェネレータによりコンテキスト辞書
が生成されると、このコンテキスト辞書は、コンテキス
トスタックリンクデータ構造を用いてコンテキストスタ
ックのトップに置かれる。コンテキスト辞書及びコンテ
ント辞書のサーチ順は修正することができる。コンテキ
スト宣言は、コンテキスト辞書のサーチ順を定義しまた
は修正する。また、トークンシーケンス中に、コンテキ
ストスタックを操作可能なオペレータ(operator)があ
る。コンテキスト辞書に対するサーチ順は、コンテキス
トスタックリンクデータ構造(その一例が図17に示さ
れている)によって定義される。コンテキストスタック
リンクデータ構造680は、図9に示したピクチャー/
ページセットプロローグデータ構造220のコンテキス
ト宣言へのポインタ227及び/またはCCIデータ構
造240のコンテキストスタックへのポインタ242に
よって、指示される。コンテキスト宣言へのポインタと
コンテキストスタックへのポインタとは、名前が違うけ
れども、同様の目的をかなえるもので、CCIデータ構
造の初期生成時には同一であり、また図15に示すよう
な同じ基本構造を有する。
【0084】コンテキストスタックリンクデータ構造の
内容は、ページセットレベル682とピクチャーレベル
684(例えば該データ構造が生成されたレベル)、該
辞書の名前と同じ辞書識別子686、辞書データ構造6
70のアドレスを含む辞書へのポインタ688、ヌルま
たは他のコンテキストスタックリンクデータ構造を指し
示すエントリー”next”である。コンテキストスタック
内に2つ以上のコンテキスト辞書がある場合、エントリ
ー”next”は、後続の辞書に対するコンテキストスタッ
クリンクデータ構造を指し示す。なお、コンテキストス
タックリンクデータ構造は、前述の米国特許出願におい
てはコンテキスト辞書データ構造と呼ばれていることに
留意されたい。図17のコンテキストスタックリンクデ
ータ構造に関するより完全な説明は、本出願人による係
属中の米国特許出願第07/931,808号(”Met
hod and System to Handle Dictionary Generatora
nd Context Declaration in Standard Page Descr
iption Language”,1992年8月11日受理)にあ
り、当該米国特許出願は引用により本明細書に組み込ま
れる。
【0085】コンテキストスタックリンクデータ構造の
使用例が図18乃至図20に示されている。図18、図
5のピクチャー61の開始時におけるピクチャー/ペー
ジセットスタック、プロローグデータ構造、コンテキス
トスタックリンクデータ構造及びコンテキスト辞書を示
している。ページセット50のために生成され、ピクチ
ャー/ページセットスタック202のポインタ212に
よって指示されるピクチャー/ページセットプロローグ
データ構造700は、コンテキスト宣言へのポインタ7
02を持っている。このコンテキスト宣言へのポインタ
702はコンテキストスタックリンクデータ構造704
を指すが、該データ構造704はポインタ708によっ
て後続のコンテキストスタックリンクデータ構造710
を指す。これらコンテキストスタックリンクデータ構造
710,704はコンテキスト辞書718,716を指
すが、これらコンテキスト辞書は図5の辞書ジェネレー
タ54,56及びそれらのトークンシーケンス55,5
7によりそれぞれ生成されたものである。
【0086】図5のピクチャー61に出会った時に、文
書の階層レベルが1レベル下がり、図11のフローチャ
ートに記述されるように、プロローグデータ構造220
を指すポインタ206と、ヌルを指すCCIデータ構造
へのポインタ208とを持つ1つのエントリーが、ピク
チャー/ページセットスタックに入れられる。プロロー
グデータ構造220はプロローグデータ構造700と同
じエントリーを有する。したがって、コンテキスト宣言
へのポインタ227はコンテキスト宣言へのポインタ7
02と同じコンテキスト辞書リンク構造を指す。第1及
び第2の階層レベル対するコンテキスト辞書のサーチ順
は、図18に示されるように、初めにコンテキスト辞書
716、次にコンテキスト辞書718、という順となろ
う。
【0087】ピクチャーエレメント61の下で最初のト
ークンシーケンスに出会った時に、図19に示したCC
Iデータ構造240からなる解釈コンテキストを生成す
る必要がある。図15において、辞書識別子64は辞書
ジェネレータ54,56により生成されたコンテキスト
辞書を指定する。トークンシーケンス、例えば辞書ジェ
ネレータ65の下のトークンシーケンス66は、CCI
データ構造240の生成を必要とし、そして、図14の
フローチャートに示したプロセスにおいて述べられるよ
うに、CCIデータ構造240のエントリーはプロロー
グデータ構造220よりコピーされる。CCIデータ構
造中の値はピクチャー/ページセットプロローグデータ
構造220よりコピーされるので、コンテキストスタッ
クへのポインタ244は、ピクチャー/ページセットプ
ロローグデータ構造220中のコンテキスト宣言へのポ
インタ227と同じアドレスを指す。
【0088】図20は、図5のトークンシーケンス66
の後におけるピクチャー/ページセットスタック、プロ
ローグデータ構造、コンテキストスタックリンクデータ
構造及びコンテキスト辞書を示しており、この時には、
辞書識別子64は辞書ジェネレータ56により生成され
た1つのコンテキスト辞書だけを指定する。コンテキス
ト辞書732は図5には示されていないエレメントによ
って前もって生成されている。コンテキスト宣言63及
び辞書識別子64は、コンテキストスタックリンクデー
タ726を生成した。コンテキストスタックリンクデー
タ構造720は、辞書ジェネレータ65及びトークンシ
ーケンス66によって生成されたものであるが、ポイン
タ722により辞書732を指す。コンテキストスタッ
クリンクデータ構造720のポインタ”next”724
は、2番目のコンテキストリンクデータ構造726を指
している。コンテキストスタックリンクデータ構造72
6は、ポインタ728により、辞書ジェネレータ56に
よって前に生成されたコンテキスト辞書716を指して
いる。コンテキストスタックリンクデータ構造726は
コンテキスト宣言63により定義されるので、そのエン
トリー”next”はヌルを指している。文書の第2階層レ
ベルのコンテキスト辞書のサーチ順は、図20に示され
るように、まずコンテキスト辞書732、次にコンテキ
スト辞書716、という順である。
【0089】前述のように、コンテキストスタックリン
クデータ構造より構成されたコンテキストスタックの最
高レベルを修正する一つの方法は、辞書識別子を含んだ
コンテキスト宣言構造エレメントを用いる方法である。
しかし、コンテント中のトークンシーケンスを用いて、
辞書をコンテキストスタックデータ構造にプッシュした
り、それよりポップすることができる。トークンシーケ
ンス中の”ビギン”(begin)オペレータは、オペラン
ドスタック内の参照された辞書をコンテキストスタック
にプッシュする。この機能は、図21のフローチャート
に示されたプロセスによって遂行される。
【0090】トークンシーケンスで”ビギン”等のオペ
レータが見つかると、コンテキスト宣言データ構造にコ
ンテント辞書をプッシュするために使用される、図21
に示したプロセスがコールされる。ステップ760は新
たなコンテキストスタックリンクデータ構造に用いられ
るメモリを割り当て、そして該割り当てたコンテキスト
スタックリンクデータ構造のアドレスがポインタptr_C
Lに格納される。ステップ762において、アクティブ
(active)のCCIデータ構造中のコンテキストスタッ
クへのポインタの値が、新たに生成されたコンテキスト
スタックリンクデータ構造の”next”エントリーにコピ
ーされる。次にステップ764において、ポインタptr_
CLがアクティブのCCIデータ構造のコンテキストス
タックへのポインタに格納される。ステップ766は、
ステップ730で割り当てたコンテキストスタックリン
クデータ構造のページセットレベル及びピクチャーレベ
ルの各エントリーに−1なる値を格納する。ページセッ
トレベルとピクチャーレベルに−1を格納する理由は、
該コンテキストスタックリンクデータ構造があるトーク
ンシーケンスによって操作されたことを表示するためで
ある。後述するように、コンテキストスタックリンクデ
ータ構造より1つの辞書がポップされる場合、コンテキ
ストスタックリンクデータ構造に辞書がどのようにして
格納されたか(すなわち、それら辞書がコンテキスト辞
書、コンテント辞書のいずれかであるか)によって、メ
モリの割り当て解除のためのプロセスは様々である。最
後に、ステップ768は、コンテキストスタックにプッ
シュされた辞書へのポインタを、ステップ760で生成
したコンテキススタックリンクデータ構造の辞書ポイン
タに格納する。
【0091】図22は、トークンシーケンスがコンテン
ト辞書744をコンテキストスタックにプッシュした後
におけるピクチャー/ページセットスタック、CCIデ
ータ構造、プロローグデータ構造、コンテキストスタッ
クリンクデータ構造、コンテキスト辞書及びコンテント
辞書を示している。図22に示された構造は、図5のト
ークンシーケンス66で生成されると考えることがで
き、図19に示した構造の次にできる構造である。
【0092】コンテキスト辞書744は、トークンシー
ケンス66中のオペレータ”dict”により生成されたと
考えることができる。トークンシーケンス66に出会っ
た時に、図19のCCIデータ構造が生成される。トー
クンシーケンス66は、オペレータ”ビギン”の実行時
に、図21のプロセスによってコンテキストスタックリ
ンクデータ構造734を生成する。トークンシーケンス
66の実行中に、図22に示されたコンテキストスタッ
クリンクデータ構造734のページセットレベル736
とピクチャーレベル738とは−1になっているが、そ
の理由は、コンテキストスタックリンクデータ構造73
4が構造プロセッサではなくトークンシーケンスによっ
て生成されたからである。コンテキストスタックリンク
データ構造734は、ポインタ740によって、前に生
成された辞書744を指し示す。コンテキストスタック
リンクデータ構造734のポインタ742は、2番目に
低いレベルのコンテキストスタックリンクデータ構造7
04を指し示す。したがって、図22に示されたデータ
構造により、コンテキスト辞書及びコンテント辞書がサ
ーチされる時には、まず辞書744がサーチされ、次に
辞書716と辞書718がサーチされる。これら辞書の
どれかにキーが見つかれば、辞書サーチは終わる。キー
が見つからないときは、次にユーザ辞書及びシステム辞
書がサーチされる。
【0093】図23は、トークンシーケンスを使って、
コンテキストスタックリンクデータ構造より1つの辞書
をポップするためのプロセスを示している。図23のル
ーチンがコールされた時に、例えばトークンシーケンス
が”エンド”(end)オペレータを含んでいる時に、ス
テップ788はアクティブのCCIデータ構造のコンテ
キストスタックポインタにより指示されたコンテキスト
スタックリンクデータ構造のアドレスを確認する。次
に、コンテキスト宣言により指示されたコンテキストス
タックリンクデータ構造はもはや使用されないので、こ
のコンテキストスタックリンクデータ構造の”next”の
値が、アクティブCCIデータ構造のコンテキスト宣言
ポインタにコピーされる。ステップ792は、ページセ
ットレベルが−1であり、かつピクチャーレベルが−1
であるか判定する。これらの値が両方とも−1である場
合、コンテントスタックリンクデータ構造はコンテキス
トスタックへのプッシュにより生成されたのであるか
ら、指示された辞書が他のオブジェクトによって参照さ
れることはないので、該辞書用のメモリを解放できる可
能性がある。ページセットレベル及びピクチャーレベル
が−1の場合、ステップ794は、コンテキストスタッ
クリンクデータ構造の辞書が他のオブジェクトによって
参照されるか判定する。参照されないならば、ステップ
796において、当該辞書は消去され、その占有メモリ
は解放される。当該辞書が他のオブジェクトにより参照
される場合には、当該辞書は消去できないので、ステッ
プ798がコンテキストスタックリンクデータ構造とそ
のメモリを消去するだけである。ページセットレベルと
ピクチャーレベルの両方が−1ではない場合には、当該
辞書は後で必要になるかも知れないのでステップ796
で消去されることはない。その代わり、ステップ798
で、コンテキストスタックリンクデータ構造のメモリだ
けが解放される。メモリ解放はシステム資源を解放させ
て、処理中に使用メモリの割り当て解除を可能にする。
【0094】図24は、あるトークンシーケンスが、図
20に示した文書構造のコンテキストスタックリンクデ
ータ構造より辞書732をポップして、辞書756を該
コンテキストスタックリンクデータ構造にプッシュした
後におけるピクチャー/ページセットスタック、CCI
データ構造、プロローグデータ構造、コンテキストスタ
ックリンクデータ構造、コンテキスト辞書及びコンテン
ト辞書を示している。トークンシーケンス、例えば図5
のトークンシーケンス70は、辞書をポップ及びプッシ
ュさせるが、CCIデータ構造240を生成する。該ト
ークンシーケンスが、辞書732をコンテキストスタッ
クリンクデータ構造よりポップさせるように命令する時
には、ポインタ244はもうコンテキストスタックリン
クデータ構造720を指し示さないでコンテキストスタ
ックリンクデータ構造726を指し示すことになる。該
トークンシーケンスがプッシュ(push)命令を含んでい
る時には、図24に示すように、コンテキストスタック
リンクデータ構造746が生成され、同データ構造は、
ピクチャーレベル及びページセットレベルが−1であ
り、また、ポインタ244により指し示される。辞書7
56は前に生成されたものであるが、ポインタ752に
より指示される。コンテキストスタックリンクデータ構
造746の”next”は、コンテキストスタックリンクデ
ータ構造720でなく、コンテキストスタックリンクデ
ータ構造726を指し示すが、これは辞書732がコン
テキストスタックリンクデータ構造よりポップされてい
るからである。トークンシーケンスの処理中に、プロロ
ーグデータ構造220中のコンテキスト宣言へのポイン
タ227は影響を受けないが、コンテキストスタックへ
のポインタ242は修正される。
【0095】さて、ユーザ辞書の構成について説明す
る。SPDL(Standard PageDescription Languag
e)の実施規格はユーザ辞書を1個だけにすることを指
示しているが、ユーザ辞書は修正可能であるので、文書
の様々な階層レベルでユーザ辞書内の様々なキー及び値
を使用可能である。したがって、概念上は、本発明にお
いて、単一のユーザ辞書をさまざまな小さなユーザ辞書
からできていると考えることができる。図25に示すよ
うなユーザ辞書リンク構造(user dictionarylink struc
ture)が。様々な階層レベル内の様々な小ユーザ辞書を
管理するために用いられる。
【0096】ユーザ辞書リンク構造800は、図9のプ
ロローグデータ構造220のユーザ辞書リンクへのポイ
ンタ231、及び/または、CCIデータ構造240の
ユーザ辞書リンクへのポインタ252により指し示めさ
れる。このユーザ辞書リンク構造の内容は、ページセッ
トレベル802、ピクチャーレベル804、ユーザ辞書
へのポインタ806、及び、別のユーザ辞書リンク構造
かヌルを指すエントリー”next”である。ユーザ辞書、
例えばユーザ辞書810は、2つのカラムつまりキー
(key)カラム812と値(value)カラム814を持っ
ている点でコンテキスト辞書及びシステム辞書と似てい
る。ユーザ辞書は、任意のトークンシーケンスにより修
正でき、また、セットアッププロシージャ、例えば図5
のプロローグ51内のトークンシーケンス59を持つセ
ットアッププロシージャ58により、内部にエントリー
を設定することができる。
【0097】図26は、オペレータ”def”、すなわち
ユーザ辞書の内容に対する書き込み(修正を含む)があ
る時に必ず使用されるプロセスを示している。ユーザ辞
書の内容修正とユーザ辞書への書き込みは、同様に扱わ
れる。ユーザ辞書に対する書き込みもしくは修正がある
場合、辞書内のキーがサーチされる。書き込み、修正い
ずれの場合にも、サーチ対象のキーが見つかったとき
は、同キーに対応した値が修正される。目的のキーが見
つからないときは、キーと値のペアーが辞書に書き込ま
れる。ステップ820は、当該ユーザ辞書リンクにおけ
る第1のユーザ辞書に対する初めての書き込み”def”
であるか判定する。ユーザ辞書の生成後、同ユーザ辞書
に対する2番目以降の書き込みがあったときには、ステ
ップ822で、既存のユーザ辞書に対して、ユーザ辞書
へ書き込みをするトークンシーケンスによって指示され
たエントリーを追加する。今回が、あるトークンシーケ
ンスにつきユーザ辞書の初めての書き込みであれば、処
理の流れはステップ820からステップ824へ進み、
1つのユーザ辞書リンク構造のためにメモリが割り当て
られる。また、この割り当てられたユーザ辞書リンク構
造に対するポインタptr_linkが決められる。次にステッ
プ826において、アクティブのCCIデータ構造中の
ユーザ辞書リンク構造へのポインタが、新しく生成され
たユーザ辞書リンク構造のエントリー”next”にコピー
される。
【0098】ステップ828において、新しく生成され
たユーザ辞書リンク構造へのポインタが、アクティブの
CCIデータ構造の、ユーザ辞書リンクへのポインタ用
エントリーに格納される。このエントリーとは、例え
ば、図9に示したCCIデータ構造240のエントリー
252である。ステップ830は、該ユーザ辞書にメモ
リを割り当て、該ユーザ辞書の追加されるエントリーの
アドレスを決定する。ユーザ辞書を修正するには、ユー
ザ辞書内に小ユーザ辞書を生成する必要がある。その理
由は、より高い階層レベルのユーザ辞書は、後続の処理
の間、修正しない形にしておく必要があるので、修正さ
れてはならないからである。したがって、ユーザ辞書に
全くエントリーを追加しない修正の場合でさえも、該ユ
ーザ辞書の新しい部分を割り当てる必要がある。ステッ
プ832は、ポインタptr_udictを、該ユーザ辞書リン
ク構造の辞書ポインタに格納する。例えば、ptr_udict
は、図25に示したユーザ辞書リンク構造800の辞書
ポインタ806に格納される。最後に、ステップ834
において、追加または修正をすべきキー・値ペア(key-
value pai)が、新しく生成された辞書に書き込まれ
る。そして、処理の流れはコンテントプロセッサへ戻
り、トークンシーケンスの他の処理が行なわれる。
【0099】1つのエントリーを持つユーザ辞書の例が
図27に示されている。このユーザ辞書は、次に示すコ
ンテント /add{mul}def を含むトークンシーケンスによって生成される。このト
ークンシーケンスコマンドは、ユーザ辞書のキーカラム
へのエントリー”add”の格納と、対応した値カラムへ
の乗算を意味する{mul}の格納とを指示する。処理中
の文書で”add”に出会った時には、コンテキスト辞書
及びコンテント辞書において”add”がサーチされる。
これらの辞書で見つからないときは、ユーザ辞書がサー
チされて、”add”が見つかることになる。”add”に対
応する辞書内の値は”{mul}”である。文書中で”add”
に出会った時には、オペランドスタック上の最初の2つ
のエントリーが掛け合わされ、その結がオペランドスタ
ックにプッシュされる。例えば、キー”add”に対応す
る値が”{mul}”である時に、文書中にコマンド”2 3
add”があれば、まず2がオペランドスタックにプッシ
ュされ、そして3が2の上にプッシュされる。”add”
に出あうと、オペランドスタック内の上の2つの値が掛
け合わされ、その結果である6がオペランドスタックの
トップにプッシュされる。
【0100】図28乃至図32は、図5の文書の処理中
に存在することになるピクチャー/ページセットスタッ
ク、プロローグデータ構造、ユーザ辞書リンク構造及び
ユーザ辞書を示している。図28は、図5の文書の始ま
りにおける各種構造の状態を表わす。ピクチャー61は
第2階層レベルにあるので、ピクチャー/ページセット
スタック202には2つのエントリーが存在し、したが
って、2つのプロローグデータ構造220,700が存
在する。ユーザ辞書リンク構造920とユーザ辞書94
0とは、セットアッププロシージャ58とそのトークン
シーケンス59によって生成されたものである。
【0101】トークンシーケンス66または68の処理
中の構造は、図29で表わすことができる。図29が図
28と異なる点は、トークンシーケンスの処理中である
のでCCIデータ構造が生成されていることである。こ
のCCIデータ構造240中のユーザ辞書へのポインタ
252は、プロローグデータ構造220中のユーザ辞書
リンクへのポインタ231をコピーされているので、ポ
インタ231と同じユーザ辞書リンクを指す。
【0102】図30は、ユーザ辞書942へのエントリ
ー書き込みプロセスにおけるセットアッププロシージャ
67及びそのトークンシーケンス68を示す。トークン
シーケンス68が処理されている時にCCIデータ構造
240が生成さる。この第2階層レベルで初めてユーザ
辞書に対する修正または書き込みがあった時に、ユーザ
辞書リンク構造926とユーザ辞書942が生成され
る。
【0103】トークンシーケンス68の処理の終わり
で、CCIデータ構造240が破棄され、ユーザ辞書リ
ンクへのポインタ252はプロローグデータ構造220
のユーザ辞書リンクへのポインタ231にコピーされ
る。その結果として得られるデータ構造が図31に示さ
れている。図30及び図31の第2階層構造についての
ユーザ辞書のサーチ順は、まず辞書942、次に辞書9
40、の順である。
【0104】セットアッププロシージャ67の後で、ユ
ーザ辞書に対しエントリーの追加及び修正をすることが
できる。例えば、トークンシーケンス70は追加エント
リーをユーザ辞書に書き込むことができる。トークンシ
ーケンス70の処理中に、図32に示したCCIデータ
構造240が生成される。ユーザ辞書への追加エントリ
ーを含むトークンシーケンス70の部分に出会った時
に、ユーザ辞書リンク構造932が生成される。ユーザ
辞書リンク構造932は新たに生成された部分であるユ
ーザ辞書944を指し示し、また、その”next”ポイン
タによりユーザ辞書リンク構造926を指し示す。
【0105】図33乃至図37は、トークンシーケンス
エレメントが終わった時に用いられるプロシージャを説
明している。1つのトークンシーケンスエレメントが終
了した時に、図33に示したプロセスがコールされ、ス
テップ1002は直ぐ上位の構造エレメントが終了済み
であるか判定する。直ぐ上位の構造エレメントが終了済
みならば、CCIデータ構造は削除されるべきで、それ
をするためにステップ1006及びステップ1008に
記述されたプロセスをコールする。直ぐ上位の構造エレ
メントが終了済みでないとは、ステップ1004は次の
構造エレメントがトークンシーケンス、または、あるピ
クチャーもしくはページセット内のピクチャーであるか
判定する。
【0106】1つのトークンシーケンスが終わった時
に、その直ぐ後に別のトークンシーケンスがあることが
ある。このようなことが起こるケースは、例えば図5の
セットアッププロシージャ67の下に2つのトークンシ
ーケンスがある場合である。そして、仮に一方のトーク
ンシーケンスが状態変数を修正し、もう1つのトークン
シーケンス、例えば68.5の位置にあるトークンシー
ケンスが、ユーザ辞書を修正したとする。そうすると、
トークンシーケンス68.5(図示されていない)に出
会った時に、トークンシーケンス68のCCIデータ構
造は削除されるべきでない。
【0107】ピクチャー71に出会った時に、トークン
シーケンス70のCCIデータ構造は削除されるべきで
ない。このトークン70処理時に生成されたCCIデー
タ構造は、トークンシーケンス74の処理に必要である
からである。このピクチャー71は、ピクチャーまたは
ページセット内部のピクチャーであり、したがって、エ
ラールーチンはコールされるべきでなく、処理の流れは
構造プロセッサに戻される。なお、ピクチャー71に出
会った時に、ステップ1002は直ぐ上位の構造エレメ
ント、すなわちピクチャーボディ69が終わっていない
と判定するので、処理の流れはステップ1004へ進
む。
【0108】ステップ1006によりコールされたプロ
セスは、後で使う必要のある値をコピーする。ステップ
1008によりコールされたプロセスは、もう必要のな
いデータ構造を削除する。
【0109】ステップ1006がコールするプロセス
を、図34及び図35に示す。ある処理条件下で、CC
Iデータ構造はデータの一時記憶エリアとして用いら
れ、また、CCIデータ構造を生成させるトークンシー
ケンスが終わった時にCCIデータ構造を削除できる。
しかし、文書のプレゼンテーションのための処理時に用
いられる、特定のパラメータを修正するには、そのパラ
メータを修正直後に格納する必要がある。したがって、
ある環境下で、CCIデータ構造の特定のパラメータが
プロローグデータ構造内の対応エントリーにコピーされ
た後に、CCIデータ構造は削除される。
【0110】ステップ1006が図34に示したプロセ
スをコールすると、ステップ1020は直ぐ上位の構造
エレメントがセットアッププロシージャであるか判定す
る。セットアッププロシージャは、先の処理のため状態
変数またはユーザ辞書を修正するのに用いられることが
ある。プロローグデータ構造内のポインタに対するこれ
ら修正をコピーしておく必要がある。すぐ上位の構造エ
レメントがセットアッププロシージャであるときには、
処理の流れはステップ1022へ進み、状態変数が修正
されたか判定する。修正されたときには、ステップ10
24によって、CCIデータ構造内の状態変数テーブル
へのポインタが、プロローグデータ構造内の対応したポ
インタへコピーされる。次に、ステップ1026はユー
ザ辞書が修正されたか判定する。修正されたときには、
ステップ1028で、CCIデータ構造内にあるユーザ
辞書リンクへのポインタが、プロローグデータ構造内の
対応したポインタへコピーされる。そして、処理の流れ
は図35に示されたプロセスBへ進む。
【0111】ステップ1020で、直ぐ上位の構造エレ
メントがセットアッププロシージャではないと判定した
ときには、処理の流れはステップ1030へ進み、その
構造エレメントがリソース仕様(source specificatio
n)であるか判定する。それがソース仕様であれば、ス
テップ1032オペランドスタックの必要な情報をセー
ブする。例えば、カラーリソース(color resource)仕
様の場合、オペランドスタックのトップにあるベクタ参
照(vector reference)を構造プロセッサでセーブしな
ければならない。パターン(pattern)及びフォーム(f
orm)リソース仕様の場合には、辞書参照がセーブされ
る。そして、処理の流れは図35に示したプロセスBへ
進む。
【0112】ステップ1034は、何かコンテキスト辞
書が定義されるか判定する。定義されるならば、ステッ
プ1036はオペランドスタックより辞書参照を取得す
る。そして処理の流れは図33に示したプロセスに戻
り、ステップ1008が図36及び図37に示されたC
CI削除ルーチンをコールし、同ルーチンが必要でなく
なったデータ構造を削除する。
【0113】図36において、ステップ1100はCC
Iデータ構造により指し示されたコンテキストスタック
リンクデータ構造を取得する。ステップ1102は、ピ
クチャーレベル(picture_level)及びページセットレ
ベル(pageset_level)が共に−1であるか判定する。
両方とも−1ならば、トークンシーケンスによる辞書操
作が生じているので、該コンテキストスタックリンクデ
ータ構造は、他のどのCCIデータ構造もしくはプロロ
ーグデータ構造によっても指し示されず、削除してよ
い。ステップ1104は、該コンテキストスタックリン
クデータ構造により指し示された辞書を取得する。ステ
ップ1106は、該コンテキストスタックリンクデータ
構造の”next”ポインタを格納する。次に、ステップ1
108は、該コンテキストスタックリンクデータ構造を
削除する。ステップ1110は、該辞書が辞書ジェネレ
ータのリンク中にあるか判定する。そうでないときは、
該辞書をステップ1112で消去できる。処理の流れは
ステップ1114へ進み、ステップ1106で得られた
情報を利用して次のコンテキストスタックリンクデータ
構造が取得される。得られたコンテキストスタックリン
クデータ構造のピクチャーレベル及びページセットレベ
ルが−1でない時には、処理の流れは図37に示すプロ
セスCへ進む。
【0114】図37に示したプロセスにおいて、ステッ
プ1120はオペランドスタックを、もはや不要である
のでメモリから削除する。そしてステップ1112は、
最も上位の構造エレメントがセットアッププロシージャ
であるか判定する。セットアッププロシージャでなけれ
ば、ステップ1124で状態変数テーブルをメモリから
削除できるので、ユーザ辞書及びCCIデータ構造のユ
ーザ辞書リンク構造はステップ1126で削除される。
【0115】ステップ1128はマシン状態をメモリよ
り削除し、ステップ1130はCCIデータ構造を削除
し、ステップ1132はピクチャー/ページセットスタ
ックのトップエントリーであるCCIデータ構造へのポ
インタにヌルを書き込む。そして、処理の流れは図33
に示したプロセスへ戻り、結局、図33の処理をコール
した構造プロセッサへ戻る。
【0116】なお、図36及び図35に示したプロセス
の完了後、処理直後のコンテント部を含む階層レベルが
終了する可能性がある。階層レベルが終了したときに
は、終了した該階層レベルのピクチャー/ページセット
プロローグデータ構造はメモリから削除され、プロロー
グデータ構造へのポインタ及びCCIデータ構造へのポ
インタを保持しているピクチャー/ページセットスタッ
ク内のエントリーがポップされる。階層レベルの終了に
関するより詳細な説明が本出願による米国特許出願第0
7/876,601号(”Method and System to Ma
nage Pictureand Pageset for Document Processin
g”)に述べられており、これは引用により本明細書に
組み込まれる。
【0117】図5に示したセットアッププロシージャ5
8及びそれに関連したトークンシーケンス59による状
態変数の操作について、図38乃至図42に示したデー
タ構造と関連させて説明する。
【0118】図38は、セットアッププロシージャ構造
エレメントの始まりの時点におけるピクチャー/ページ
セットスタック202、プロローグデータ構造220及
びデフォルト状態変数テーブル450を示している。デ
フォルト状態変数テーブル450は、デフォルトの状態
変数を格納している。デフォルト状態変数は、ROMや
ディスク記憶装置等の非揮発性メモリに格納されること
が多い。したがって、デフォルト状態変数テーブルは読
み出し専用であるかもしれないので、その中の値を変更
することは不可能かもしれない。セットアッププロシー
ジャ58の前に3つのトークンシーケンス(53,5
5,57)があるが、これらのトークンシーケンスは、
それぞれの処理中に生成されたCCIデータ構造によっ
て指示される状態変数テーブル内の変数を変更するだけ
である。しかし、それら状態変数の変更は一時的であっ
て格納されない。
【0119】トークンシーケンス59の先頭で、図13
のステップ604に示すように、CCIデータ構造24
0が割り当てられる。ステップ606で、新たに生成さ
れたCCIデータ構造240へのポインタがピクチャー
/ページセットスタック202のトップエントリーのC
CIデータ構造へのポインタ214に格納される。ステ
ップ608で、1つの状態変数テーブル460が生成さ
れ、そのポインタがCCIデータ構造420の状態変数
テーブルへのポインタ248に格納される。ステップ6
10において、プロローグデータ構造220内の状態変
数テーブルへのポインタ229により指示された状態変
数テーブル450の値が、新たに生成された状態変数テ
ーブル460へコピーされる。例えば、デフォルト状態
変数テーブル450のエントリー451,452,45
3中の値X1,X2,X3が、状態変数テーブル460
のエントリー461,462,463へそれぞれコピー
される。ここで、図39に示した如きデータ構造にな
る。
【0120】トークンシーケンス59の処理期間に、状
態変数テーブル460の状態変数は修正されるかもしれ
ない。例えば、次のトークンシーケンス 10 10 moveto 10 setlinewidth は状態変数テーブルの Current_Position(カレント位
置)とCurrent_Stroke_Width (カレントストローク
幅)を修正する。図40は、状態変数が修正された後の
データ構造の状態を示している。
【0121】図41は、コンテントプロセッサがトーク
ンシーケンス59の処理を終了して構造プロセッサがセ
ットアッププロシージャ58の終わりで制御を取得する
時の構造を示している。構造プロセッサは、図34のス
テップ1024で述べたように、CCIデータ構造24
0の状態変数テーブルへのポインタ248を、プロロー
グデータ構造220の状態変数テーブルへのポインタ2
29へコピーする。したがって、状態変数は有効に修正
されたので、以後の処理では、修正後の値461,46
2,463を持つ状態変数テーブル460を指し示す状
態変数テーブルへのポインタ229を使用する。
【0122】図42は、当該セットアッププロシージャ
の終了後のデータ構造を示している。図37のステップ
1130で述べたようにCCIデータ構造は削除され、
また、図37のステップ1132で述べたように、ピク
チャー/ページセットスタック202のCCIデータ構
造へのポインタはヌルを指すように設定される。
【0123】構造プロセッサは、コンテントプロセッサ
へ制御を渡す前に、何等かの値をオペランドスタックに
プッシュするかもしれない。例えば、リソース定義構造
エレメントにカラーが定義される時には、構造プロセッ
サは、カラーネームの値に依存した値の単一エレメント
のタイプ識別子をプッシュするかもしれない。同様に、
辞書ジェネレータ構造エレメントが処理される時には、
構造プロセッサは、制御をコンテントプロセッサへ渡す
前に、オペランドスタックに辞書参照をプッシュしなけ
ればならない。したがって、トークンシーケンスの上位
構造エレメントに応じて、様々な値がオペランドスタッ
クにプッシュされる。
【0124】以上の説明に照らし、本発明の様々な修正
及び変形が可能であることは明らかである。例えば、ピ
クチャー/ページセットスタックが、各階層レベルにつ
きエントリーを1個しか持たないようにしてもよい。こ
のエントリーは階層レベルのプロローグデータ構造を指
し示させなければならない。そして、プロローグデータ
構造は階層レベルのためのカレント解釈コンテキスト
(CCI)へのポインタを持つことになろう。このよう
な構成でも、プロローグデータ構造とCCIデータ構造
の両方が実現されるであろうから、前述したと等価な結
果を得られよう。また、CCIデータ構造中にリソース
宣言へのポインタを持つ必要はないかもしれない。
【0125】
【発明の効果】以上に詳細に説明したように、本発明に
よれば、階層構造文書の処理中に、処理を実行するバー
チャルマシンの状態を定義する状態変数の好適な管理環
境を提供し、階層構造文書の処理の効率化・高速化を実
現できる等の多くの効果を得られるものである。
【図面の簡単な説明】
【図1】4ページの文書の例を示す図である。
【図2】1ページの文書の例とその階層構造エレメント
を示す図である。
【図3】文書の階層構造の説明図である。
【図4】ピクチャー、ページセット、プロローグ、ピク
チャーボディ(picture_body)及びページセットボディ
(pageset_body)の文法の説明図である。
【図5】典型的な2ページのSPDL文書の構造を示す
図である。
【図6】本発明を実施するためのハードウエア構成の例
を示すブロック図である。
【図7】SPDL文書を処理するために使用されるバー
チャルマシンもしくは処理モデルの説明図である。
【図8】ピクチャー/ページセットスタックと、同スタ
ックに対しプッシュまたはポップする様々な階層構造エ
レメントとを関連させて説明する図である。
【図9】ピクチャー/ページセットスタックと、同ピク
チャー/ページセットスタックのエントリーによって指
し示されたピクチャー/ページセットプロローグデータ
セット及びCCIデータ構造の説明図である。
【図10】状態変数テーブルの説明図である。
【図11】ピクチャービギン(picture_begin)コマン
ドで実行されるプロセスにおけるピクチャー/ページセ
ットスタック及びピクチャー/ページセットプロローグ
データ構造の操作に関連する部分のフローチャートであ
る。
【図12】ピクチャービギン(picture_begin)コマン
ドで実行されるプロセスにおける状態変数の操作に関連
する部分のフローチャートである。
【図13】トークンシーケンス構造エレメントと出会っ
た時にカレント解釈コンテキストデータ構造を生成する
ために用いられるプロセスを示すフローチャートであ
る。
【図14】システム辞書の一部を示す図である。
【図15】コンテキストスタックの説明図である。
【図16】コンテキスト辞書ジェネレータ(context di
ctionary generator)データ構造を示す図である。
【図17】コンテキストスタックリンクデータ構造(co
ntext stack linkdata structure)を示す図である。
【図18】文書処理中におけるピクチャー/ページセッ
トスタック、CCIデータ構造、プロローグデータ構
造、コンテキストスタックリンクデータ構造及びコンテ
キスト辞書の状態の一例を示す図である。
【図19】文書処理中におけるピクチャー/ページセッ
トスタック、CCIデータ構造、プロローグデータ構
造、コンテキストスタックリンクデータ構造及びコンテ
キスト辞書の状態の別の例を示す図である。
【図20】文書処理中におけるピクチャー/ページセッ
トスタック、CCIデータ構造、プロローグデータ構
造、コンテキストスタックリンクデータ構造及びコンテ
キスト辞書の状態の他の例を示す図である。
【図21】コンテキスト辞書を、トークンシーケンスに
より指示された時に、コンテキストスタックリンクデー
タ構造へプッシュするために用いられるプロセスのフロ
ーチャートである。
【図22】辞書がコンテキストスタックリンクデータ構
造へプッシュされた後の各種データ構造を示す図であ
る。
【図23】トークンシーケンスによってコンテキストス
タックリンクデータ構造より辞書がポップされる時に実
行されるプロセスのフローチャートである。
【図24】コンテキストスタックリンクデータ構造のプ
ッシュ及びポップが発生した後の各種のスタック及びデ
ータ構造を示す図である。
【図25】ユーザ辞書(user dictionary)及びユーザ
辞書リンクデータ構造(userdictionary link data str
ucture)を示す図である。
【図26】ユーザ辞書を操作するために用いられるプロ
セスのフローチャートである。
【図27】1つのエントリーを含むユーザ辞書の例を示
す図である。
【図28】文書のある処理ステップにおけるピクチャー
/ページセットスタック、CCIデータ構造、プロロー
グデータ構造、ユーザ辞書リンク(link)、ユーザ辞書
の状態を示す図である。
【図29】文書のある処理ステップにおけるピクチャー
/ページセットスタック、CCIデータ構造、プロロー
グデータ構造、ユーザ辞書リンク、ユーザ辞書の状態を
示す図である。
【図30】文書のある処理ステップにおけるピクチャー
/ページセットスタック、CCIデータ構造、プロロー
グデータ構造、ユーザ辞書リンク、ユーザ辞書の状態を
示す図である。
【図31】文書のある処理ステップにおけるピクチャー
/ページセットスタック、CCIデータ構造、プロロー
グデータ構造、ユーザ辞書リンク、ユーザ辞書の状態を
示す図である。
【図32】文書のある処理ステップにおけるピクチャー
/ページセットスタック、CCIデータ構造、プロロー
グデータ構造、ユーザ辞書リンク、ユーザ辞書の状態を
示す図である。
【図33】トークンシーケンスのエンド(end)に出会
った時に用いられるプロセスのフローチャートである。
【図34】CCIデータ構造が削除される前に必要な変
数のセーブのためのプロセスの一部を示すフローチャー
トである。
【図35】CCIデータ構造が削除される前に必要な変
数のセーブのためのプロセスの一部を示すフローチャー
トである。
【図36】不必要なCCIデータ構造と、それに関連し
たデータ構造を削除するためのプロセスの一部を示すフ
ローチャートである。
【図37】不必要なCCIデータ構造と、それに関連し
たデータ構造を削除するためのプロセスの一部を示すフ
ローチャートである。
【図38】状態変数の処理中に用いられるデータ構造を
示す図である。
【図39】状態変数の処理中に用いられるデータ構造を
示す図である。
【図40】状態変数の処理中に用いられるデータ構造を
示す図である。
【図41】状態変数の処理中に用いられるデータ構造を
示す図である。
【図42】状態変数の処理中に用いられるデータ構造を
示す図である。
【符号の説明】
10,12 ページセット 14,15,18,20 ピクチャー 102 CPU 104 RAM 106 ROM 108 EEPROM 110 クロック 112 プリンタインターフェイス 114 ホストインターフェイス 118 通信インターフェイス 120 記憶インターフェイス 122 ディスプレイ/パネルインターフェイス 150 SPDL文書 152 構造プロセッサ 154 CCIデータ構造 158 ピクチャー/ページセットプロローグデータ構
造 162 コンテントプロセッサ 164 イメージャ 166 出力イメージ 200 パーサー 202 ピクチャー/ページセットスタック 220 ピクチャー/ページセットプロローグデータ構
造 240 CCIデータ構造 300 状態変数テーブル 450 デフォルトの状態変数テーブル 460 状態変数テーブル 630 コンテキストスタック 650 コンテキスト辞書ジェネレータデータ構造 680 コンテキストスタックリンクデータ構造 700 ピクチャー/ページセットプロローグデータ構
造 704,710,720,726 コンテキストスタッ
クリンクデータ構造 716,718,732 コンテキスト辞書 734 コンテキストスタックリンクデータ構造 744,756 コンテント辞書 746 コンテキストスタックリンクデータ構造 800 ユーザ辞書リンク構造 810 ユーザ辞書 920,926,932 ユーザ辞書リンク構造 940,942,944 ユーザ辞書
フロントページの続き (56)参考文献 特開 平6−332718(JP,A) 高橋亨,標準ページ記述言語(SPD L)とその動向,情報処理,社団法人情 報処理学会,1992年 6月15日,第33巻 第6号,p.689−697 (58)調査した分野(Int.Cl.7,DB名) G06F 9/45 G06F 3/12 G06F 17/21

Claims (13)

    (57)【特許請求の範囲】
  1. 【請求項1】 階層構造文書の処理中に使用される状態
    変数を管理する方法であって、 文書のある階層レベルが第1階層レベルであるか判定す
    るステップ、 該文書の階層レベルが第1階層レベルであると判定した
    時に、デフォルトの状態変数を持つ状態変数テーブルを
    生成するステップ、 該文書の階層レベルが第1階層レベルより低いか判定す
    るステップ、 該文書の該階層レベルが第1階層レベルより低いと判定
    した時に、直ぐ上の階層レベルの状態変数テーブル内の
    状態変数と等しい状態変数を持つ状態変数テーブルを生
    成するステップ、を有することを特徴とする状態変数管
    理方法。
  2. 【請求項2】 請求項1記載の状態変数管理方法におい
    て、 直ぐ上の階層レベルのコンテント部が処理されている時
    に、パラメータの管理のために用いられる、直ぐ上の階
    層レベルのためのデータ構造が存在するか判定するステ
    ップをさらに有し、 直ぐ上の階層レベルのためのデータ構造は存在しないと
    判定した時に、直ぐ上の階層レベルの状態変数テーブル
    の状態変数と等しい状態変数を持つ状態変数テーブルを
    生成するステップは、直ぐ上の階層レベルの構造部の状
    態変数と等しい状態変数を持つ状態変数テーブルを生成
    し、 直ぐ上の階層レベルのためのデータ構造は存在すると判
    定した時に、直ぐ上の階層レベルの状態変数テーブルの
    状態変数と等しい状態変数を持つ状態変数テーブルを生
    成するステップは、直ぐ上の階層レベルのコンテント部
    の状態変数と等しい状態変数を持つ状態変数テーブルを
    生成する、ことを特徴とする状態変数管理方法。
  3. 【請求項3】 階層構造文書の処理中に使用される状態
    変数を管理する方法であって、 直ぐ上の階層レベルの処理中に、パラメータの管理のた
    めに用いられる、直ぐ 上の階層レベルのためのデータ構
    造が存在するか判定するステップ直ぐ上の階層レベルのためのデータ構造は存在しないと
    判定した時に、直ぐ上の階層レベルの構造部の状態変数
    と等しい状態変数を持つ状態変数テーブルを生成するス
    テップ、 直ぐ上の階層レベルのためのデータ構造は存在すると判
    定した時に、直ぐ上の階層レベルのコンテント部の状態
    変数と等しい状態変数を持つ状態変数テーブルを生成す
    るステップ、を有することを特徴とする状態変数管理方
    法。
  4. 【請求項4】 請求項3記載の状態変数管理方法におい
    て、 文書の構造部が処理される時に構造部状態変数テーブル
    を生成するステップ、 文書のコンテント部の処理中であるか判定するステッ
    プ、 文書のコンテント部の処理中であると判定した時に、構
    造部状態変数テーブル中の状態変数と等しい状態変数を
    持つコンテント部状態変数テーブルを生成するステッ
    プ、をさらに有することを特徴とする状態変数管理方
    法。
  5. 【請求項5】 請求項4記載の状態変数管理方法におい
    て、 文書のコンテント部の処理中であるか判定するステップ
    でコンテント部の処理中であると判定した後に実行され
    る以下のステップ、 コンテント部の処理中にコンテント部状態変数テーブル
    内の状態変数を修正するステップ、 直ぐ上位の構造エレメントがセットアッププロシージャ
    であるか判定するステップ、 直ぐ上位の構造エレメントはセットアッププロシージャ
    であると判定した時に、コンテント部の状態変数の修正
    された状態変数を文書の下位の階層部分のための状態変
    数として用いるステップ、 直ぐ上位の構造エレメントはセットアッププロシージャ
    ではないと判定した時に、構造部状態変数テーブルの状
    態変数を文書の下位の構造部のために使用するステッ
    プ、をさらに有することを特徴とする状態変数管理方
    法。
  6. 【請求項6】 請求項4記載の状態管理方法において、 文書のコンテント部が終了したか判定するステップ、 文書のコンテントは終了したと判定した時に、コンテン
    ト部状態変数テーブルを削除するステップ、を有するこ
    とを特徴とする状態変数管理方法。
  7. 【請求項7】 階層構造文書の処理中に使用される状態
    変数を管理するための方法であって、 文書の構造部を処理するステップ、 構造部状態変数テーブルを生成するステップ、 文書の該構造部に従属したコンテント部を処理するステ
    ップ、 構造部状態変数テーブル内の状態変数と等しい状態変数
    を持つコンテント部状態変数テーブルを生成するステッ
    プ、 文書の該コンテント部が終了したか判定するステップ、 文書の該コンテントは終了したと判定した時に、該構造
    部が状態変数を修正するための構造エレメントを含むか
    判定するステップ、 該構造部は状態変数を修正するための構造エレメントを
    含んでいると判定した時に、コンテント部状態変数テー
    ブル内の状態変数を構造部状態変数テーブルにコピーす
    るステップ、を有することを特徴とする状態変数管理方
    法。
  8. 【請求項8】 階層構造文書処理中に使用される状態変
    数を管理するための方法であって、 文書の第1階層レベルの処理のために用いられる第1の
    状態変数を持つ第1の状態変数テーブルを生成するステ
    ップ、 文書の第1階層レベルの処理時に使用されるもので第1
    の状態変数テーブルを参照する第1のエントリーをスタ
    ックにプッシュするステップ、 文書の後続の階層レベルの処理のために使用される後続
    状態変数を持つ後続状態変数テーブルを生成するステッ
    プ、 文書の後続階層レベルの処理時に使用される後続エント
    リーをスタックにプッシュするステップ、 を有することを特徴とする状態変数管理方法。
  9. 【請求項9】 請求項8記載の状態変数管理方法におい
    て、 第1のエントリーをスタックにプッシュした後に第1の
    状態変数テーブルを使用して該第1の階層レベルを処理
    するステップ、 後続エントリーをスタックにプッシュした後に後続状態
    変数テーブルを使用して該後続の階層レベルを処理する
    ステップ、をさらに有することを特徴とする状態変数管
    理方法。
  10. 【請求項10】 請求項8記載の状態変数管理方法にお
    いて、 処理中の文書の後続階層レベルが終わった時にスタック
    より後続エントリーをポップするステップ、 処理中の文書の第1階層レベルが終わった時にスタック
    より第1エントリーをポップするステップ、をさらに有
    することを特徴とする状態変数管理方法。
  11. 【請求項11】 請求項8記載の状態変数管理方法にお
    いて、 第1階層レベルのコンテント部の処理時に用いられる第
    1コンテント部状態変数テーブルに第1状態変数テーブ
    ルをコピーするステップ、 第1コンテント部状態変数テーブルへの参照を、スタッ
    クの第1エントリーに書き込むステップ、 第1コンテント部状態変数テーブルを使用して第1階層
    レベルのコンテント部を処理するステップ、をさらに有
    することを特徴とする状態変数管理方法。
  12. 【請求項12】 請求項11記載の状態変数管理方法に
    おいて、 第1階層レベルのコンテント部を処理するステップは第
    1コンテント部状態変数テーブル内の状態変数を修正す
    るとともに、 コンテント部を処理するステップの後に実行される次の
    ステップ、 文書の該コンテント部の前に出現した構造エレメント
    が、より低い階層レベルの処理のために用いられる状態
    変数を修正するための構造エレメントであるか判定する
    ステップ、 文書の該コンテント部の前に出現した構造エレメントの
    判定のステップで、文 書の該コンテント部の前に出現し
    た後続エレメントは状態変数を修正するための構造エレ
    メントであると判定した時には、コンテント部状態変数
    テーブルを第1構造部状態変数テーブルへコピーし、そ
    うではないと判定した時には、コンテント部状態変数テ
    ーブルを、第1構造部状態変数テーブルにコピーするこ
    となく削除するステップ、をさらに有することを特徴と
    する状態変数管理方法。
  13. 【請求項13】 請求項8記載の状態変数管理方法にお
    いて、 後続状態変数テーブルを生成するステップは第1状態変
    数と等しい後続状態変数を得るための後続状態変数テー
    ブルを生成することを特徴とする状態変数管理方法。
JP25317894A 1993-11-02 1994-10-19 状態変数管理方法 Expired - Lifetime JP3406706B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/146724 1993-11-02
US08/146,724 US5422992A (en) 1992-04-30 1993-11-02 Method and system to handle state variables in a document processing language

Publications (2)

Publication Number Publication Date
JPH07168722A JPH07168722A (ja) 1995-07-04
JP3406706B2 true JP3406706B2 (ja) 2003-05-12

Family

ID=22518705

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25317894A Expired - Lifetime JP3406706B2 (ja) 1993-11-02 1994-10-19 状態変数管理方法

Country Status (1)

Country Link
JP (1) JP3406706B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000163176A (ja) 1998-11-25 2000-06-16 Canon Inc 周辺機器及び周辺機器制御方法及び周辺機器制御システム及び周辺機器制御プログラムを記憶した記憶媒体

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
高橋亨,標準ページ記述言語(SPDL)とその動向,情報処理,社団法人情報処理学会,1992年 6月15日,第33巻第6号,p.689−697

Also Published As

Publication number Publication date
JPH07168722A (ja) 1995-07-04

Similar Documents

Publication Publication Date Title
US5499329A (en) Method and system to handle context of interpretation in a document processing language
JP3347329B2 (ja) オブジェクト指向印刷インタフェースをもつオペレーティング・システム
US6662270B1 (en) System and method for caching of reusable objects
JP3872558B2 (ja) メモリ削減技法を使用したページ生成のためのフォールバック処理
US5995724A (en) Image process system and process using personalization techniques
US5483629A (en) Method and system to handle dictionaries in a document processing language
US20040003377A1 (en) Converting byte code instructions to a new instruction set
US5319748A (en) Method and apparatus to manage picture and pageset for document processing
US5416896A (en) Command definition dictionary handling and context declaration in a document publishing page description language (PDL)
US5325484A (en) Method and system to handle inclusion of external files into a document processing language
JP3209102B2 (ja) プリントシステム、プリンタドライバ及びプリンタ
US5535318A (en) Debugging system for a hierarchically structured page description language
US5446837A (en) Method and system to process resources in a document processing language
US20050094172A1 (en) Linking font resources in a printing system
JP3406706B2 (ja) 状態変数管理方法
JP3406705B2 (ja) 辞書操作方法
JP2974322B2 (ja) 文字処理装置及び方法
US8064090B2 (en) System and method for processing variable print documents
JP3094712B2 (ja) ページ記述言語処理装置
JP3473287B2 (ja) フォント管理装置
JP3338572B2 (ja) 階層構造化ページ記述言語文書の出力制御方法
JP3605155B2 (ja) 階層構造文書化処理方法
JPH06187108A (ja) 文書プレゼンテーション制御装置
JP2002341853A (ja) 動的コード生成に基づくキャラクタの表示を制御する方法
JP3864520B2 (ja) 印刷処理装置及び印刷処理方法

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090307

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100307

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110307

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120307

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130307

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140307

Year of fee payment: 11

EXPY Cancellation because of completion of term