JP3338572B2 - 階層構造化ページ記述言語文書の出力制御方法 - Google Patents

階層構造化ページ記述言語文書の出力制御方法

Info

Publication number
JP3338572B2
JP3338572B2 JP29075494A JP29075494A JP3338572B2 JP 3338572 B2 JP3338572 B2 JP 3338572B2 JP 29075494 A JP29075494 A JP 29075494A JP 29075494 A JP29075494 A JP 29075494A JP 3338572 B2 JP3338572 B2 JP 3338572B2
Authority
JP
Japan
Prior art keywords
data structure
dictionary
document
breakpoint
zero
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 - Fee Related
Application number
JP29075494A
Other languages
English (en)
Other versions
JPH07210344A (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/180,015 external-priority patent/US5535318A/en
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Publication of JPH07210344A publication Critical patent/JPH07210344A/ja
Application granted granted Critical
Publication of JP3338572B2 publication Critical patent/JP3338572B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、階層構造化ページ記述
言語の分野に係り、特に、階層構造化ページ記述言語文
書の処理システムのための出力制御・デバッグ技術の分
野に関する。
【0002】本出願は米国特許出願第08/146,7
24号(1993年11月2日受理、”Method and S
ystem to Handle State Variables in a Document
Processing Langguage”)及び米国特許出願第08/
119,930号(1993年9月10日受理、”Met
hod and System to Process Resources in a Docum
ent Processing Language”)の一部継続出願であ
り、上記両特許出願は米国特許出願第08/087,5
71号(1993年7月2日受理,”MethodandSyste
m to Handle Context of Interpretation in a Doc
ument Processing Language”)の一部継続出願であ
り、当該米国特許出願第08/087,571号は米国
特許出願第07/931,808号(1992年8月1
1日受理,”A Method and System to Handle Dic
tionary Generation and ContextDeclaration in a
Document Processing Language”)の一部継続出願
であり、当該米国特許出願第07/931,808号は
米国特許出願第07/876,601号(1992年4
月30日受理,”Method and Apparatus to Manage
Picture and Pageset for Document Processin
g”)及び米国特許出願第07/876,251号(19
92年4月30日受理,”Method and Systemto Han
dle Inclusion of External Files into a Document
ProcessingLanguage”)の一部継続出願であり、前
記各米国特許出願は引用により本明細書に組み込まれ
る。
【0003】
【従来の技術】1970年代初期のレーザプリンタの開
発により、文字テキストのみならず一般的なグラフィク
データをも含む文書を高品質かつ低コストで印刷する機
会が与えられた。コンピュータによりプリンタに対する
コマンドを制御する当初の方法は、DIABLO(登録
商標)コマンドシーケンスに使用される種類のコマンド
に似た、いわゆる”エスケープシーケンス”(escape s
equence)コマンドを採用していた。この種のコマンド
は、その前に特殊なバイト、一般にエスケープキャラク
タ(ASCII 27)、を置くことにより、普通のキャラクタ
データと区別された。この方法は、デイジーホイールプ
リンタやドットマトリクスプリンタには問題がないが、
必要条件が変化する可能性のある文書を印刷する目的に
は、あまり適さない。例えば、ニーズの変化や技術の進
歩に従い、出力装置のアップグレードが必要になる。従
来、この種のアップグレードには、既存の出力装置のプ
ログラムコントローラの交換が必要であった。少なくと
も、プリンタの命令を格納した新しいPROMが必要に
なった。しかし、これは一時的に変更する方法としては
実用的ではない。いくつかの印刷ジョブのために新しい
PROMを取り付け、その後に元のPROMまたは別の
新しいPROMと交換しなければならないからである。
このアップグレード方法は無駄が多く、また出力装置の
コントローラの故障の増加を招く。
【0004】エスケープシーケンスコマンドには、この
ような本質的な制約があるので、レーザプリンタ、その
他のページプリンタを制御するための様々な種類の”ペ
ージ記述言語”(PDL)が開発された。これらのレー
ザプリンタのバックワード互換性は、エスケープシーケ
ンスコマンドを受け付ける機能により提供された。現在
用いられているページ記述言語の二つの例が、Adobe
Systems 社のポストスクリプト(PostScript,登録
商標)と、Xerox社のインタープレス(InterPress,
登録商標)である。これ以外にも権利化されたPDLが
いくつか知られている。 従来のページ記述言語のいく
つかは、オブジェクトの処理のためのツールやシンタッ
クスを提供したり、またオペランドスタック類を利用で
きるようにする等によって、在来の標準的なエスケープ
シーケンスに対し様々な改善をもたらした。さらに、こ
れらページ記述言語はスタック指向のプログラミング言
語である。これらの言語はまた、場合によって、プリン
タの利用可能なリソースにフォントやグラフィクイメー
ジを追加する機能のように、プリンタの状態のダイナミ
ックな変更を考慮している。これらの機能のいくつかに
ついて、AdobeSystems社の”PostScript Language
Reference Manual(1985)”及び”PostScript
Language Program Design(1988)”(いずれも
Addison-Wesley Publishing社発行)等の市販参考文
献に述べられている。他のPDLも同様に様々な技術書
及び参考書、例えば Harrington 他著”Interpress,
The Source Book ”(Simon and Schuster 社,1
988)に述べられている。
【0005】一つの標準化ページ記述言語(SPDL)
が提案され、国際標準化機構(ISO)で国際規格とし
て開発中である。この提案は本願発明者もその一寄与者
であるが、現在、ISOの1セクションに草案として提
出されている。この草案は、ISO/IEC DIS 10180 ”In
formation Processing Text-CommunicationStandard
Page Description Language”として知られて、ニ
ューヨークの米国規格協会(ANSI)を通じ入手でき
る。
【0006】SPDLは新しい文書処理言語であるの
で、今現在、SPDLによりエンコードされた階層構造
化文書を処理できる市販のシステムは存在しない。本願
発明者のSPDL文書処理システムの開発を支援するた
めには、開発中のSPDL処理システムをモニターでき
るデバッガーがあると望ましいことが分かった。
【0007】ポストスクリプトページ記述言語用の市販
のデバッグツールは、Adobe社のレーザトーク(Laser
Talk)である。しかしながら、ポストスクリプトはS
PDLのような構造化言語ではないので、レーザトーク
は本発明により遂行されるような構造部分のデバッグを
扱わない。また、レーザトークは、双方向通信チャネル
によりポストスクリプトプリンタと接続されたワークス
テーションを必要とする。
【0008】
【発明が解決しようとする課題】したがって、本発明の
一般的な目的は、SPDLのような階層構造化ページ記
述言語の文書の効率的な処理システムを実現にすること
にあり、本発明の特に目的とするところは、階層構造化
ページ記述言語文書の処理システムの開発を支援するた
めのデバッグ手段を提供することである。本発明の上記
目的及び他の目的は以下の説明から明らかになろう。
【0009】
【課題を解決するための手段】本発明によれば、出力装
置による階層構造化ページ記述言語文書の出力を制御す
る方法を提供するが、この方法は、 (a) 該文書を定義する入力文書データストリームを
受け入れるステップとただし、該データストリームは
1個以上のピクチャー及び1個以上のページセットの少
なくとも一つからなり、該データストリームは該ページ
セット及び該ピクチャーをして該文書の階層レベルを定
義する階層的に順序づけられた構造を有し、該データス
トリームはコンテント部及び構造部を有し、 該ピクチャ
ーのそれぞれは0個以上のプロローグ及び0個以上のピ
クチャーボディからなり、該ページセットのそれぞれは
0個以上のプロローグ、0個以上のページセット、0個
以上のピクチャー、0個以上のページセットボディ及び
0個以上のピクチャーボディからなり、 該ピクチャーボ
ディのそれぞれは該コンテント部を含む0個以上のトー
クンシーケンス及び0個以上のピクチャーからなり、
ページセットボディのそれぞれは0個以上のピクチャ
ー、0個以上のページセット、及び該コンテント部を含
む0個以上のトークンシーケンスからなり、 (b) 以下のステップにより該入力文書データストリ
ームを処理するステップと、 該文書データストリームの
階層レベルの始まりと終わりを判定するステップ、 該文
書データストリームの該階層レベルを管理するステッ
プ、 該階層レベルの少なくとも一つのために一つの一時
的データ構造を生成するステップ、 該構造部及び該コン
テント部の少なくとも一つに応じて該一時的データ構造
を修正するステップ、 該一時的データ構造、該構造部及
び該コンテント部を用いて該出力装置を制御するための
出力装置データを生成する生成するステップ、 (c) 該プロローグデータ構造及び該一時的データ構
造の少なくとも一つに見つかるシステムパラメータを表
示することにより該文書をデバッグするステップと、
有してなる。
【0010】
【作用】本発明のデバッグ方法によれば、SPDLのよ
うな階層構造化ページ記述言語の文書のデバッグを効率
的に行なうことができる。かかるデバッグ方法の実現
は、SPDLのような階層構造化ページ記述言語文書の
処理システムの開発が容易になる等の利益をもたらす。
なお、本発明の上記並びに他の態様による課題を解決す
るための手段及び作用は、以下の詳細な説明によって明
白となろう。
【0011】
【実施例】本発明によれば、例えばISO/IEC DIS 10180
(以下DIS 10180)に定義されたようなページ記述言語
の効率的な処理及びデバッグが可能になる。最近制定さ
れたDIS 10180 によれば、各文書デーストリームは、ペ
ージセットまたはピクチャーのいずれかの構造で与えら
れる。
【0012】ページセットエレメント及びピクチャーエ
レメントは、定義及び宣言コマンドを含む1つのオプシ
ョンのプロローグ(prologue)と、1つのオプションの
ボディ(body)とからなる。ページセットボディ(pages
et body)はゼロ個以上のページセットまたはピクチャー
からなり、ピクチャーボディ(picture body)はゼロ個
以上のピクチャーまたはトークンシーケンス(tokenseq
uence)からなる。特定のイメージを必要なオペレータ
とともに定義するための特殊なトークンまたはコマンド
を含むトークンシーケンスは、”コンテント”(conten
t)を含み、一方、文書の他の要素は”構造”(structu
re)と呼ばれる。構造は、コンテントが適切な出力イメ
ージを生成するための環境をセットアップする。ピクチ
ャーまたはページセットの階層レベル内のプロローグの
影響が及ぶのは、そのピクチャーまたはページセットの
終わりまでである。したがって、文書の階層構造中のピ
クチャーのプロローグは、同レベル以上の構造には影響
を及ぼさないが、下の階層レベルの構造には影響を及ぼ
す。本発明は、1つのスタック及び種々のポインタを使
用して、このような階層ツリー構造をプロローグの範囲
とともに効率的に操作する。
【0013】ツリー接続階層構造(tree-linked hierar
chical structure)は、文書の任意の部分の処理を当該
部分を直接的にアドレッシングして行なうことができ、
また、それより高い階層の部分の処理に、階層ツリーの
他の枝の他のアイテムを処理する必要がないという有利
性がある。すなわち、階層ツリー中に出現する、文書の
ある部分より上の構造定義しか処理する必要がない。こ
のことは、文書の処理効率の向上をもたらし、またさら
に、実際に文書の印刷を開始するに先だって、印刷装置
または表示装置で必要となるリソースの種類を容易に決
定できるようにする。後者のことは、様々な装置による
文書の印刷または表示の速度及び効率を向上させる。
【0014】文書の1つの階層レベルが処理される時に
は常に、この階層レベルに対応した一つのエントリー
(entry)が、ピクチャー/ページセットスタック(pic
ture/pageset stack)にプッシュされる。ピクチャー
/ページセットスタックの各エントリーは、プロローグ
データ構造(prologue data structure)へのポインタ
と、カレント解釈コンテキスト(current context of i
nterpretation、以下”CCI”)データ構造へのポイ
ンタとを持つ。文書のコンテントの処理中には必ずCC
Iデータ構造が用いられる。CCIデータ構造のエント
リーは、文書もしくはファイルの構造の処理中に修正可
能であり、また、コンテントの処理中にも修正可能であ
る。しかしながら、コンテントは、ピクチャー/ページ
セットプロローグデータ構造(picture/pageset prolo
gue data structure)のエントリーを直接的に修正する
ことはできない。
【0015】SPDL文書が処理されていて本発明のデ
バッガーが使用されている場合、構造パーサー(struct
ure parser)及びコンテントパーサー(content pars
er)が改行や復帰改行のような新しい行制御キャラクタ
に出会った時に、本発明のデバッグルーチンが呼び出さ
れる。このデバッガーは、ブレークポイント(breakpoi
nt)の設定、ブレークポイントの削除、文書処理中のシ
ングルステップ・トレーシング、ブレークポイントに出
会う迄の処理、予め決めた行数の実行、文書中のブレー
クポイントの表示といったデバッグ機能が可能である。
本発明は、文書処理システムに用いられるパラメータの
表示、例えば、オペランドスタック(operand stac
k)、コンテキストスタック(context stack)、辞
書、状態変数、定義されたリソース、宣言されたリソー
ス、辞書内の値、文書の現在位置のピクチャーレベルと
ページセットレベル等の構造レベルの表示が可能であ
る。
【0016】以下、添付図面を参照して本発明の実施例
に関して詳細に説明するが、いくつかの図にわたって同
一の参照番号は同一または対応した部分を意味する。
【0017】図1及び図2に、2つの文書と、標準ペー
ジ記述言語(”SPDL”)で定義されたピクチャー及
びページセットのような、それらの構造エレメントが示
されている。SPDLでは、文書を単一のピクチャーま
たは単一のページセットとして定義できる。ページセッ
トは別のページセットまたはピクチャーより構成するこ
とができる。1つのピクチャーは、1ページを超えるこ
とはできないし、あるページから他のページへ跨ること
もできない。図1は4個のページ(最高レベルのピクチ
ャー)を持つ1つのページセットからなる文書を示して
いる。図2はテキストと2つのピクチャーを含む単一ペ
ージの文書を示している。図2の文書は、1ページだけ
であるので、1ページのページセットとして表現するこ
ともできるし、1つのピクチャーとして表現することも
できる。
【0018】図3は、あるSPDL文書の階層構造の説
明図である。図3に示された文書は、その最高位の階層
構造エレメントとしてページセット10を含んでいる。
このページセット10はページセット12とピクチャー
14とからできている。さらに、このページセット12
はピクチャー16,18,20からなっている。例を用
いて階層レベルを定義すると、ページセット12は、ペ
ージセット10より低い階層レベルにあるがピクチャー
(ページ)16,18,20より高い階層レベルにあ
る。各階層エレメントは、普通、それより低いレベルの
階層エレメント及び/または1つ以上のトークンシーケ
ンスエレメントから構成される。トークンシーケンス
は、コンテント(content)を含む特種の構造エレメン
トである。コンテントとは、印刷または表示される文書
の実体である。トークンシーケンスは、例えば、図、テ
キストまたはイメージを記述する。トークンシーケンス
により図、テキストまたはイメージ等のコンテントを表
現することは、非常に高速かつ効率的な文書の出力処理
を可能にし、殊に、文書の一部だけ出力しようとする時
には、出力しないページのトークンシーケンスを処理し
なくてもよいので、高速かつ効率的な処理が可能であ
る。ピクチャー14,16,18,20はそれぞれ、多
分、少なくとも1つのトークンシーケンスエレメントを
持っているであろう。
【0019】図4は、サンプルの2ページ文書の構造エ
レメントの詳細図である。この文書は、プロローグ(pr
ologue)51及びページセットボディ(pageset body)
60を持つ一つのページセット50からなる。プロロー
グは、ピクチャーまたはページセットのための各種パラ
メータを定義するオプションの構造エレメントである。
プロローグ51は、4個の従属要素、すなわちリソース
定義(resource definition)52、辞書ジェネレータ
(dictionary generator)54,辞書ジェネレータ5
6、セットアッププロシージャ(setup procedure)5
8と、それらに対応したトークンシーケンスを含んでい
る。リソース宣言52は、トークンシーケンス53が出
力のために用いられるリソースを定義するコンテント
(例えば文書に用いられたフォームの定義)を含んでい
ることを指示する構造エレメントである。
【0020】辞書ジェネレータ54は、トークンシーケ
ンス55が辞書を定義することを指示する。同様に、辞
書ジェネレータ56は、トークンシーケンス57が辞書
を定義することを指示する。辞書定義は、順序付けられ
た、キー(key)と値(value)のペアを含む。コンテント
中にキーが見つかった時には、辞書から得られた当該キ
ーに対応の値が当該キーの代わりに用いられる。辞書内
の値エントリーは整数、実数、プロシージャまたは他の
任意の型の値にすることができる。辞書ジェネレータに
より生成される辞書は、後述のように読み出し専用辞書
とされ、コンテキスト辞書(context dictionary)とし
て生成される。
【0021】セットアッププロシージャ58は、コンテ
ントの処理時に用いられる種々の状態変数を初期化す
る。代表的な状態変数は、current_color、current_fon
t及びcurrent_position等の変数である。セットアップ
プロシージャは、ユーザ辞書のコンテントを必要に応じ
変更するためにも用いられる。ユーザ辞書(user dict
ionary)は、コンテキスト辞書及びコンテント辞書をサ
ーチして目的のキーが見つからなかった場合に、その後
にサーチされるリード/ライト(read/write)辞書であ
る。
【0022】ページセットボディ60は、ピクチャー6
1,75を持つ2つのページを含む。ピクチャー61は
それ自体のプロローグ62を持つが、このプロローグ6
2はピクチャー61だけのためのパラメータを定義しピ
クチャー75には影響を与えない。プロローグ62は、
コンテキスト宣言(context declaration)63とその
辞書識別子(dictionary identifier)64、辞書ジェ
ネレータ65とそのトークンシーケンス66、セットア
ッププロシージャ67とそのトークンシーケンス68を
含む。ピクチャー61のピクチャーボディ69は、トー
クンシーケンス70,74と、ピクチャーボディ72及
びトークンシーケンス73を持つピクチャー71を含
む。この文書の第2ページは、ピクチャー75を持ち、
このピクチャー75のピクチャーボディ76はトークン
シーケンス77を持つ。
【0023】コンテキスト宣言63は、構造のより高い
階層レベルにおいて定義されるコンテキスト辞書の操作
を指示する。辞書識別子64のような辞書識別子がコン
テキスト宣言の後に続くときは、この辞書識別子がコン
テキスト辞書のサーチ順の変更方法を指示する。コンテ
キスト宣言の後に辞書識別子エレメントが続かないとき
は、定義されている辞書サーチ順は廃棄され、当該階層
レベルに対するコンテキスト辞書のサーチはなされず、
ユーザ辞書及びシステム辞書がコンテキストスタックの
ボトムに入れられる。辞書のサーチ順はコンテキスト辞
書スタックデータ構造を用いて定義されるが、その詳細
は後述する。
【0024】なお、図4はSPDL文書の構造の概念的
な記述だけを示したものであり、実際のSPDL文書は
それとは異なった記述を用いることもあることを理解す
べきである。
【0025】本発明のデバッグ動作の詳細な説明の前
に、諸階層レベル用のシステムパラメータがどのように
保存されるかを知る必要がある。新しい階層レベル(例
えばピクチャーまたはページセット構造エレメント)に
出会うたびに、図5に示したピクチャー/ページセット
スタック202に一つのエントリーが格納される。ピク
チャー/ページセットスタック202の各エントリー
は、プロローグデータ構造へのポインタもしくは参照
と、カレント解釈コンテキスト(current context ofin
terpretation;CCI)データ構造へのポインタもしく
は参照を含む。
【0026】例えば、ピクチャー/ページセットスタッ
ク202の2番目のエントリー204は、プロローグデ
ータ構造へのポインタ206と、CCIデータ構造への
ポインタ208を含む。プロローグデータ構造へのポイ
ンタ206は、ピクチャー/ページセットプロローグデ
ータ構造(以下、プロローグデータ構造と呼ぶ)220
を指す。CCIデータ構造へのポインタ208は、CC
Iデータ構造240を指す。スタック202のボトムレ
ベルのエントリー210は、より高い階層レベルのプロ
ローグデータ構造(図示されていない)を指す、プロロ
ーグデータ構造へのポインタ212と、ヌルを指す、C
CIデータ構造へのポインタ214を持っている。
【0027】プロローグデータ構造は階層レベル毎に固
有のシステムパラメータの集合を持つことを可能にす
る。次の階層レベルが処理される時に、その階層レベル
自体のプロローグデータ構造は、初め、直上階層レベル
のプロローグデータ構造の値を持っている。このよう
に、高い階層レベルは、それより低い階層レベルに影響
されない。
【0028】CCIデータ構造は、文書のコンテント部
(トークンシーケンスエレメント)の処理時に生成され
て使用される。CCIデータ構造のエントリーはプロロ
ーグデータ構造と対応したエントリーを有し、文書の一
つのコンテント部に出会った時に、プロローグデータ構
造の対応部と同じ値を持つ一つのCCIデータ構造が生
成される。例えば、リソース宣言へのポインタ242は
プロローグデータ構造のポインタ226に対応し、コン
テキストスタックへのポインタ244はコンテキスト宣
言へのポインタ227に対応し、オペランド(operan
d)スタックへのポインタ246は、オペランドスタッ
クがコンテント処理時にだけ使用されるので、プロロー
グデータ構造内に対応したエントリーを持たず、状態変
数テーブルへのポインタ248はポインタ229に対応
し、マシン状態へのポインタ250はポインタ230に
対応し、ユーザ辞書リンク(link)へのポインタ252
はポインタ231に対応する。
【0029】プロローグデータ構造220において、ペ
ージセットレベル(pageset_level)221とピクチャー
レベル(picture_level)222 は、文書中の現在(curr
ent)のページセット及びピクチャーの階層レベルを管理
するために用いられる。
【0030】SPDLは外部エンティティ(entity)の
文書への取り込み(inclusion)を考慮している。外部
エンティティとは、例えば、グラフ、イメージ、あるい
は他の文書である。外部宣言へのポインタ223は、図
6に示されている外部宣言データ構造(external decla
ration data structure)300を指す。この外部宣言
データ構造300は、それが生成されたページセットレ
ベル301及びピクチャーレベル302、外部宣言を指
名する識別子303、外部宣言の種類(例えばグラフィ
ックス)を定義する構造種類304、外部宣言を定義す
る実際的情報を含む外部データへのポインタ305、次
の外部宣言データ構造へのポインタ306を含む。
【0031】一つの文書中に複数の外部宣言を持つこと
ができる。したがって、複数の外部宣言データ構造が必
要になるかもしれないにもかかわらず、プロローグデー
タ構造は外部宣言へのポインタを一つしか持たない。よ
って、各外部宣言データ構造は次の外部宣言データ構造
へのポインタを持っており、同ポインタは次の外部宣言
データ構造がない場合にはヌルを指す。新たな外部宣言
に出会った時に、新しい外部宣言データ構造が生成され
て外部宣言へのポインタ223により指し示され、ま
た、この新たに生成された外部宣言データ構造の”nex
t”ポインタは既に存在する外部宣言データ構造を指
す。この種の追加の外部宣言のための処理は、外部宣言
データ構造と同様のリンクリストデータ構造(linked l
ist data structure)を用いたプロローグデータ構造及
びCCIデータ構造内の他のエレメントの処理と類似し
ている。
【0032】図5におけるプロローグデータ構造220
のリソース定義へのポインタ225は、図7に示された
ようなリソース定義データ構造310を指すことができ
る。リソース定義データ構造310は、pageset_level
312とpicture_level314のエントリーを含む。pag
eset_level312及びpicture_level314は、リソー
スが定義されたページセット階層レベル及びピクチャー
階層レベルを示す。該pageset_levelまたはpicture_lev
elが終わった時に、SPDLの階層構造は該リソース定
義データ構造の削除を許す。
【0033】リソース定義データ構造のエントリー31
6はSPDL IDを含んでる。このSPDL ID31
6は、リソース定義データ構造310がSPDLリソー
スを定義することを示す。リソースID318は定義さ
れるリソースの名前を含んでいる。リソース種類320
は、定義されるリソースの種類を示す。本明細書作成の
時点において、SPDLに許された代表的なリソース種
類にはフォントオブジェクト(font object)、グリフイ
ンデックスマップ(glyph index map)、フォントインデ
ックスマップ(font index map)、カラースペース(col
or space)、データソース、フィルタ、パターン及びフ
ォームがある。本発明においては、他のリソース種類の
追加を考慮している。
【0034】機能ID322はSPDLに要求される機
能識別子を含んでいる。この機能識別子は、あるリソー
スが定義されるときには”DEFINED”となり、該リソー
スが削除されるときには”UNDEFINED”となる。
【0035】リソース仕様へのポインタ324はリソー
ス仕様(resource specification)328を指す。この
リソース仕様328は、リソースを実際的に定義もしく
は記述する情報を含んでいる。リソース仕様に関する詳
細な説明は、本発明の理解には必要でない。しかし、本
好適実施例におけるリソース仕様は、分かっているSP
DLの必要条件に従っている。
【0036】リソース定義データ構造へのポインタ32
6は、リソース定義データ構造310と同じ構造のリソ
ース定義データ構造を指す。これにより、一つのSPD
L文書内で複数のリソース定義コマンドを使用可能にな
る。最初のリソース定義データ構造が定義された後、新
しいリソース定義データ構造がプロローグデータ構造に
よって直接指示され、この新リソース定義データ構造の
次リソース定義データ構造へのポインタ116が前に生
成されたリソース定義データ構造を指すことになる。
【0037】一つのリソースが定義された後、そのリソ
ースが使用可能であることを宣言する必要がある。この
宣言は、図8に示したリソース宣言データ構造によって
為される。宣言することのできるリソースは、リソース
定義データ構造を用いて既に定義されたリソースであ
る。システムにダウンロードされているリソースも宣言
可能である。
【0038】図8に示したリソース宣言データ構造35
0は、宣言されたリソースを管理するために利用され
る。SPDL文書内でリソース定義コマンドによりリソ
ースが定義されされた後、そのリソースを使用できるよ
うにするには、リソース宣言コマンドを発行して該リソ
ースが宣言されなければならない。このリソース宣言デ
ータ構造350を、プロローグデータ構造220のリソ
ース宣言へのポインタ226及び/またはCCIデータ
構造240のリソース宣言へのポインタ242によって
指示することができる。リソース宣言データ構造350
は、該リソースが宣言されたページセットレベル及びピ
クチャーレベルを示すpageset_level352及びpicture
_level354を含む。
【0039】内部(internal)ID356は、SPDL
文書内のトークンシーケンスのようなコンテントによっ
て、リソースを識別するために用いられる。リソースI
D358及びリソース種類360は、前に生成されたソ
ース定義データ構造により指されたリソース仕様328
を識別するために使用される。リソース仕様へのポイン
タ362はリソース仕様328を指す。次リソース宣言
データ構造へのポインタ364は、次のリソース宣言デ
ータ構造があればそれを指すが、それがなければヌルを
指す。
【0040】SPDL文書が処理されている時に、該文
書に用いられる値及びプロシージャを見つけるため4種
の辞書、すなわち、システム辞書、ユーザ辞書、コンテ
キスト辞書及びトークンシーケンスにより生成されたコ
ンテント辞書が用いられる。辞書は、順序付けられた、
キー及び値に対応したオブジェクトのペアの集合であ
る。文書のSPDLコンテントにおいてキーに出会った
時には、このキーの代えて辞書内の値が用いられる。辞
書の値の部分は任意の種類の値でよく、例えば整数、実
数、プロシージャ、その他種類のオブジェクト等であ
る。
【0041】システム辞書は、SPDLコンテントの全
てのオペレータをキーフィールドに記憶し、それに対応
したプロシージャを値フィールドに記憶している。例え
ば、SPDLコンテント中で”add”に出会った時に
は、addに対応した値がシステム辞書において検索さ
れ、そしてadd に対応したプロシージャは、2つの値が
オペランドスタックよりポップされて、その種類がチェ
ックされ、加算され、その結果がオペランドスタックへ
再びプッシュされることを指示する。システム辞書は、
ユーザやSPDL文書によって修正することができない
もので、SPDL文書を処理するシステムの一部分であ
る。
【0042】2番目の種類の辞書はユーザ辞書である。
ユーザ辞書は、初めは空であるが、トークンシーケンス
エレメントによってエントリーの追加及び修正が可能で
ある。ユーザ辞書は、情報の書き込みが可能であるだけ
でなく、書き込み後にユーザによって変更可能である。
ユーザ辞書は、エントリーをユーザが修正可能な辞書
(すなわちリード/ライト辞書)であり、かつ、ユーザ
がオペレータ”dict”を使用して生成する必要のない辞
書である。ユーザ辞書内の値は、どのようなタイプの値
でもよく、整数、実数、プロシージャを包含する。概念
的には、ユーザ辞書は1個だけである。しかし、ある階
層レベルが修正した辞書を必要とするのに対し、他の階
層レベルが、その修正した辞書を使用しない場合、シス
テムは、様々な階層レベルのために同一のキーに対し異
なった値を記憶しておかなければならないので、ユーザ
辞書内に様々な階層レベルのための様々なエントリーが
存在することになろう。
【0043】次の種類の辞書はコンテキスト辞書であ
る。システム辞書とユーザ辞書が1個しかないのに対
し、各階層レベル毎に及び同一の階層レベル内に多数の
コンテキスト辞書が存在し得る。コンテキスト辞書は読
み出し専用辞書である。すなわち、コンテキスト辞書は
一旦定義されると、ユーザによって修正することはでき
ない。コンテキスト辞書は、辞書ジェネレータ構造エレ
メント下のトークンシーケンスにより生成される。コン
テキスト辞書の生成に関するより詳細な説明は、同一出
願人の継続中の米国特許出願第07/931,808号
(1992年8月11日受理、”Method and System
to Handle Dictionary Generator andContextDecl
aration in Standard Page Description Languag
e”)に見ることができ、同特許出願の開示内容は引用
により本明細書に組み込まれる。
【0044】最後の種類の辞書はコンテント辞書で、ユ
ーザにより定義される辞書であり、またトークンシーケ
ンスエレメントにより定義される。コンテント辞書は、
生成時にはリード/ライト辞書であり、直上位の構造エ
レメントの範囲(scope)内でのみ有効である。
【0045】サーチされる辞書内のキーは、様々な辞書
のいずれにおいても見つかる可能性がある。そこで、本
発明によれば、様々な辞書についてキーをサーチするた
めのサーチ順が採用され、これは図13に示すような”
コンテキストスタック”(context stack)とよばれる
ものによって定義される。コンテキストスタックは、ト
ップよりサーチされる。コンテキスト辞書及びコンテン
ト辞書は最初にサーチすべき辞書である。ユーザ辞書は
同スタックのボトムの次のものであり、システム辞書は
ボトムに置かれる。ユーザ辞書及びシステム辞書をトッ
プへプッシュすることによりコンテキスト辞書の構成を
修正する方法がある。
【0046】辞書内のキーをサーチする時には、コンテ
キスト辞書及びコンテント辞書をサーチすべきか判定す
るため、まずCCIデータ構造中のコンテキストスタッ
クへのポインタが調べられる。下に説明するコンテキス
トスタックリンクデータ構造(context stack link dat
a structure)により指し示されたコンテキスト辞書ま
たはコンテント辞書に当該キーが見つからないときは、
CCIデータ構造中のユーザ辞書リンク構造(user dic
tionary link structure)へのポインタを調べることに
よりユーザ辞書がサーチされ、当該キーがユーザ辞書に
存在するか判定する。当該キーがコンテキスト辞書また
はコンテント辞書のいずれにも、またユーザ辞書にも見
つからない場合、次にシステム辞書がサーチされる。シ
ステム辞書は1つだけであって、しかも修正されないの
で、プロローグデータ構造またはCCIデータ構造にシ
ステム辞書へのポインタを備える必要はない。システム
辞書は常に同一ロケーションに見つかるので、文書の各
階層レベル毎にシステム辞書のロケーションを管理する
必要はない。
【0047】コンテキストスタックは、4種類の辞書の
サーチ順を定義するスタックと見做される。しかし、コ
ンテキストスタックは、スタックなる用語の普通の意味
でのスタックではない。コンテキストスタックなる用語
は、辞書に対するサーチ順要件の説明を簡単にするため
に用いられている。コンテキストスタックにおいて、ボ
トムのエントリーは常に同じであって、システム辞書の
アドレスを指す。コンテキストスタックの次に高いエン
トリーはユーザ辞書リンク構造であり、これはピクチャ
/ページセットプロローグデータ構造内のポインタ23
1またはCCIデータ構造内のポインタ252に対応す
る。ユーザ辞書リンク構造は次のユーザ辞書リンク構造
を指すことができる。コンテキストスタックの最も上の
エントリーは、コンテキストスタックリンクデータ構造
により指示されるコンテキスト辞書及びコンテント辞書
である。コンテキストスタックの中央のエレメントであ
るユーザ辞書リンク構造へのポインタは、それを修正し
て用いることにより、コンテキストスタック内の上側の
コンテキスト辞書及びコンテント辞書のサーチ順に影響
を及ぼさずに、ユーザ辞書のエントリーを変更すること
ができるので、”コンテキストスタック”は必ずしも一
般的なスタックではないが、概念的にはスタック類似の
構造のものである。
【0048】ここで、文書の処理時に使用されるCCI
データ構造及びピクチャー/ページセットプロローグデ
ータ構造により用いられ様々な辞書について見ると、3
つのレベルの辞書がある。最高の辞書レベルにコンテキ
スト辞書及びコンテント辞書があり、これらはトークン
シーケンスによってユーザに定義される辞書である。コ
ンテキスト辞書は読み出し専用辞書である。したがっ
て、コンテキスト辞書は、生成された後は修正すること
ができない。コンテキスト辞書は、それが生成された階
層レベルでのみ使用される。コンテキスト辞書及びコン
テント辞書は、最高の辞書レベルにあるので、キーに出
会った時に最初にサーチされる。そのキーがコンテキス
ト辞書またはコンテント辞書の1つで見つかれば、それ
以上の辞書サーチは不要である。そのキーがコンテキス
ト辞書でもコンテント辞書でも見つからないときは、次
に、そのキーについてユーザ辞書がサーチされる。その
キーがユーザ辞書で見つからないと、最後にシステム辞
書がサーチされる。
【0049】コンテキスト辞書及びコンテント辞書とそ
のサーチ順の操作に関し説明する前に、コンテキスト辞
書の生成プロセスについて簡単に説明する。辞書ジェネ
レータ構造エレメント、例えば図4に示した文書の辞書
ジェネレータ54に出会った時に、同辞書ジェネレータ
下のトークンシーケンス55は生成すべき1つの辞書を
定義し、構造プロセッサ(structure processor)が、
その辞書をコンテキスト辞書に分類して、図10に示す
ようなコンテキスト辞書ジェネレータデータ構造(cont
ext dictionary generator data structure)400を
生成する。このコンテキスト辞書ジェネレータデータ構
造は、pageset_level402、picture_level404、当
該辞書の名前に相当する辞書識別子406、辞書サイズ
408、辞書データ構造へのポインタ410、及び次の
辞書ジェネレータへのポインタ412に関する情報を記
憶したリンクリスト(linked list)である。この辞書
ジェネレータデータ構造へのポインタ228は、図5の
ピクチャー/ページセットプロローグデータ構造220
内にある。
【0050】新たに生成された辞書ジェネレータデータ
構造中のエントリー”next”412は、2個以上のコン
テキスト辞書が生成されるならば、前に生成された一つ
の辞書ジェネレータデータ構造を指し示す。こうするこ
とで、新たに生成された辞書ジェネレータデータ構造
は、それ以前に生成された辞書ジェネレータデータ構造
の前に挿入され、後には挿入されない。
【0051】辞書ジェネレータによりコンテキスト辞書
が生成された後、このコンテキスト辞書は、コンテキス
トスタックリンクデータ構造を用いてコンテキストスタ
ックのトップに置かれる。コンテキスト辞書及びコンテ
ント辞書のサーチ順は修正することができる。コンテキ
スト宣言は、コンテキスト辞書のサーチ順を定義しまた
は修正する。また、トークンシーケンス中に、コンテキ
ストスタックを操作可能なオペレータ(operator)があ
る。コンテキスト辞書に対するサーチ順は、コンテキス
トスタックリンクデータ構造(その一例が図9に示され
ている)によって定義される。コンテキストスタックリ
ンクデータ構造680は、図5に示したピクチャー/ペ
ージセットプロローグデータ構造220のコンテキスト
宣言へのポインタ227及び/またはCCIデータ構造
240のコンテキストスタックへのポインタ242によ
って、指示される。このコンテキスト宣言へのポインタ
とコンテキストスタックへのポインタとは、名前が違う
けれども、同様の目的をかなえるもので、CCIデータ
構造の初期生成時には同一であり、また図9に示したも
のと同じ基本構造を有する。
【0052】コンテキストスタックリンクデータ構造
は、pageset_level382及びpicture_level384(例
えば該データ構造が生成されたレベル)、辞書の名前で
ある辞書識別子386、辞書データ構造392のアドレ
スを格納する辞書へのポインタ388、ヌルまたは他の
コンテキストスタックリンクデータ構造を指すエントリ
ー”next”390を含む。コンテキストスタック内に2
つ以上のコンテキスト辞書がある場合、エントリー”ne
xt”390は、次の辞書のためのコンテキストスタック
リンクデータ構造を指す。図9のコンテキストスタック
リンクデータ構造に関するより完全な説明は、同一出願
人による係属中の米国特許出願第07/931,808
号(”Method and System to Handle Dictionary
Generatorand Context Declaration in Standard
Page Description Language”,1992年8月11
日受理)に見ることができ、当該米国特許出願は引用に
より本明細書に組み込まれる。
【0053】図5に示したプロローグデータ構造220
内の状態変数テーブルへのポインタ229は、図11に
示した状態変数テーブル420のような状態変数テーブ
ルを指す。このテーブル内の状態変数は、コンテントの
処理のためのグラフィック変数等の各種パラメータを定
義するために用いられる。本発明を実際に実施する場合
には、おそらく、図11の状態変数テーブル内に示され
た状態変数よりも多数の状態変数を記憶することになろ
う。
【0054】図12に示したユーザ辞書リンク構造(us
er dictionary link structure)450は、図9のプロ
ローグデータ構造220のユーザ辞書リンクへのポイン
タ231、及び/または、CCIデータ構造のユーザ辞
書リンクへのポインタ252により指し示めされる。こ
のユーザ辞書リンク構造は、pageset_level452、pic
ture_level454、ユーザ辞書へのポインタ456、及
び、別のユーザ辞書リンク構造かヌルを指すエントリ
ー”next”を含む。ユーザ辞書、例えばユーザ辞書46
0は、2つのカラムつまりキー(key)カラム462と
値カラム464を持っている点でコンテキスト辞書及び
システム辞書に似ている。ユーザ辞書は、任意のトーク
ンシーケンスにより修正でき、またセットアッププロシ
ージャ、例えば図4のプロローグ51内のトークンシー
ケンス59を持つセットアッププロシージャ58によ
り、内部にエントリーを設定することができる。
【0055】プロローグデータ構造中のマシン状態への
ポインタ230は、SPDL文書を処理するバーチャル
マシンの状態を管理するデータ構造を指す。プロローグ
データ構造220中の初期変換(initial transformati
on)232は、特定の階層レベルの変換を、それがある
ならば管理する。
【0056】前述のように、文書の一つのコンテント部
が処理されている時に、プロローグデータ構造の値(オ
ペランドスタックへのポインタ246を除く)をコピー
された一つのCCIデータ構造が生成される。該コンテ
ント部が処理されている時に、該CCIデータ構造によ
り指し示されたデータ構造を操作及び修正することがで
きる。文書の該コンテント部の処理が終了すると、該C
CIデータ構造240とそれに対応したデータ構造は削
除できるので、プロローグデータ構造220中のポイン
タにより参照された値は修正されない。CCIデータ構
造の働きに関するより詳細な説明は、同一出願人の係属
中の米国特許出願第08/146,724号(1993
年11月2日受理、”Method and System to Handle
StateVariables in a Document Processing Lang
uage”)に見ることができ、当該米国出願は引用するこ
とによって本明細書に組み込まれる。
【0057】図14はネットワークとそれに接続された
各種装置を示しており、それら装置のいずれも本発明を
使用できる。ネットワーク514に、プリンタコントロ
ーラ506とプリントエンジン504を有するプリンタ
502が接続されている。ワークステーション508
も、プリンタ512に接続されたプリントサーバー51
0とともに、ネットワーク514に接続されている。
【0058】図15はワークステーション508の構成
を示す。ワークステーション508はCPU550、R
AM552、ROM554、キーボード558及びマウ
ス560と接続された入力コントローラ556を含む。
プリントエンジンインターフェイス564がプリントエ
ンジン762に直接接続され、同エンジンはプリントエ
ンジンインターフェイス564により送られて来るラス
タライズされたイメージデータのビデオ・制御信号を受
信する。ワークステーション508はさらに、ハードデ
ィスク568及びフロッピードライブ570に接続され
たディスクコントローラ572、ネットワーク514
(例えばEthernet,登録商標)との接続のための通信
コントローラ574、外部ハードディスク580に例え
ばSCSIバスにより接続されかつプリンタ578に例
えばRS−232ケーブルにより接続されたI/Oコン
トローラ576を含む。ワークステーション508は、
CRT584と接続されたディスプレイコントローラ5
82も含む。システムバス566はワークステーション
内部の各エレメントを接続する。本発明を実施するコン
ピュータプログラムは、図15に示された記憶デバイス
のどれに格納してもよい。
【0059】処理し印刷すべきSPDLファイルは、ワ
ークステーション508によって直接作成することがで
きるし、あるいは、まずワークステーション508によ
り作成してから例えばハードディスク508もしくは5
80、フロッピードライブ570またはRAM552の
いずれかに格納することができる。その後、このSPD
LファイルをCPU550により印刷処理することがで
き、SPDLファイルをラスタライズされたイメージデ
ータへ加工し、このイメージデータはバス566を介し
てプリントエンジンインターフェイス564へ送られ、
最終的にビデオ制御信号の形でプリントエンジン562
へ送られることにより同イメージがプリントエンジン5
62により印刷される。デバッグプロセスもCPU55
0で実行することができる。
【0060】プリントサーバー510はワークステーシ
ョン508と同様な基本構成にすることができる。な
お、処理されるSPDL文書をポストスクリプトや、そ
の他のプリンタ言語へ変換することも可能である。
【0061】図16は、SPDL処理及びデバッグ装置
の概念的なシステム構成図を示す。システムに対するユ
ーザ入力600は、一つのSPDL文書と対話的なデバ
ッグコマンドの両方を含む。デバッグコマンド・ライン
パーサー(line parser)604は、SPDLプロセス
のデバッグ中にデバッグプロンプトに続く入力を解析を
する。デバッグ機能群608は、デバッグのために必要
とされる各種機能を扱う。
【0062】前述のように、SPDLは構造エレメント
とコンテントエレメントの両方から構成されている。構
造エレメントは、構造プロセッサパーサー(structure
processor parser)606(以下、構造パーサーと呼
ぶ)によって解析された後に処理される。構造パーサー
606がコンテントエレメントに出会った時に、コンテ
ントプロセッサパーサー(content processor parser)
602(以下、コンテントパーサーと呼ぶ)が、そのコ
ンテントを解析する。本発明により遂行される解析機能
は全て、公知の一般的な解析機構を使用して遂行ができ
る。
【0063】本発明のデバッガは、構造パーサー606
またはコンテントパーサー602のいずれかが、改行や
復帰改行といった新しい行制御キャラクタに出会った時
に、呼び出される。ユーザがデバッグプロンプトに対し
てデバッグコマンドを入力した時に、デバッグコマンド
・ラインパーサー604がデバッグ機能群608を呼び
出す。システムの出力、すなわち処理後の文書やシステ
ムパラメータを含むデバッグ結果等を、出力610で表
示あるいは印刷することができる。文書が処理される時
に、文書は、プリンタ、ファクシミリ装置、CRTやL
CD等のディスプレイのような出力装置によってユーザ
に出力するための処理がなされる。デバッグ結果及び/
または処理後文書は出力装置により表示することができ
る。
【0064】デバッグ機能群608は、様々なプロセス
を呼び出してシステムパラメータを調べ、ユーザに対し
必要な情報を表示する。ユーザに必要とされる情報は、
コンテキストスタック辞書612や、オペランドスタッ
ク616、マシン状態618の中に、及びプロローグま
たはCCIデータ構造620に格納されている他のエレ
メントより、見つけることができる。図16に示したデ
ータは、図5に示したデータ構造に対応している。
【0065】重要なデバッグ機能は、ブレークポイント
に関するものである。ユーザは、処理を停止させたいブ
レークポイントの設定あるいはブレークポイントの削除
を要求できる。これらのルーチンは、ブレークポイント
テーブル622を利用するブレークポイントテーブル管
理ルーチン616に格納されている。
【0066】図17は本発明の代表的な動作を示してい
る。本発明は新しい行制御キャラクタそれぞれの後でデ
バッガを呼び出すので、line#1の後でデバッグプ
ロンプトが表示される。なお、line#1はスペース
が足りないため2行に表わされていること、DTDの後
に新たな行制御キャラクタはないが、DTDの後の情報
は次行へ及ぶことに注意されたい。
【0067】デバッグプロンプトの表示後、ユーザはコ
マンド”set to 10”を入力する。そうすると、システ
ムは最初のブレークポイントが行10に設定されたこと
を表示する。システムのユーザは、ひき続き、同様のや
り方で行5と行15にブレークポイントを追加する。行
15に対するブレークポイントを入力した後、デバッグ
プロンプトに対しユーザがコマンド”display break po
int table”を入力すると、それまでに入力された3個
のブレークポイントが表示される。
【0068】ブレークポイントテーブルの表示後、ユー
ザが”go”とタイプすると、これはDPDL文書を行5
の最初のブレークポイントまで処理させる。行5の後
で、デバッグプロンプトが表示され、ユーザはシステム
パラメータのどれかの表示を要求するか、あるいはデバ
ッグシステムの機能コマンドを入力するか、選択するこ
とができる。しかし、ユーザがコマンド”go”を入力す
るので、システムは行6から行10まで処理して行10
の処理後にデバッグプロンプトを表示する。このデバッ
グプロンプトに対し、ユーザが再び”go”を入力し、行
11から行15が実行される。
【0069】図18は、ユーザにより入力されたブレー
クポイントを管理するために利用されるブレークポイン
トリンクリストデータ構造(break point linked list
datastructure)630を示している。このブレークポ
イントリンクリストデータ構造は、ポインタ632によ
り指し示される。このデータ構造は3個のエントリーを
持っている。すなわち、ブレークポイントがどの行に設
定されているかを示す行番号634と、何番目のブレー
クポイントであるかを示すエントリー番号636、それ
に、次のブレークポイントリンクリストを指すか、次の
ブレークポイントリンクリストがないときにはヌルを指
すポインタ638とである。
【0070】図19は、図17に示した例において実行
される処理に対応した一続きのブレークポイントリンク
リストデータ構造を示している。ポインタ642はブレ
ークポイント先頭ポインタであり、かならず最も後に入
力されたブレークポイントリンクリストを指す。ブレー
クポイント先頭ポインタ642はブレークポイントリン
クリスト640を指し、このブレークポイントリンクリ
スト640は行番号15にブレークポイントが設定され
ていて、そのブレークポイントがブレークポイント番号
3であることを示している。ブレークポイントリンクリ
スト640はブレークポイントリンクリスト650を指
し、該ブレークポイントリンクリスト650は行5にブ
レークポイントが設定されていて、そのブレークポイン
トが2番目に入力されたブレークポイントであることを
示している。ブレークポイントリンクリスト650はブ
レークポイントリンクリスト660を指し、該ブレーク
ポイントリンクリストは行10にブレークポイントが設
定されていて、そのブレークポイントが最初のブレーク
ポイントであることを示している。
【0071】デバッグコマンドのいくつかにより実行さ
れる処理の詳細を述べる前に、本発明の各種デバッグコ
マンドについて表1と関連して簡単に説明する。
【0072】
【表1】
【0073】さて、デバッグコマンドについて簡単に説
明する。SET AT コマンドは特定の行にブレークポイン
トを設定するために使われる。DELETE コマンドは特定
のブレークポイント番号を削除するために用いられる。
DISPLAY BREAK PONTTABLEコマンドは設定されているブ
レークポイント全部を表示する。GO コマンドはブレー
クポイントに出会うまでSPDL文書を処理させる。ST
EP コマンドはSPDL文書の処理のシングルステップ
トレースを行なわせる。このシングルステップトレース
は本発明ではデフォルトのモードであって、図17に示
すように、デバッガがアクティブの時に文書の最初の行
が処理された後、デバッグプロンプトが表示される。EX
ECUTE 〈N〉コマンドは、SPDL文書のN行を処理さ
せ、その後にデバッグプロンプトを表示させるために用
いられる。QUIT コマンドはデバッガから抜け出すため
に用いられる。
【0074】デバッグ表示機能に関しては、DISPLAY OP
ERAND STACK コマンドはオペランドスタックにプッシュ
されているオブジェクト全部を表示する。DISPLAYCONTE
XT STACK コマンドはコンテキストスタック上の全辞書
の名前を、それが得られるときに表示する。名前が得ら
れないときには、”-dictionary-”が表示される。コン
テキストスタック上に辞書がない場合、コンテキストス
タックが空である旨のメッセージが表示される。DISPLA
Y 〈name〉 コマンドは入力されたキーに対応したコン
テキストスタックの辞書内の値を表示するために用いら
れる。辞書内にキーが見つからないときには、警告メッ
セージが表示される。DISPLAYDICTIONARY コマンドは特
定の辞書内の全ての<キー,値>ペアを表示する。DISP
LAY STATE VARIABLES コマンドはカレント解釈コンテキ
スト内の状態変数を表示する。DISPLAY DEFINED RESOUR
CES コマンドは定義済みのリソースを表示する。DISPLA
Y DECLARED RESOURCES コマンドはリソース定義で定義
済みであり、かつリソース宣言で宣言済みのリソースを
表示する。PRINT VALUE IN DICTIONARY コマンドは入力
キーと辞書名を取得し、それに対応した値を表示する。
DISPLAY STRUCTURE LEVEL コマンドはページセット/ピ
クチャースタックのページセットレベルとピクチャーレ
ベルを表示する。
【0075】さて、システム機能コマンドの実行中に遂
行されるプロセスを示す図20乃至図24のフローチャ
ートについて説明する。図20はシングルステップ処理
のフローチャートを示している。ステップ670はSP
DLファイル中の次の1行を処理し、そしてステップ6
72はデバッグコマンド・ラインパーサーへ制御を戻
す。ステップ672で、デバッグプロンプトが表示さ
れ、ユーザはデバッグコマンドのどれでも入力すること
ができる。
【0076】図21は、SET BREAK POINT コマンドが入
力された時に遂行されるプロセスを示している。ステッ
プ702において、ブレークポイントのための新たな行
番号が入力される。ステップ704は新たなブレークポ
イントリンクリストデータ構造を生成するが、このデー
タ構造はポインタPTTRにより指される。変数BPT ENTRY
NO は、何個のブレークポイントが設定済みであるかを
示すグローバル変数である。この変数は、システムの初
期化時あるいは電源投入時に、0に初期化される。ステ
ップ706は、BPT ENTRY NO が0より大きいか判定す
る。0より大きくなければ、他のブレークポイントは設
定されていないので、ステップ708において、新たに
生成されたブレークポイントリンクリストデータ構造内
の”next”エントリーはヌルに設定される。ステップ7
06でBPT ENTRY NO が0より大きいと判定したとき
は、1個以上のブレークポイントが設定済みであるの
で、新たに生成されたブレークポイントリンクリストデ
ータ構造内の”next”エントリーは、前のブレークポイ
ント先頭ポインタを指すよう設定される。そして、ステ
ップ712は、一つの新たなブレークポインタが入力さ
れたので、変数BPT ENTRY NO を1だけインクリメント
する。
【0077】次にステップ714は、新たに生成された
ブレークポイントリンクリストデータ構造内の行番号エ
ントリーを、入力された新たな行番号に等しい値に設定
する。ステップ714はまた、新たに生成されたブレー
クポイントリンクリストデータのエントリー番号を、変
数 BPT ENTRY NO と等しい値に設定する。次にステップ
716は、ブレークポイント先頭ポインタを、新たに生
成されたブレークポイントリンクリストデータ構造を指
すポインタと等しい値に設定することにより、新たに生
成されたブレークポイントリンクリストデータ構造を、
ブレークポイント先頭ポインタによって最初に指し示さ
れるデータ構造として挿入する。そしてステップ718
は制御をデバッグコマンド・ラインパーサーへ戻す。
【0078】図22は、DELETE BREAK POINT コマンド
に対して遂行される処理を示している。図22におい
て、ステップ750は削除すべきブレークポイントのエ
ントリー番号を入力する。次にステップ752は一時的
ポインタBPTを、現ブレークポイント先頭ポインタと等
しい値に設定する。つぎに、ブレークポイントリンクリ
ストをトレースして、入力されたブレークポイントエン
トリー番号と一致するエントリー番号を持つ特定のブレ
ークポイントリストを見つけるために、ステップ754
〜764が実行される。ステップ754は、BPPがヌル
であるか判定する。ヌルならば、ブレークポイントリン
クリストデータ構造がないか、あるいは、ブレークポイ
ントリンクリストデータ構造のそれぞれがサーチ済み
で、入力されたエントリー番号と一致するエントリー番
号を持つブレークポイントリンクリストデータ構造が存
在しないか、のいずれかである。ステップ758は一時
的変数ENTRYを、BPPにより指し示されたリンクリストデ
ータ構造内のエントリー番号と等しい値に設定する。次
にステップ760は、ENTRYが入力されたブレークポイ
ント番号と等しいか判定する。等しくないときには、処
理の流れはステップ762に進み、同ステップにおい
て、次のまたは前のリンクリストSPが現リンクリストBP
Pとして設定され、そしてBPPが今BPPにより指されたデ
ータ構造の”next”エントリーと等しい値に設定され、
結果として次のリンクリスト及び現リンクリストを1つ
進める。ステップ760でENTRYが入力されたブレーク
ポイント番号と等しいと判定した場合、入力されたブレ
ークポイントエントリー番号に対応したブレークポイン
トリンクリストが見つかったので、処理の流れはステッ
プ764へ進む。
【0079】ステップ764は、削除すべきブレークポ
イント用データ構造を現在指している前のブレークポイ
ントリンクリストの”next”エントリーを、削除すべき
ブレークポイントリンクリストデータ構造の”next”エ
ントリー中のポインタが指すデータ構造を指すように設
定する。ステップ764により為されることの一例につ
いて説明するため、図19に戻り、BPPがリンクリスト
650であって削除すべきブレークポイントが2番のブ
レークポイントであるとしよう。ステップ760はリン
クリスト650のエントリー番号2が入力された削除す
べきブレークポイントエントリー番号であると判定し、
処理の流れはステップ764へ進み、同ステップはブレ
ークポイントリンクリスト650の”next”エントリー
がブレークポイントリンクリスト650を指しているの
で、ブレークポイントリンクリストデータ構造640
の”next”ポインタをブレークポイントリンクリスト6
60を指すように設定する。このようにして、ブレーク
ポイントリンクリスト650がブレークポイントリンク
リスト群から取り除かれる。当然のことながら、ブレー
クポイントリンクリスト650はもう使用されないの
で、リンクリスト650を削除することにより、ブレー
クポイントリンクリスト650に対応したメモリを解放
することができる。
【0080】入力された削除すべきブレークポイントエ
ントリー番号を持つブレークポイントリンクリストが見
つからない時に警告メッセージを表示するステップ75
6から、及びステップ764から、処理の流れはステッ
プ768に進み、同ステップはデバッグコマンド・ライ
ンパーサーへ制御を戻す。
【0081】なお、削除すべきブレークポイントが、BP
T HEAD により指されたブレークポイントリンクリスト
にある時には、SPに対応する次のブレークポイントリン
クリストデータ構造がないので、ステップ764はBPT
HEAD をBPPのNEXTポインタと同じ値に設定する。
【0082】図23は、GO UNTIL BREAK POINT コマン
ドに対する処理を示している。本コマンドの目的は、ブ
レークポイントに出会うまでSPDL文書の行を処理す
ることである。GO UNTIL BREAK POINT 処理全体は、動
作をみると非常に単純に思われるかもしれないが、ブレ
ークポイントリンクリストデータ構造内の行番号は何等
決まった順序では記憶されていないので、現在の行番号
の後の次のブレークポイントを見つけるためにはステッ
プ804〜812を実行する必要があるため、ステップ
804〜812によりプロセスがかなり面倒になってい
ることに留意されたい。
【0083】図23に示したプロセスにおいて、ステッ
プ802は変数STORED BP NOを、CURRENT LINE NO(す
なわちデバッグプロンプトが表示される前に処理が済ん
だ最後の行の行番号)と等しい値に設定する。ステップ
802はまた、一時的ポインタBPP を先頭ブレークポイ
ントポインタと等しい値に設定する。ステップ804は
BPPがヌルであるか判定する。ヌルであるときは、ブレ
ークポイントが全く設定されていないか、あるいは、現
行番号の後の次のブレークポイントを見つけるため全て
のブレークポイントがステップ804〜812で処理さ
れてしまったか、のいずれかである。BPPがヌルではな
いと判定されたときには、ステップ806が、CURRENT
LINE NOがBPPにより指されたブレークポイントリンクリ
スト内の行番号より小さく、かつ、STORED BP NOがBPP
により指されたブレークポイントリンクリスト内の行番
号より大きいか、判定する。該条件が成立するときには
処理の流れはステップ810へ進み、成立しないときに
は処理の流れはステップ808へ進む。ステップ808
は、CURRENT LINE NOがBPPにより指されたブレークポイ
ントリンクリスト内の行番号より小さく、かつ、STORED
BP NOがCURRENTLINE NOと等しいか判定する。ステップ
808の条件が成立するか、またはステップ806の条
件が成立するときに、処理の流れはステップ810に進
み、変数STORED BP NOはBPPにより指されたブレークポ
イントリンクリスト内の行番号と等しい値に設定され
る。ステップ810の次に、またはステップ808で条
件不成立となったときに、ステップ812において、BP
Pは、BPPにより現在指されているブレークポイントリン
クリスト内の次(next)ポインタと等しい値に設定され
ることにより、他のブレークポイントリンクリストのチ
ェックが可能になる。全てのブレークポイントリンクリ
ストのチェックが済むと、処理の流れはステップ804
からステップ814へ進む。
【0084】ステップ814,816,818は、ステ
ップ804〜812で判定されたブレークポイント行番
号に出会うまで、SPDL文書を処理する。ステップ8
14はSPDL文書の次の行を処理する。ステップ81
6は該行がファイルの終わり(EOF)であるか判定
し、EOFならば図23の処理から抜ける。EOFでな
ければ、ステップ818はSTORED BP NO(記憶ブレーク
ポイント番号)がCURRENT LINE NO(現行番号)と等し
いか判定し、等しければ、該ブレークポイントに到達し
たので、文書の処理は停止し、ステップ820で制御が
デバッグコマンド・ラインパーサーへ戻る。ステップ8
18の条件が不成立のときには、処理の流れはステップ
814へ戻り、SPDL文書の次行が処理される。
【0085】図24はEXECUTE N LINESコマンドの処理
中に実行されるプロセスを示している。ステップ850
は実行されるべき行数Nを入力する。次にステップ85
2は、行カウンタLINE COUNTを0に設定する。次にステ
ップ854は、SPDL文書の次行を処理する。ステッ
プ856はファイルの終わり(EOF)に達したか判定
し、EOFに達したならば該処理を抜ける。EOFに達
していないときには、ステップ858はLINE COUNTを1
だけインクリメントする。次にステップ860は、LINE
COUNTがN以上であるか判定する。N以上でなければ、
さらなる行の処理をすべきであるので処理の流れはステ
ップ854へ戻る。ステップ860がLINE COUNTがN以
上であると判定したときには、N行が実行されたので、
ステップ862で制御がデバッグコマンド・ラインパー
サーへ戻る。
【0086】デバッガの各表示機能のために実行される
処理は、図5に示したピクチャー/ページセットスタッ
ク202の一番上のエントリーに対応したデータを表示
する。例えば、DISPLAY DEFINED RESOURCES デバッグ
コマンドが入力されると、ピクチャー/ページセットス
タックのエントリー204が調べられ、プロローグデー
タ構造へのポインタ206わ辿ってピクチャー/ページ
セットプロローグデータ構造220を突き止める。ピク
チャー/ページセットプロローグデータ構造220内の
リソース定義へのポインタ225が調べられ、それを辿
って該リソース定義へのポインタ225により指し示さ
れたリンクリストデータ構造を突き止める。次に、リソ
ース定義へのポインタ225により指されたリンクリス
トデータ構造を公知の方法で調べることにより、要求さ
れた必要情報を決定することができる。そして、この情
報が公知の方法で表示される。同じように、本発明の表
示機能デバッグコマンドは全て、図5に示した情報並び
にプロローグデータ構造220及びCCIデータ構造2
40に相当するデータ構造を利用することになろう。
【0087】なお、本発明は前述の実施例にのみ限定さ
れるものではなく、以上の記述に基づき当業者は容易に
様々に修正または変形した態様をなし得ることは明らか
であり、そのような態様もまた本発明に包含されるもの
である。
【0088】
【発明の効果】本発明は、SPDLのような階層構造化
ページ記述言語の文書の処理システムにおける文書の効
率的なデバッグを可能にするため、これまで開発支援ツ
ールの整備が十分でなかってSPDL等の階層構造化ペ
ージ記述言語処理システムの開発環境を大幅に改善し、
システム開発の効率化・容易化、並びに階層構造ページ
記述言語文書の効率的な処理システムの実現に大きく寄
与するものである。
【図面の簡単な説明】
【図1】4ページ文書の例を示す図である。
【図2】1ページ文書の例を示す図である。
【図3】文書の階層構造の説明図である。
【図4】典型的な2ページSPDL文書の構造を示す図
である。
【図5】ピクチャー/ページセットスタック及び、その
エントリーにより指されるピクチャー/ページセットプ
ロローグデータ構造及びCCIデータ構造の説明図であ
る。
【図6】プロローグデータ構造により指される外部宣言
データ構造の説明図である。
【図7】リソース定義データ構造の説明図である。
【図8】リソース宣言データ構造の説明図である。
【図9】コンテキストスタックリンクデータ構造の説明
図である。
【図10】コンテキスト辞書ジェネレータデータ構造の
説明図である。
【図11】状態変数テーブルの説明図である。
【図12】ユーザ辞書リンクデータ構造の説明図であ
る。
【図13】コンテキストスタックの説明図である。
【図14】本発明の典型的なハードウエア構成例を示す
図である。
【図15】図14に示したワークステーションの詳細図
である。
【図16】本発明のデバッグシステムの機能ブロック図
である。
【図17】本発明の動作の一例を示す図である。
【図18】ブレークポイントリンクリストデータ構造の
説明図である。
【図19】図17の例の処理時に用いられる一続きのブ
レークポイントリンクデータ構造を示す図である。
【図20】”シングルステップ”デバッグコマンドに対
する処理の流れを示すフローチャートである。
【図21】”セット・ブレークポイント”デバッグコマ
ンドに対する処理の流れを示すフローチャートである。
【図22】”デリート・ブレークポイント”処理コマン
ドに対する処理の流れを示すフローチャートである。
【図23】”ゴー・アンティル・ブレークポイント”処
理コマンドに対する処理の流れを示すフローチャートで
ある。
【図24】”エクセキュートN行”処理コマンドに対す
る処理の流れを示すフローチャーである。
【符号の説明】
10,12 ページセット 14,16,18,20 ピクチャー 50 ページセット 51,62 プロローグ 52 リソース定義 53,55,57,59 トークンシーケンス 54,56,65 辞書ジェネレータ 58,67 セットアッププロシージャ 60 ページセットボディ 61,71,75 ピクチャー 63 コンテキスト宣言 64 辞書識別子 66,68,70,73,74,77 トークンシーケ
ンス 69,72,76 ピクチャーボディ 202 ピクチャー/ページセットスタック 220 ピクチャー/ページセットプロローグデータ構
造 240 CCIデータ構造 300 外部宣言データ構造 310 リソース定義データ構造 328 リソース仕様 350 リソース宣言データ構造 328 リソース仕様 380 コンテキストスタックリンクデータ構造 392 辞書データ構造 400 コンテキスト辞書ジェネレータデータ構造 420 状態変数テーブル 450 ユーザ辞書リンク構造 460 ユーザ辞書 470 コンテキストスタック 502 プリンタ 504 プリントエンジン 506 プリンタコントローラ 508 ワークステーション 510 プリントサーバー 512 プリンタ 514 ネットワーク 550 CPU 552 RAM 554 ROM 556 入力コントローラ 558 キーボード 560 マウス 562 プリントエンジン 564 プリントエンジンインターフェイス 566 システムバス 568 ハードディスク 570 フロッピードライブ 572 ディスクコントローラ 574 通信コントローラ 576 I/Oコントローラ 578 プリンタ 580 ハードディスク 582 ディスプレイコントローラ 584 CRT 600 ユーザ入力 602 コンテント(プロセッサ)パーサー 604 デバッグコマンド・ラインパーサー 606 構造(プロセッサ)パーサー 608 デバッグ機能群 610 出力 612 コンテキストスタック辞書 614 ブレークポイントテーブル管理ルーチン 616 オペランドスタック 618 マシン状態 620 他プロローグエレメント 622 ブレークポイントテーブル 630,640,650,660 ブレークポイントリ
ンクリスト
フロントページの続き (56)参考文献 特開 昭60−175155(JP,A) 高橋亨,標準ページ記述言語(SPD L)とその動向,情報処理,日本,社団 法人情報処理学会,1992年 6月15日, 33巻 6号,p.689−697 (58)調査した分野(Int.Cl.7,DB名) G06F 3/12

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】 出力装置による階層構造化ページ記述言
    語文書の出力を制御する方法であって、 (a) 該文書を定義する入力文書データストリームを
    受け入れるステップとただし、該データストリームは1個以上のピクチャー及
    び1個以上のページセットの少なくとも一つからなり、
    該データストリームは該ページセット及び該ピクチャー
    をして該文書の階層レベルを定義する階層的に順序づけ
    られた構造を有し、該データストリームはコンテント部
    及び構造部を有し、 該ピクチャーのそれぞれは0個以上のプロローグ及び0
    個以上のピクチャーボディからなり、該ページセットの
    それぞれは0個以上のプロローグ、0個以上のページセ
    ット、0個以上のピクチャー、0個以上のページセット
    ボディ及び0個以上のピクチャーボディからなり、 該ピクチャーボディのそれぞれは該コンテント部を含む
    0個以上のトークンシーケンス及び0個以上のピクチャ
    ーからなり、 該ページセットボディのそれぞれは0個以上のピクチャ
    ー、0個以上のページセット、及び該コンテント部を含
    む0個以上のトークンシーケンスからなり(b) 以下のステップにより該入力文書データストリ
    ームを処理するステップと、 該文書データストリームの階層レベルの始まりと終わり
    を判定するステップ、 該文書データストリームの該階層レベルを管理するステ
    ップ、 該階層レベルの少なくとも一つのために一つの一時的デ
    ータ構造を生成するステップ、 該構造部及び該コンテント部の少なくとも一つに応じて
    該一時的データ構造を修正するステップ、 該一時的データ構造、該構造部及び該コンテント部を用
    いて該出力装置を制御するための出力装置データを生成
    する生成するステップ、 (c) 該プロローグデータ構造及び該一時的データ構
    造の少なくとも一つに見 つかるシステムパラメータを表
    示することにより該文書をデバッグするステップと、 を有してなる階層構造化ページ記述言語文書の出力制御
    方法。
JP29075494A 1994-01-11 1994-11-25 階層構造化ページ記述言語文書の出力制御方法 Expired - Fee Related JP3338572B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/180015 1994-01-11
US08/180,015 US5535318A (en) 1992-04-30 1994-01-11 Debugging system for a hierarchically structured page description language

Publications (2)

Publication Number Publication Date
JPH07210344A JPH07210344A (ja) 1995-08-11
JP3338572B2 true JP3338572B2 (ja) 2002-10-28

Family

ID=22658909

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29075494A Expired - Fee Related JP3338572B2 (ja) 1994-01-11 1994-11-25 階層構造化ページ記述言語文書の出力制御方法

Country Status (1)

Country Link
JP (1) JP3338572B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6024530B2 (ja) * 2013-03-12 2016-11-16 富士ゼロックス株式会社 印刷制御装置、印刷装置及びプログラム

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
JPH07210344A (ja) 1995-08-11

Similar Documents

Publication Publication Date Title
US5422992A (en) Method and system to handle state variables in a document processing language
US6498657B1 (en) Programmable data extractor, data analyzer, and printer report generator
Lesk et al. Lex: A lexical analyzer generator
US5946488A (en) Method for selectively and incrementally displaying the results of preprocessing
US5319748A (en) Method and apparatus to manage picture and pageset for document processing
US6249908B1 (en) System and method for representing graphical font data and for converting the font data to font instructions
US5416896A (en) Command definition dictionary handling and context declaration in a document publishing page description language (PDL)
JP4007562B2 (ja) プログラミング補助方法および装置
US5535318A (en) Debugging system for a hierarchically structured page description language
US20030050934A1 (en) Method and system for flowing data to an arbitrary path defined by a page description language
US5483629A (en) Method and system to handle dictionaries in a document processing language
US5325484A (en) Method and system to handle inclusion of external files into a document processing language
US5446837A (en) Method and system to process resources in a document processing language
JP3338572B2 (ja) 階層構造化ページ記述言語文書の出力制御方法
JP2002288004A (ja) プログラムソース処理装置、プログラムソース処理方法、およびプログラムソース処理プログラム
JP3094712B2 (ja) ページ記述言語処理装置
JP3406706B2 (ja) 状態変数管理方法
JP3406705B2 (ja) 辞書操作方法
Jesshope et al. An intelligent Pascal editor for a graphical oriented workstation
JPH07160490A (ja) コーディング支援装置
Calder Thistle: diagram display engines and editors
JPH06187108A (ja) 文書プレゼンテーション制御装置
JP3265762B2 (ja) 画像処理装置
Rahtz et al. The pdfTEX user manual
JP3605155B2 (ja) 階層構造文書化処理方法

Legal Events

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

Free format text: PAYMENT UNTIL: 20080809

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20080809

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20090809

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20090809

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20100809

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20100809

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20110809

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees