JP2982647B2 - 画像生成プログラム処理装置 - Google Patents

画像生成プログラム処理装置

Info

Publication number
JP2982647B2
JP2982647B2 JP7078994A JP7899495A JP2982647B2 JP 2982647 B2 JP2982647 B2 JP 2982647B2 JP 7078994 A JP7078994 A JP 7078994A JP 7899495 A JP7899495 A JP 7899495A JP 2982647 B2 JP2982647 B2 JP 2982647B2
Authority
JP
Japan
Prior art keywords
program
image
image generation
partial
unit
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
JP7078994A
Other languages
English (en)
Other versions
JPH08279031A (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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox 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
Application filed by Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP7078994A priority Critical patent/JP2982647B2/ja
Publication of JPH08279031A publication Critical patent/JPH08279031A/ja
Application granted granted Critical
Publication of JP2982647B2 publication Critical patent/JP2982647B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ページ記述言語プログ
ラム等の画像生成プログラムを効率的に処理し、画像生
成プログラムに対応する画像を高速に生成することがで
きる画像生成プログラム処理装置に関する。
【0002】
【従来の技術】近年、ページ記述言語を解釈して所望の
画像を出力するページプリンタが頻繁に使用されるよう
になった(例えば、ソフトウェア科学・工学における数
理的方法研究集会(1990.9.27−28)(財)
京都高度技術研究所、伊知地宏、芳賀進、清水一善「U
NIX上のページ記述言語Interpressの処理
系とプレビューア」、あるいは特開平4−128068
号公報参照)。特に、このページプリンタは、ネットワ
ークを用いた分散環境で多く使用されている。
【0003】また、ページ記述言語処理系を表示処理装
置に搭載し、ページ記述言語で記述されたプログラムに
対応する出力内容を表示するものもある(例えば、コン
ピュータソフトウェアVol.5 No.4(198
8.10.14)岩波書店(日本ソフトウェア科学会編
集)、石田晴久「卓上出版用ページ記述言語PostS
cript)pp.2−11、あるいは特開平4−12
7197号公報参照)。これによれば、ページプリンタ
で印刷出力する前に、出力画像を簡易に確認することが
できる。
【0004】ところで、上述したページ記述言語プログ
ラムを処理する装置においては、ページ記述言語プログ
ラムが表示出力装置あるいは印刷出力装置上で正常に動
作するか否かを全く確認することなく、該ページ記述言
語プログラムを該表示出力装置あるいは印刷出力装置上
のページ記述言語プログラム処理部に入力していたた
め、表示出力装置あるいは印刷出力装置における該ペー
ジ記述言語プログラム処理中にエラーが発生する場合が
あった。このようなエラーが発生した場合、表示出力装
置あるいは印刷出力装置上のページ記述言語プログラム
処理部において該ページ記述言語プログラムを長時間計
算処理したことが無駄になり、計算資源の利用上大きな
問題となる。また、このようなエラーの発生に伴い、表
示出力装置あるいは印刷出力装置がシステムダウンして
しまう事態も発生する場合がある。
【0005】このような問題点を解決するため、特開平
4−322205号公報には、入力されたページ記述言
語プログラムを、型推論を用いて解析し、この解析結果
からページ記述言語プログラムが正しく記述されている
か否かを検証する装置が記載されている。
【0006】これによれば、ページ記述言語プログラム
に基づいて画像生成処理を行う以前に記述の正当性を検
証することができるため、無駄な画像生成処理を行う必
要がなくなり、システムダウンが生じることもなくな
る。さらに、エラーが生じた場合を考えると、所望の画
像を生成するためにかかる時間も結果的に短縮される。
【0007】また、特開平4−128068号公報に記
載されているように、ページ記述言語プログラムを並列
処理する装置が知られている。また、特開平5−202
54公報には、ページ記述言語プログラムを処理する
際、フォントデータを処理しフォント生成管理する専用
のハードウェアを設け、これによりCPUにかかる負担
を軽減する装置が記載されている。
【0008】これらによれば、ページ記述言語プログラ
ムを一層高速に処理することができるため、ページ記述
言語プログラムが示す表示画像出力あるいは印刷出力画
像を早く獲得することができる。
【0009】しかし、これらの装置はページ記述言語プ
ログラムを並列分散処理することにより、該ページ記述
言語プログラムの処理を高速化しようとするものであっ
て、本質的にページ記述言語プログラムそのものの高速
処理を行うものではない。
【0010】一方、ページ記述言語プログラムの部分計
算を予め行うことにより、ページ記述言語プログラムを
本質的に高速処理しようとするものがある。
【0011】これによれば、ページ記述言語プログラム
中における重複した計算処理がなくなり、結果的にペー
ジ記述言語プログラムの高速処理が実現される。
【0012】なお、一般的な部分計算に関しては、値が
与えられた一部のパラメータに関する計算を予め行う部
分計算方法が既に知られている(コンピュータソフトウ
ェアVol.5 No.2(1988.4)岩波書店
pp.27−40参照)。
【0013】
【発明が解決しようとする課題】しかしながら、ページ
記述言語プログラムに対して部分計算を施し、重複する
処理を削減し、結果的にページ記述言語プログラムの画
像生成処理を高速化するものによっても、ページ記述言
語プログラムの画像生成処理には相当な時間がかかるの
が現状である。
【0014】これは、ページ記述言語プログラムの特性
上、上述した部分計算の適用範囲が限定され、また、部
分計算が予め行われたとしても、ページ記述言語プログ
ラムの全体処理時間のうち、展開処理にかかる時間がか
なりの部分を占めるからである。
【0015】従って、ページ記述言語プログラムの処理
に上述した部分計算を単に適用しても、実質的にページ
記述言語プログラムの全体処理時間に寄与する効果は小
であり、依然としてページ記述言語プログラムの全体処
理にかかる時間は大であることから、最終的な出力画像
を獲得するまでには相当な時間がかかるという問題点が
あった。
【0016】なお、ページ記述言語プログラムを展開処
理する際に、一度読み込んだフォントデータをキャッシ
ュしたり、一度展開処理された文字のビットマップデー
タをキャッシュする周知技術があるが、このようなキャ
ッシュ技術を用いても、ページ記述言語プログラムの高
速処理を行うための抜本的な解決策とはならず、大幅な
時間短縮は期待できない。
【0017】そこで、本発明は、かかる問題点を除去
し、ページ記述言語プログラム等の画像生成プログラム
の全体処理時間を大幅に短縮することができる画像生成
プログラム処理装置を提供することを目的とする。
【0018】
【課題を解決するための手段】第1の発明は、画像生成
プログラムを解釈して該画像生成プログラムに対応する
画像を生成する画像生成手段と、画像生成プログラムと
該画像生成プログラムによって生成された画像とを対応
づけて保持する保持手段と、入力画像生成プログラムを
構成する1以上の画像生成プログラムと等価な画像生成
プログラムを前記保持手段から特定する特定手段と、前
記特定手段が特定した画像生成プログラムに対応する画
像と、前記特定手段が特定できなかった画像生成プログ
ラムを前記画像生成手段に入力して生成された画像とに
基づいて、前記入力画像生成プログラムに対応する出力
画像を生成する制御を行う制御手段とを具備したことを
特徴とする。
【0019】第2の発明は、第1の発明において、入力
画像生成プログラムを構成する1以上の画像生成プログ
ラムと前記保持手段に保持されている画像生成プログラ
ムとが等価であるか否かを判定する等価性判定手段をさ
らに具備し、前記特定手段は、該等価性判定手段が等価
であると判定した画像生成プログラムに対応する前記保
持手段に保持されている画像生成プログラムを特定する
ことを特徴とする。
【0020】第3の発明は、第1の発明において、前記
入力画像生成プログラムのうち、実行結果が確定してい
る部分プログラムを、該部分プログラムの実行結果で置
換して、該入力画像生成プログラムを最適化する最適化
手段をさらに具備し、前記保持手段が保持する画像生成
プログラムは、前記最適化手段によって最適化されたプ
ログラムであり、前記入力画像生成プログラムは、前記
最適化手段によって最適化されたプログラムであること
を特徴とする。
【0021】第4の発明は、第3の発明において、前記
最適化手段が、入力画像生成プログラム内の命令定義及
び命令の記述の型が正しいか否かの型推論を行う型推論
手段と、前記型推論手段によって前記命令の型が正しい
と推論される毎に該命令の実行結果が確定した値になる
か否かを判定する判定手段と、前記判定手段によって確
定した値になると判定された命令に関する部分プログラ
ムを実行する部分実行手段と、前記部分プログラムを前
記部分実行手段による実行結果で置換する置換手段とを
具備したことを特徴とする。
【0022】第5の発明は、第1の発明において、前記
画像生成手段が、画像生成処理過程によって生成される
画像と該画像に対応する画像生成プログラムとを対応さ
せて前記保持手段に保持することを特徴とする。
【0023】第6の発明は、入力画像生成プログラムの
命令定義及び命令の記述の型が正しいか否かの型推論を
行う型推論手段、前記型推論手段によって前記命令の型
が正しいと推論される毎に該命令の実行結果が確定した
値になるか否かを判定する判定手段、前記判定手段によ
って確定した値になると判定された命令に関する部分プ
ログラムを実行する部分実行手段、前記部分プログラム
を前記部分実行手段による実行結果で置換する置換手段
からなる前記入力画像生成プログラムを最適化する最適
化手段と、前記最適化手段によって最適化された画像生
成プログラムと該画像生成プログラムに対応する画像と
を対応づけて保持する保持手段と、画像生成プログラム
を解釈して該画像生成プログラムに対応する画像を生成
するとともに、生成された画像と該画像の画像生成プロ
グラムとを前記保持手段に保持する画像生成手段と、前
記最適化手段によって最適化された入力画像生成プログ
ラムを構成する1以上の画像生成プログラムと前記保持
手段に保持されている画像生成プログラムとが等価であ
るか否かを判定する等価性判定手段と、前記等価性判定
手段が等価であると判定した画像生成プログラムに対す
る前記保持手段に保持されている画像生成プログラムを
特定する特定手段と、前記特定手段が特定した画像生成
プログラムに対応する画像と、前記特定手段が特定でき
なかった画像生成プログラムを前記画像生成手段に入力
して生成された画像とに基づいて、前記入力画像生成プ
ログラムに対応する出力画像を生成する制御を行う制御
手段とを具備したことを特徴とする。
【0024】
【作用】第1の発明では、保持手段が画像生成プログラ
ムと該画像生成プログラムによって生成された画像とを
対応づけて保持しており、特定手段は、入力画像生成プ
ログラムが入力されると、該入力画像生成プログラムと
構成する1以上の画像生成プログラムと等価な画像生成
プログラムを保持手段から特定する。制御手段は、特定
手段が特定した画像生成プログラムに対応する画像を保
持手段から直接取り出し、画像生成手段を通さない。ま
た、制御手段は、特定手段が特定できなかった入力画像
生成プログラム内の画像生成プログラムを画像生成手段
に入力し、該画像生成プログラムが示す画像を生成させ
る。そして、制御手段は、保持手段から取り出した画像
と画像生成手段が生成した画像とから入力画像生成プロ
グラムに対応する出力画像を出力させる。
【0025】これにより、既に保持手段に保持されてい
る画像が再利用され、画像生成手段が処理する画像生成
プログラムの処理負荷は大幅に軽減される。
【0026】第2の発明では、等価性判定手段が、入力
画像生成プログラムを構成する1以上の画像生成プログ
ラムと前記保持手段に保持されている画像生成プログラ
ムとが等価であるか否かを判定し、特定手段は、この判
定結果に基づいて保持手段に保持されている画像生成プ
ログラムを特定する。
【0027】第3の発明では、最適化手段が、入力画像
生成プログラムのうち、実行結果が確定している部分プ
ログラムを、該部分プログラムの実行結果で置換して、
該入力画像生成プログラムを最適化し、この最適化手段
によって最適化された画像生成プログラムが保持手段に
保持され、また特定手段には最適化された入力画像生成
プログラムが入力される。
【0028】第4の発明では、まず型推論手段が、入力
画像生成プログラム内の命令定義及び命令の記述の型が
正しいか否かの型推論を行い、正しくないとする型推論
が行われた場合、正しくない旨の通知を出力し、該入力
画像生成プログラムの処理を中止する。一方、入力画像
生成プログラムが正しいとする型推論が行われた場合、
該入力画像生成プログラムの処理を続行する。
【0029】一方、型推論手段による型推論過程におい
て、判定手段が、命令の型が正しいと推論される毎に該
命令の実行結果が確定した値になるか否かを判定し、部
分実行手段が、確定する値になると判定された命令に関
する部分プログラムを実行し、置換手段が、該部分プロ
グラムを前記部分実行手段による実行結果で置換する。
【0030】これにより、入力画像生成プログラムの正
当性が検証され、無駄な処理を行わずに済むとともに、
入力画像生成プログラムを最適化し、その後の重複する
処理を削減される。
【0031】第5の発明では、画像生成手段が、画像生
成処理過程によって生成される画像と該画像に対応する
画像生成プログラムとを対応させて保持手段に保持す
る。
【0032】これにより、保持手段においては、再利用
される画像と該画像に対応する画像生成プログラムとが
自動的に保持、生成される。
【0033】第6の発明では、まず最適化手段が入力画
像生成プログラムの最適化を行う。この際、最適化手段
の型推論手段が型推論を行って、入力画像生成プログラ
ムが正しく記述を有する推論した場合、該入力画像生成
プログラムの処理を中止する。また、型推論手段の型推
論過程において命令の型が正しいと推論される毎に判定
手段が該命令の実行結果の値が確定した値になるかを判
定し、部分実行手段が確定する値になると判定された命
令に関する部分プログラムを実行し、置換手段が部分プ
ログラムを該部分プログラムの実行結果に置換する。す
なわち、型推論手段が入力画像生成プログラムが正しい
記述であると推論される場合に、入力画像生成プログラ
ムは、部分実行が可能な部分プログラムが予め実行され
た最適なプログラムとなる。
【0034】この最適化された入力画像生成プログラム
は、等価性判定手段によって該入力画像生成プログラム
を構成する1以上の画像生成プログラムと保持手段に保
持されている画像生成プログラムとが等価であるか否か
が判定され、特定手段が、等価であると判定した画像生
成プログラムに対する保持手段に保持されている画像生
成プログラムを特定する。ここで、保持手段には、予め
前記最適化手段によって最適化された画像生成プログラ
ムと該画像生成プログラムに対応する画像とが対応づけ
られて保持されている。
【0035】制御手段は、特定手段が特定した画像生成
プログラムに対応する画像と、特定手段が特定できなか
った画像生成プログラムを画像生成手段に入力し、この
画像生成手段によって生成された画像とに基づいて、入
力画像生成プログラムに対応する出力画像を生成する制
御を行う。ここで、画像生成手段は、新たに入力された
画像生成プログラムとこの画像生成プログラムに基づい
て生成した画像とを対応づけて保持手段に保持する。
【0036】これにより、入力画像生成プログラムを出
力画像の生成に先だって入力画像生成プログラムの正当
性を検証することができるため、無駄な処理が行われる
ことがないとともに、この正当性の検証過程を用いて入
力画像生成プログラムが最適化されるので、入力画像生
成プログラムの正当性の検証と最適化とが効率的に行わ
れる。また、入力画像生成プログラムの最適化により、
重複するプログラム処理を削減することができる。
【0037】さらに、出力画像の生成では、既に保持手
段に格納されている画像が再利用されるので、画像生成
手段にかかる負荷が軽減されることにより、出力画像の
生成にかかる時間が短縮され、入力画像生成プログラム
の正当性の検証、最適化と相まって、入力画像生成プロ
グラムの全体処理時間を大幅に短縮することができる。
【0038】
【実施例】以下、図面を参照して本発明の実施例につい
て説明する。
【0039】図1は、本発明の一実施例であるページ記
述言語プログラム処理装置の構成を示す図である。
【0040】図1において、ページ記述言語プログラム
処理装置は、入力部1、ページ記述言語プログラム処理
部2、及び出力部3を有している。
【0041】入力部1は、ページ記述言語プログラムP
を受け付け、この受け付けたページ記述言語プログラム
をページ記述言語プログラム処理部2に出力する。
【0042】出力部3は、ページ記述言語プログラム処
理部2から転送された出力画像データDを受け付け、表
示出力あるいは印刷出力する。
【0043】ページ記述言語プログラム処理部2は、最
適化部4、画像生成部5、及び出力制御部6から構成さ
れる。
【0044】最適化部4は、正当性検証部7、変換処理
部8、及び部分計算部9を有し、入力されたページ記述
言語プログラムPの記述に誤った記述があるか否かを検
証するとともに、重複する記述を予め部分計算し、該部
分計算した結果を該記述に置き換えることにより、ペー
ジ記述言語プログラムの最適化を行う。
【0045】正当性検証部7は、入力部1から入力され
たページ記述言語プログラムPをトークン毎に順次読み
込んで、型推論によりページ記述言語プログラムが正し
い記述がなされているか否か(正当性)を検証する。こ
こで、ページ記述言語プログラムが誤った記述(型)で
ある場合は、その旨が出力部3に出力されるとともに、
該ページ記述言語プログラムの処理は中止される。
【0046】変換処理部8は、正当性検証部7の正当性
検証過程における解析結果を利用し、部分計算が可能な
記述がある場合、該記述を、部分計算部9に部分計算さ
せ、この部分計算結果を該記述に変換する処理を行う。
【0047】画像生成部5は、制御部10、等価性検証
部11、展開処理部12、キャッシュメモリ13、等価
プログラムEDと該等価プログラムの解釈画像BDとの
対データ15及びフォントデータ16を有する記憶部1
4、及びページメモリ17を有している 等価性検証部11は、最適化部4によって最適化された
ページ記述言語プログラム内に、対データ15の等価プ
ログラムEDと等価なプログラムがあるか否かを検証す
る。最適化されたページ記述言語プログラム内に等価プ
ログラムと等価なプログラムがあると判定された場合、
制御部10は、該等価プログラムと対になっている解釈
画像BDを取り出し、ページメモリ17に転送する。
【0048】展開処理部12は、等価性検証部11で等
価プログラムと等価なプログラムが存在しないと判定さ
れたプログラムに対してのみ、ビットマップデータに展
開する展開処理を行う。この展開処理においては、フォ
ントデータ16あるいはキャッシュメモリ13が用いら
れ、展開処理結果はページメモリ17に格納される。
【0049】ここで、展開処理部12、キャッシュメモ
リ13、フォントデータ16は、実際にページ記述言語
プログラムを解釈し、展開処理を行うページ記述言語処
理系20として把握することができる。すなわち、従来
のページ記述言語プログラム処理装置では、入力された
ページ記述言語プログラムPの全てがページ記述言語処
理系20に直接入力され、該ページ記述言語プログラム
が解釈され展開処理されていた。
【0050】出力制御部6は、制御部10からの展開処
理終了通知を受け、ページメモリ17にページ単位で格
納されたビットマップデータを出力画像データDとして
出力部3に転送出力する。
【0051】次に、図2を参照して、図1に示すページ
記述言語プログラム処理装置によるページ記述言語プロ
グラムPの処理概要について説明する。
【0052】図2(a)は、入力されたページ記述言語
プログラムPを示している。図2(b)は、変換処理部
8が、部分計算部9によって部分計算された値に変換さ
れた後の最適化プログラムを示している。すなわち、ペ
ージ記述言語プログラムPのうちの部分計算が可能な部
分L1及びL2は、部分計算部9によって部分計算され
た値A及び値Bに置き換えられている。これにより、ペ
ージ記述言語プログラムPを単に処理することによって
生ずる重複計算を回避することができる。
【0053】図2(b)に示す最適化プログラムはさら
に、等価性検証部11により最適化プログラムの等価性
が検証される。そして、図2(c)に示すように、記憶
部14の等価プログラムEPに等価なプログラムが存在
するか否かが判定され、等価プログラムEPと等価であ
ると判定されたプログラムEは、等価プログラムEPに
対応する解釈画像BDに置き換えられる。等価プログラ
ムEPと等価プログラムEPに対応する解釈画像BDと
は予めページ記述言語プログラムPを処理する以前に記
憶部14に格納されている。解釈画像BDに置き換えら
れたプログラムE以外の最適化プログラムは、展開処理
部12に入力され、該プログラムの展開処理が実行され
る。その結果、図2(d)に示す、ページ記述言語プロ
グラムPに対応する出力画像データが得られる。
【0054】この場合、展開処理部12が実際に展開処
理を行うプログラム演算は、プログラムE以外の部分の
プログラムのみの演算である。また、プログラムE以外
の部分のプログラムの演算においても、既に部分計算が
行われており、重複する部分計算が行われることもな
い。
【0055】特に、プログラムEが報告文書等の定型フ
ォーマットを記述するものである場合、該プログラムE
は繰り返し使用される可能性があり、しかも本実施例に
おいては、繰り返し使用される該プログラムをその都
度、展開処理する必要がないので、ページ記述言語プロ
グラムの高速処理が実現されることになる。
【0056】すなわち、既に展開処理されたプログラム
の解釈画像を予め保持し、この解釈画像をプログラム単
位で再利用することにより、非常に時間のかかる展開処
理時間が削減され、ページ記述言語プログラムの処理速
度が大幅に向上することになる。
【0057】なお、等価プログラムEPと等価プログラ
ムEPに対応する解釈画像BDとの対データとしては、
該ページ記述言語プログラムの展開処理時に生成された
ものも順次格納され、利用される。
【0058】次に、図3を参照して、最適化部4によ
る、ページ記述言語プログラムPの正当性検証処理及び
最適化処理について説明する。なお、部分計算を用いた
最適化処理は、正当性検証処理の解析過程における解析
結果を用いて行われる。
【0059】図3において、まず正当性検証部7は、入
力されたページ記述言語プログラムPのトークン読み込
み位置を該ページ記述言語プログラムPの先頭位置に設
定し、型推論状況を「nil」(何も設定されていない
ことを意味する)に設定し、さらに予め定められたペー
ジ記述言語の型推論の公理を設定する(ステップ10
1)。ここで、公理とは、ページ記述言語で用いられる
専用の命令毎の、入力されたページ記述言語のトークン
の型と、この命令の実行により出力される型との関係を
示すものである。また、型推論状況とは、現在保持して
いる型のカテゴリーを示し、図示しない型推論状況スタ
ックにおいて、命令の実行までに入力される値の型、あ
るいは命令の実行により出力される値の型が蓄積され
る。さらに、型とは、ページ記述言語に記述された命令
の対象となるデータを示すトークンの型、あるいは命令
の実行によって出力された値の型であり、例えば、数値
を示す「num」型、1または0の2値のブール値を示す
「bool」型、あるいは、あらゆる値を示す「any」型等
がある。
【0060】その後、正当性検証部7は、設定されたト
ークン読み込み位置からページ記述言語プログラムPの
トークンを読み込み(ステップ102)、ページ記述言
語プログラムPが終了したか否かを判断する(ステップ
103)。
【0061】ステップ103で、終了と判断された場合
は、型推論状況が「nil」か否かを調べ(ステップ1
04)、型推論状況が「nil」であるならば、入力さ
れたページ記述言語プログラムは「正しい」とする検証
解析結果を、型推論状況が「nil」でないならば、入
力されたページ記述言語プログラムは「正しくない」と
する検証解析結果を、出力部3に出力する(ステップ1
05)。
【0062】一方、ステップ103で、終了と判断され
ない場合は、読み込んだトークンが命令の定義を示すも
のか否かを判断し(ステップ106)、命令の定義であ
る場合は、トークンの読み込み位置を逐次進めながら、
命令定義部のトークンを読み込み(ステップ107)、
この新規に定義される命令の定理を生成すべく、公理あ
るいはこれまでに登録された定理に基づいた型推論を行
う(ステップ108)。この型推論の具体例は後述する
が、型推論は、登録された公理及び定理における型の仮
定(入力)と型の帰結(出力)とから、新規に定義され
る命令の仮定とその帰結を推論することである。
【0063】その後、ステップ108の型推論が成功し
たか否か、すなわち新たな定義の命令に対する仮定と帰
結とを生成することができたか否かを判断し(ステップ
109)、型推論に成功した場合には、この命令の名前
及び推論された仮定と帰結との型を含む型推論の定理と
して追加の登録を行い(ステップ110)、ステップ1
02に移行して処理を続行する。ステップ109で型推
論が成功しなかった場合には、「正しくない」とする検
証解析結果を出力部3に出力し(ステップ111)、本
処理を終了する。
【0064】ステップ106で読み込んだトークンが命
令の定義でないと判断された場合は、さらに読み込んだ
トークンが命令を示すものか否かを判断し(ステップ1
12)、命令である場合は、この命令の型検証を行う
(ステップ113)。この型検証は、この命令に対応す
る定理又は公理を検索し、現在の型推論状況が示す型
が、検索された公理又は定理の入力の型と一致するか否
かを検証する。
【0065】次のステップ114では、ステップ113
の型検証が成功したか否か、すなわち現在の型推論状況
の型が、検索された公理又は定理の入力の型に一致する
ものであるか否かを判断し、型検証に成功した場合に
は、ステップ115に移行し、検索された公理又は定理
の出力の型を、現在の型推論状況とする型推論状況の更
新を行う。ステップ114で型検証が成功しなかった場
合、「正しくない」とする検証解析結果を出力部3に出
力し(ステップ116)、本処理を終了する。
【0066】一方、ステップ112で読み込んだトーク
ンが命令でもないと判断された場合、例えば命令の実行
の対象となるデータ値である場合には、このトークンの
型を検出し(ステップ117)、この型を現在の型推論
状況に追加する更新を行い(ステップ118)、ステッ
プ102に移行して処理を続行する。
【0067】ステップ115で、型推論状況が更新され
ると、変換処理部8は、この命令が、四則演算のもの
か、数学関数演算のものか、スタック操作演算のもの
か、比較又は論理又は制御演算のものか否かを判断し
(ステップ119〜122)し、ステップ119〜12
2の全ての演算種別に該当しない場合は、ステップ10
2に移行し、正当性検証部7は上述した処理を繰り返
す。一方、ステップ119〜122で命令がいずれかの
演算種別に該当する場合、変換処理部8は、さらに該命
令の直前のデータ値が数値であり、かつその値が確定し
たものであるか否かを判断する(ステップ123)。そ
の結果、命令の直前のデータ値が数値であり、かつその
値が確定したものでないと判断された場合、ステップ1
02に移行し、正当性検証部7は、上述した処理を繰り
返す。ステップ123で命令の直前のデータ値(現在ス
タックされている型推論状況)が数値であり、かつその
値が確定したものであると判断された場合、部分計算部
9は、このデータ値と命令とからなる部分プログラムの
部分演算を行う(ステップ124)。そして、変換処理
部8は、ページ記述言語プログラム内における、該デー
タ値と該命令とからなる部分プログラムを、ステップ1
24の演算結果に置き換えた(ステップ125)後、ス
テップ102に移行して、上述した処理を繰り返す。
【0068】このようにして、最適化部4は、入力され
たページ記述言語プログラムPの正当性検証を行い、か
つ部分計算による該ページ記述言語プログラムの最適化
を行う。
【0069】ここで、最適化部4における処理を、ペー
ジ記述言語の1つであるポストスクリプトを例にあげて
上述した正当性検証処理及び最適化処理を具体的に説明
する。
【0070】まず、ポストスクリプトにおける公理の
例、定理の例、型推論による定理の生成例、型検証例に
ついて順に説明する。
【0071】公理は、ポストスクリプトの全ての命令に
対して予め登録されるものであり、具体的には、次のよ
うに表現される。すなわち、 (add(num num)(num)) …(1) (eq(any any)(bool)) …(2) である。(1)の公理は、加算を意味する「add」の命
令が、数値を示す「num」型の2つの要素から、「num」
型の1つの要素を導いていることを示している。また、
(2)の公理は、等号を意味する「eq」の命令が、どん
な値でもよいことを示す「any」型の2つの要素から、
1か0かの2値を示す「bool」型の1つの要素を導いて
いることを示している。
【0072】次に、定理は、最初は「nil」に設定さ
れており、命令の定義が実行される度に追加登録され
る。例えば、 /eq1{add eq}def なる命令の定義について考える。ここで、「def」は命
令の定義を意味する記述であり、{}内の記述は、定義さ
れる命令「eq1」の定義内容を意味する。この命令「eq
1」の定義があった場合、既に登録されている公理及び
定理に基づいてステップ108による型推論が行われ、
次のような新たな定理を生成する。すなわち、 (eq1(any num num)(bool)) …(3) が、新規の定理として追加登録される。なお、実際の
「eq1」による具体的な計算例を示すと、 a b c eq1 があり、これを実行すると、 a=b+c となる。
【0073】このステップ108における型推論を、上
述した(3)の定理の生成例をもとに説明する。すなわ
ち、上述した(1)の「add」及び(2)の「eq」の公
理から(3)の「eq1」の定理を導く型推論について説
明する。
【0074】まず、(1)の「add」から仮定(入力)
として(num num)を設定し、帰結(出力)として(num)を
設定する。次に、(1)の帰結が「num」型のみであ
り、かつ「any」型は「num」型を包含するので、(2)
の「eq」に対して部分仮定(any num)を設定することが
できる。この部分仮定を(2)の「eq」に適用すること
により、(3)の「eq1」に対する仮定は(any num nu
m)となり、帰結は(bool)となる。この推論の結果、「e
q1」は、上述した(eq1(any num num)(bool))の型である
という定理が導かれる次に、型検証について説明する。
この型検証には、上述した公理及び定理が用いられる。
【0075】例えば、加算の命令「add」に対する型検
証を行う場合、型検証前のスタックされた型推論状況が
(num num)とすると、「add」の公理は、上述した(1)
に示す型を有することから、「add」の公理を用いて「n
um」が導出され、これにより型検証が成功し、型推論状
況は「num」に更新される。
【0076】ここで、型検証と型推論状況との変化を具
体的な処理プログラムについて説明する。ここでは、処
理プログラムとして、次のようなものを考える。すなわ
ち、 3 2 add …(4) である。そして、この(4)の処理プログラムを実行す
るまでの型推論状況を(any)とする。
【0077】この(4)の処理プログラムにおける最初
のトークンは、「3」であり、このトークンは命令の定
義でもなく、命令でもないことから、ステップ117で
型検出が行われ、型検出された「num」型がステップ1
18においてスタックされ、現在の型推論状況(any)
は、型推論状況(any num)に更新される。
【0078】さらに、次のトークン「2」がステップ1
02により読み込まれ、このトークンも、命令の定義で
もなく、命令でもないため、ステップ117で検出され
た「num」型が、現在の型推論状況(any num)に追加登録
され、現在の型推論状況は(any num num)として更新さ
れる。
【0079】次に、トークン「add」が読み込まれ、こ
のトークンは加算を示す命令であることから、ステップ
113により型検証が行われる。すなわち、スタックさ
れている現在の型推論状況から、(1)に示す命令「ad
d」の公理が示す入力の型(num num)の個数分の型が順次
取り出され、この取り出された(num num)の型と「add」
の公理が示す入力の型(num num)とが比較される。この
比較の結果、型が一致するので、型検証は成功し、「ad
d」の公理が示す出力の型(num)がステップ115におい
て追加登録される。この結果、現在の型推論状況は(any
num)となる。このようなスタック処理により、型推論
状況は更新され、命令のトークンが読み出された場合、
この命令の公理あるいは定理の入力の型の個数分の型
が、スタックから取り出され、結果として命令の直前の
データ値の型と読み出された命令の型との型検証が行わ
れる。
【0080】ここで、上述した(4)の処理プログラム
を間違って、次のように記述した場合、すなわち、 a 2 add …(5) と記述した場合、型検証が行われる時点の型推論状況は
(any any num)であり、型検証のためにスタックから取
り出された型(any num)と、「add」の公理の入力の型は
(num num)とは、異なる型であることから型検証が失敗
することなり、これにより、処理プログラムの記述が間
違っている、すなわち正しくないと判断される。
【0081】なお、ページ記述言語プログラムが正しく
記述されていない場合とは、ステップ104において型
推論状況が残ることにより、プログラム処理が終了され
ない場合、ステップ109において誤った命令定義がな
されている場合、ステップ104において命令の対象で
あるデータ値の型が間違っている場合である。
【0082】従って、上述した公理あるいはその後設定
される定理に基づく型検証により、ページ記述言語プロ
グラムの記述の正当性が検証され、正しい記述でない
(文法エラー等)を、ページ記述言語処理系による展開
処理が実行される前に検出されるので、無駄な処理を未
然に防止できる。
【0083】次に最適化処理を具体例をもとに説明す
る。この最適化処理は、上述した型検証による正当性検
証処理と一体となって行われる。すなわち、上述したス
テップ114によって型検証が成功する度毎に、命令の
処理対象であるデータが、他のプログラム処理の結果に
よって該プログラム処理が影響を受けることのない単純
型のものであり、かつ確定された値を有する場合に該命
令にかかわる部分プログラムを予め実行する。ここで、
単純型とは、データの型によって判断され、例えば実数
型、整数型、1文字型、真理型等であり、単純型でない
型とは、配列型、文字列型等であり、単純型でない型
は、直線描画、マスク処理等の画像処理に関するもので
ある。また、この単純型と組み合わされた命令の例とし
ては、ステップ119〜122では、四則演算、数学関
数演算、スタック操作演算、比較又は論理又は制御演算
をあげ、これらを部分計算の可能性があるものとしてい
る。
【0084】ここで、具体的な部分計算が可能な部分プ
ログラムを例にあげて最適化処理について説明する。
【0085】まず、ステップ119〜122のそれぞれ
に該当する部分プログラム(5)〜(8)について順次
説明する。
【0086】 3 2 add …(6) の部分プログラムにおける命令「add」は、上述したよ
うに加算を行う四則演算の命令であり、また直前の2つ
のデータ「3」及び「2」は型検証により数値を示す「nu
m」型であるので、確定した値である。従って、(6)
の部分プログラムは部分計算が可能なものと判断され、
部分計算部9は部分計算を実行し、実行結果として
「5」を出力する。この結果、変換処理部8は、(6)
の部分プログラム「3 2 add」を「5」に置き換える。
【0087】 10 ln …(7) の部分プログラムにおける命令「ln」は、底「e」であ
る自然対数の計算を行う数学関数演算の命令であり、ま
た直前の1つのデータ「10」は型検証により、単純型で
ある「num」型であって、値が確定しているので、部分
計算の結果、「2.30259」が得られ、(7)の部分プロ
グラムは、「2.30259」に置き換えられる。
【0088】 3 2 exch …(8) の部分プログラムにおける命令「exch」は、スタック上
の2つのデータの位置交換を行うスタック操作演算の命
令であり、直前の2つのデータ「3」及び「2」は型検証
により、単純型である「num」型であって、値が確定し
ているので、部分計算の結果「2 3」が得られ、(8)
の部分プログラムは、「2 3」に置き換えられる。
【0089】 10 15 lt …(9) の部分プログラムにおける命令「lt」は、第1要素が第
2要素に比べて小さいかの比較演算を行う命令であり、
直前の2つのデータ、すなわち第1要素及び第2要素の
データ「10」及び「15」は型検証により、単純型である
「num」型であって、値が確定しているので、部分計算
の結果「true」が得られ、(9)の部分プログラムは、
「true」に置き換えられる。
【0090】次に、上述した部分プログラムが組み合わ
された部分プログラムの最適化処理について説明する。
すなわち、 1 2 3 4 6 10 10 mul ln 10 ln add lt {4 2 roll exch dup add mul sub add}if …(10) の部分プログラムに対する部分計算による最適化処理に
ついて説明する。
【0091】まず、(10)の部分プログラムに対し
て、乗算の命令「mul」による四則演算「10 10 mul」が
部分計算され、「10 10 mul」は、部分計算結果「100」
に置き換えられ、(10)の部分プログラムは次のよう
になる。
【0092】 1 2 3 4 6 100 ln 10 ln add lt {4 2 roll exch dup add mul sub add}if さらに、対数演算の命令「ln」による数学関数演算「10
0 ln」が部分計算され、「100 ln」は、部分計算結果
「4.60517」に置き換えられ、(10)の部分プログラ
ムは次のようになる。
【0093】 1 2 3 4 6 4.60517 10 ln add lt {4 2 roll exch dup add mul sub add}if さらに、数学関数演算「10 ln」が部分計算され、「10
ln」は、部分計算結果「2.30259」に置き換えられ、
(10)の部分プログラムは次のようになる。
【0094】 1 2 3 4 6 4.60517 2.30259 add lt {4 2 roll exch dup add mul sub add}if さらに、加算の命令「add」による四則演算「4.60517
2.30259 add」が部分計算され、「4.60517 2.30259 ad
d」は、部分計算結果「6.90776」に置き換えられ、(1
0)の部分プログラムは次のようになる。
【0095】1 2 3 4 6 6.90776 lt {4 2 roll exch du
p add mul sub add}if さらに、比較演算「6 6.90776 lt」が部分計算され、
「6 6.90776 lt」は、部分計算結果「true」に置き換え
られ、(10)の部分プログラムは次のようになる。
【0096】 1 2 3 4 true {4 2 roll exch dup add mul sub add}if さらに、制御演算「true {4 2 roll exch dup add mul
sub add}if」が部分計算され、部分計算結果「4 2 roll
exch dup add mul sub add」に置き換えられ、(1)
の部分プログラムは次のようになる。
【0097】 1 2 3 4 4 2 roll exch dup add mul sub add さらに、スタック操作演算「1 2 3 4 4 2 roll」の部分
演算が行われる。ここで、「4 2 roll」とは、前の4つ
の要素のスタック位置を2回、回転移動させることであ
り、1回目の回転移動により、前の4つの要素「1 2 3
4」は、「4 1 23」のスタック位置となり、2回目の回
転移動により、4つの要素「4 1 2 3」は、「3 4 1 2」
のスタック位置となる。従って、プログラム「1 2 3 4
4 2 roll」は、部分演算結果「3 4 1 2」に置き換えら
れ、(1)の部分プログラムは次のようになる。
【0098】3 4 1 2 exch dup add mul sub add 同様にして、スタック操作演算「1 2 exch」の部分計算
が行われて、「1 2 exch」は部分演算結果「2 1」に置
き換えられて、3 4 2 1 dup add mul sub addとなり、
コピーを指示する「1 dup」の部分演算が行われて、「1
dup」は、部分演算結果「1」に置き換えられて、3 4 2
1 1 add mul sub addとなり、四則演算「1 1 add」の
部分演算が行われて、「1 1 add」は、部分演算結果
「2」に置き換えられて、3 4 2 2 mul sub addとなり、
四則演算「2 2 mul」の部分演算が行われて、「2 2 mu
l」は、部分演算結果「4」に置き換えられて、3 4 4 su
b addとなり、減算を示す四則演算「4 4 sub」の部分演
算が行われて、「4 4 sub」は、部分演算結果「0」に置
き換えられて、3 0 addとなり、最後に四則演算「3 0 a
dd」の部分演算が行われて、「3 0 add」は、部分演算
結果「3」に置き換えられて、3となる。この結果、
(1)の部分プログラムである 1 2 3 4 6 10 10 mul ln 10 ln add lt {4 2 roll exch dup add mul sub add}if は、3に置き換えられることになり、(1)の部分プロ
グラムを含むポストスクリプトで記述された全体プログ
ラムは、同様な部分計算が行われて最適化される。
【0099】ここで、最適化とは、例えば上述した部分
プログラムがネスト構造内に配置されたり、分岐判断条
件として利用される繰り返し演算がなくなることによ
り、効率的なプログラムとすることを意味する。また、
本実施例においては直線書きあるいはマスク処理等の画
像処理に関するプログラムに縮約されることを意味し、
後述するプログラムの等価性判断にも資することにな
る。
【0100】次に、上述したページ記述言語プログラム
の正当性検証及び最適化により、プログラムに誤りがな
く、かつ最適化されたページ記述言語プログラム(以
下、最適化プログラムという)は、画像生成部5に入力
され、等価性検証部11による最適化プログラムの等価
性検証及び展開処理が行われる。以下、図4のフローチ
ャートを参照して、画像生成部5による画像生成処理手
順の概要を説明する。
【0101】図4において、入力された最適化プログラ
ムは、等価性検証部11により後述する等価性の判断が
行われ(ステップ201)、プログラムが等価であると
判断された場合、制御部10は、記憶部14から、この
プログラムに等価な等価プログラムEPに対応する解釈
画像BDを取り出し(ステップ202)、この取り出し
た解釈画像BDをページメモリ17に転送する(ステッ
プ203)。
【0102】一方、ステップ201でプログラムが等価
でないと判断された場合、この等価でないプログラムを
ページ記述言語処理系20、すなわち展開処理部12に
転送し、展開処理を実行する(ステップ204)。この
展開処理において、ビットマップ文字を生成する場合
は、記憶部14内のフォントデータ16を用い、一度ビ
ットマップに展開された文字はキャッシュメモリ13に
キャッシュされて再利用される。また、記憶部14から
取り出されたフォントデータもキャッシュメモリ13の
メモリ容量が許す限りキャッシュを行い、フォントデー
タの再利用も行われる。そして、展開処理されたビット
マップデータは、ページメモリ17に順次転送される。
その後、展開処理された解釈画像とこれに対応するプロ
グラムとは、対データ15として記憶部14に保存され
(ステップ205)、その後の等価性検証を介した再利
用に資する。
【0103】なお、記憶部14に記憶されている等価プ
ログラムEPは既に最適化されたプログラムである。
【0104】このようにして、画像生成部5は最適化プ
ログラムに対して順次等価性検証処理を行って、既に展
開処理済のプログラムと等価なプログラム部分を展開処
理させることなく、該等価なプログラムを解釈画像に置
き換えて、画像生成処理の高速化を実現している。
【0105】次に、図5のフローチャートを参照して、
等価性検証部11の処理手順について説明する。
【0106】図5において、等価性検証部11は、ま
ず、変数の対をリストとして一時保持する領域を有し、
この領域の保持状態をクリアにする(ステップ30
1)。変数の対をリストとして保持するのは、入力され
た最適化プログラム及び記憶部14内に保持されている
複数の等価プログラムEPが記述する変数の対応関係を
保持するためである。すなわち、変数が異なっていて
も、その変数の使用方法が同じであれば等価なプログラ
ムであると判断されるからである。なお、等価プログラ
ムEPは1以上記憶部14に格納されているが、図5で
は、説明の便宜上1つの等価プログラムEPと入力され
た最適化プログラムとの等価性を検証する場合について
説明する。また、最適化プログラムのトークンは、順次
A1,A2,A3,…として記述されているものとし、
等価プログラムのトークンは、順次B1,B2,B3,
…として記述されているものとする。
【0107】さて、等価性検証部11は、ステップ30
1の領域のクリアの後、最適化プログラム及び等価プロ
グラムからそれぞれ最初のトークンA1,B1を取り出
す(ステップ302)。そして、トークンA1が変数で
あるか否かを判断し(ステップ303)、A1が変数で
ある場合は、さらにトークンB1が変数であるか否かを
判断する(ステップ304)。ステップ304でトーク
ンB1が変数でないと判断された場合、最適化プログラ
ムのトークンA1は変数であり、等価プログラムのトー
クンB1は変数でない、すなわち定数、例えば数値であ
るため、明らかにそれぞれのトークンは等価ではないた
め、それぞれのプログラムは等価でないと判定され(ス
テップ311)、ステップ301に移行する。
【0108】ステップ304でトークンB1が変数であ
ると判断された場合、さらにトークンA1が領域の変数
対リストに登録されているか否かを判断し(ステップ3
05)、トークンA1が変数対リストに登録されている
場合は、さらにトークンA1とトークンB1とが対とな
って登録されているか否かを判断し(ステップ30
6)、対となって登録されている場合は、最適化プログ
ラムと等価プログラムとの2つのプログラムが等価であ
る可能性があるとして、それぞれ次のトークンA2,B
2を読み込む(ステップ307)。ステップ305でト
ークンA1が登録されていない場合、トークンA1とト
ークンB1とを対として変数対リストに登録した(ステ
ップ309)後、ステップ307に移行し、2つのプロ
グラムから次のトークンA2,B2を読み込む。また、
ステップ306で、トークンA1とトークンB1とが変
数対リストに対となって登録されていない場合、該2つ
のプログラムは等価でないと判定し(ステップ31
1)、ステップ301に移行する。
【0109】一方、ステップ303でトークンA1が変
数でないと判断された場合は、さらにトークンA1とト
ークンB1とが一致するか否かを判断し(ステップ31
0)、一致しない場合、2つのプログラムは等価でない
と判定して(ステップ311)、ステップ301に移行
し、一致する場合は、2つのプログラムが等価である可
能性があるとして、ステップ307に移行し、2つのプ
ログラムからそれぞれ次のトークンA2,B2を取り出
す。
【0110】ステップ307で2つのプログラムから次
のトークンの取り出しが失敗したか、すなわち次のトー
クンが存在しなかったか否かを判断し(ステップ30
8)、次のトークンが存在しなかった場合、2つのプロ
グラムは等価であると判定し(ステップ)、ステップ3
01に移行し、次のトークンが存在する場合は、ステッ
プ303に移行しして上述した処理を繰り返す。
【0111】このようにして等価性検証部11は、最適
化プログラムと等価プログラムとの等価性の判定を、変
数対リストを用い、また変数か否かの判断をトークン毎
に行うことによって処理している。なお、等価でないと
判定された最適化プログラム内のプログラムは展開処理
部12に入力され、通常の展開処理が実行され、等価で
あると判定された最適化プログラム内のプログラムは、
処理されず、等価であると判定された等価プログラムに
対応する解釈画像が最適化プログラム内のプログラム処
理結果としてそのまま取り出される。
【0112】次に、具体的なプログラムを示して等価性
の判定処理について説明する。
【0113】ここでは、最適化プログラム内のプログラ
ムの例を、 /x 1 def x setwidth …(11) とし、記憶部14内に保持されている等価プログラムの
例を、 /y 1 def y setwidth …(12) とする。なお、(11)のプログラムの意味は、変数”
x”を値”1”とする定義を行い、この定義された変数”
x”の値に線幅を設定することである。
【0114】まず、ステップ301で変数対リストはク
リアされ、”()”に設定され、ステップ302で(1
1)に示す最適化プログラムの最初のトークン”/x”と
(12)に示す等価プログラムの最初のトークン”/y”
が読み込まれる。ステップ303で(11)の最初のト
ークン”x”が変数であると判断され、さらにステップ
304で(12)の最初のトークン”y”も変数と判断
されて、ステップ305に移行する。ステップ305に
おいて、変数対リストには、まだ何も登録されているな
いので、ステップ309に移行し、トークン”x”,”
y”と変数対として変数対リストに登録し、”((x y))”
とする。その後、ステップ307で(11)及び(1
2)の次のトークン”1”,”1”を読み込み、次のトー
クンが存在したので、ステップ303に移行する。
【0115】ステップ303では、(11)の第2のト
ークン”1”が変数ではないので、ステップ310に移
行し、ステップ310で、(11)の第2のトークン”
1”と(12)の第2のトークン”1”とが等しいと判断
される。そして、ステップ307でさらに(11)の次
のトークン”def”と(12)の次のトークン”def”と
が読み込まれ、同様にして、ステップ303で(11)
の第3のトークン”def”が変数でないと判断され、ス
テップ310で(11)の第3のトークン”def”と
(12)の第3のトークン”def”とが等しいと判断さ
れて、ステップ307でさらに(11)の次のトーク
ン”x”と(12)の次のトークン”y”とを読み込む。
【0116】ステップ303で(11)の第4のトーク
ン”x”が変数であり、ステップ304で(12)の第
4のトークン”y”が変数であるため、ステップ305
で(11)の第4のトークン”x”が変数対リストに登
録されているか否かが判断され、第4のトークン”x”
は、変数対リストに既に登録されているため、ステップ
306で、変数対リスト”((x y))”から”x”に対応す
る”y”を取り出し、この取り出した”y”と(12)の
第4のトークン”y”とが等しいか否かが判断され、等
しいことからステップ307で、(11)の次の第5の
トークン”setwidth”と(12)の次の第5のトーク
ン”setwidth”とが取り出され、ステップ303に移行
する。
【0117】ステップ303では、(11)の第5のト
ークン”setwidth”が変数でないと判断され、ステップ
310では、(11)の第5のトークン”setwidth”と
(12)の第5のトークン”setwidth”とが等しいと判
断されて、ステップ307に移行し、さらに(11)と
(12)の次のトークンの取り出しを行うが、ステップ
308で次のトークンは存在しないと判断され、結局ス
テップ312において、(11)の最適化プログラムと
(12)の等価プログラムとは等価であると判定され
る。
【0118】実際、(11)の最適化プログラムと(1
2)の等価プログラムとは、変数”x”と変数”y”とが
異なるのみであり、変数の用い方が同じであるため、等
価、すなわち、同じ処理結果が出力される。
【0119】このようにして本実施例においては、まず
型推論によるページ記述言語プログラムの正当性を検証
し、ページ記述言語プログラムに誤りが存在するまま該
プログラム処理を実行する無駄をなくし、かつ、この正
当性検証の過程における解析結果を用いてページ記述言
語プログラムを部分計算し、この部分計算結果に置き換
えることにより、入力されたページ記述言語プログラム
の最適化を行うようにして、重複する演算処理をなくし
ている。その後、最適化されたプログラムと予め保持さ
れた等価プログラムとのプログラム等価性を判断し、等
価な部分のプログラムを等価プログラムに対応する解析
画像に置き換えて出力するようにしている。このため、
展開処理におけるプログラム処理にかかる負荷は非常に
小さくなり、全て解析画像に置き換えられる場合には、
展開処理にかかる負荷が皆無になることになる。しかも
展開処理においてキャッシュ技術も用いているのでさら
に処理が高速化される。
【0120】従って、予め保持されたプログラム単位の
解析画像を再利用することにより、最も処理時間のかか
るページ記述言語処理系における処理を必要最小限に抑
えることができ、入力されたページ記述言語プログラム
の全体処理にかかる時間が大幅に短縮される。
【0121】なお、上述した実施例において、最適化部
4は、入力されたページ記述言語プログラムの正当性検
証処理と部分計算による最適化とを同時並行的に行うよ
うにしているが、正当性検証処理と最適化処理とを分離
し、入力されたページ記述言語プログラムの正当性検証
処理が全て終了した時点で、部分計算による最適化を行
うようにしてもよい。
【0122】
【発明の効果】以上詳細に説明したように、第1の発明
では、保持手段が画像生成プログラムと該画像生成プロ
グラムによって生成された画像とを対応づけて保持して
おり、特定手段は、入力画像生成プログラムが入力され
ると、該入力画像生成プログラムと構成する1以上の画
像生成プログラムと等価な画像生成プログラムを保持手
段から特定し、制御手段は、特定手段が特定した画像生
成プログラムに対応する画像を保持手段から直接取り出
し、画像生成手段を通さない。また、制御手段は、特定
手段が特定できなかった入力画像生成プログラム内の画
像生成プログラムを画像生成手段に入力し、該画像生成
プログラムが示す画像を生成させる。そして、制御手段
は、保持手段から取り出した画像と画像生成手段が生成
した画像とから入力画像生成プログラムに対応する出力
画像を出力させるようにしている。
【0123】従って、第1の発明では、既に保持手段に
保持されている画像が再利用されて、画像生成手段によ
る画像生成処理が行われないことから、画像生成手段が
処理する画像生成プログラムの処理負荷は大幅に軽減さ
れ、結果として入力画像生成プログラムの処理が高速に
行うことができ、該入力画像生成プログラムの処理時間
が大幅に短縮されるという利点を有する。
【0124】第2の発明では、等価性判定手段が、入力
画像生成プログラムを構成する1以上の画像生成プログ
ラムと前記保持手段に保持されている画像生成プログラ
ムとが等価であるか否かを判定し、特定手段は、この判
定結果に基づいて保持手段に保持されている画像生成プ
ログラムを特定するようにしている。
【0125】従って、入力画像生成プログラムを構成す
る1以上の画像生成プログラムが、使用される変数等の
形式的な違いを含めて、保持手段に保持されている画像
生成プログラムと実質的に等価か否かを判定し、再利用
される画像を特定することができるという利点を有す
る。
【0126】第3の発明では、最適化手段が、入力画像
生成プログラムのうち、実行結果が確定している部分プ
ログラムを、該部分プログラムの実行結果で置換して、
該入力画像生成プログラムを最適化し、この最適化手段
によって最適化された画像生成プログラムが保持手段に
保持され、また特定手段には最適化された入力画像生成
プログラムが入力されるようにしている。
【0127】従って、画像生成処理が実行される前に、
入力画像生成プログラムが最適化されるため、画像生成
処理時における重複した計算処理を回避することがで
き、これにより、画像生成処理にかかる時間が短縮され
るという利点を有する。また、保持手段には最適化され
た画像生成プログラムが格納され、特定手段に入力され
る入力画像生成プログラムも最適化されているため、特
定手段による特定処理が容易になり、結果として高速化
が図れるという利点を有する。
【0128】第4の発明では、まず型推論手段が、入力
画像生成プログラム内の命令定義及び命令の記述の型が
正しいか否かの型推論を行い、正しくないとする型推論
が行われた場合、正しくない旨の通知を出力し、該入力
画像生成プログラムの処理を中止する。一方、入力画像
生成プログラムが正しいとする型推論が行われた場合、
該入力画像生成プログラムの処理を続行する。一方、型
推論手段による型推論過程において、判定手段が、命令
の型が正しいと推論される毎に該命令の実行結果が確定
した値になるか否かを判定し、部分実行手段が、確定す
る値になると判定された命令に関する部分プログラムを
実行し、置換手段が、該部分プログラムを前記部分実行
手段による実行結果で置換するようにしている。
【0129】従って、入力画像生成プログラムの正当性
が検証され、無駄な処理を行わずに済むとともに、入力
画像生成プログラムを最適化し、その後の重複する処理
が削減されるという利点を有する。
【0130】第5の発明では、画像生成手段が、画像生
成処理過程によって生成される画像と該画像に対応する
画像生成プログラムとを対応させて保持手段に保持する
ようにしている。
【0131】従って、保持手段においては、再利用され
る画像と該画像に対応する画像生成プログラムとが自動
的に保持、生成されるという利点を有する。
【0132】第6の発明では、まず最適化手段が入力画
像生成プログラムの最適化を行う。この際、最適化手段
の型推論手段が型推論を行って、入力画像生成プログラ
ムが正しく記述を有する推論した場合、該入力画像生成
プログラムの処理を中止する。また、型推論手段の型推
論過程において命令の型が正しいと推論される毎に判定
手段が該命令の実行結果の値が確定した値になるかを判
定し、部分実行手段が確定する値になると判定された命
令に関する部分プログラムを実行し、置換手段が部分プ
ログラムを該部分プログラムの実行結果に置換する。す
なわち、型推論手段が入力画像生成プログラムが正しい
記述であると推論される場合に、入力画像生成プログラ
ムは、部分実行が可能な部分プログラムが予め実行され
た最適なプログラムとなる。また、この最適化された入
力画像生成プログラムは、等価性判定手段によって該入
力画像生成プログラムを構成する1以上の画像生成プロ
グラムと保持手段に保持されている画像生成プログラム
とが等価であるか否かが判定され、特定手段が、等価で
あると判定した画像生成プログラムに対する保持手段に
保持されている画像生成プログラムを特定する。ここ
で、保持手段には、予め前記最適化手段によって最適化
された画像生成プログラムと該画像生成プログラムに対
応する画像とが対応づけられて保持されている。一方、
制御手段は、特定手段が特定した画像生成プログラムに
対応する画像と、特定手段が特定できなかった画像生成
プログラムを画像生成手段に入力し、この画像生成手段
によって生成された画像とに基づいて、入力画像生成プ
ログラムに対応する出力画像を生成する制御を行う。こ
こで、画像生成手段は、新たに入力された画像生成プロ
グラムとこの画像生成プログラムに基づいて生成した画
像とを対応づけて保持手段に保持するようにしている。
【0133】従って、入力画像生成プログラムを出力画
像の生成に先だって入力画像生成プログラムの正当性を
検証することができるため、無駄な処理が行われること
がないとともに、この正当性の検証過程を用いて入力画
像生成プログラムが最適化されるので、入力画像生成プ
ログラムの正当性の検証と最適化とが効率的に行われる
という利点を有する。
【0134】また、入力画像生成プログラムの最適化に
より、重複するプログラム処理を削減することができる
という利点を有する。
【0135】さらに、出力画像の生成では、既に保持手
段に格納されている画像が再利用されるので、画像生成
手段にかかる負荷が軽減されることにより、出力画像の
生成にかかる時間が短縮され、入力画像生成プログラム
の正当性の検証、最適化と相まって、入力画像生成プロ
グラムの全体処理時間を大幅に短縮することができると
いう利点を有する。
【図面の簡単な説明】
【図1】本発明の一実施例であるページ記述言語プログ
ラム処理装置の構成を示す図。
【図2】図1に示すページ記述言語プログラム処理装置
によるページ記述言語プログラムPの処理概要を説明す
る図。
【図3】最適化部4による、ページ記述言語プログラム
Pの正当性検証処理及び最適化処理の手順を示すフロー
チャート。
【図4】画像生成部5による画像生成処理手順を示すフ
ローチャート。
【図5】等価性検証部11の処理手順を示すフローチャ
ート。
【符号の説明】
1…入力部 2…ページ記述言語プログラム処理部 3
…出力部 4…最適化部 5…画像生成部 6…出力制御部 7…
正当性検証部 8…変換処理部 9…部分計算部 10…制御部 11
…等価性検証部 12…展開処理部 13…キャッシュメモリ 14…記
憶部 15…等価プログラムと解釈画像との対データ 16…
フォントデータ 17…ページメモリ P…ページ記述言語プログラム
D…出力画像データ
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.6,DB名) G06T 1/00 - 17/50 B41J 5/00 - 5/52 B41J 21/00 - 21/18 G06F 3/09 - 3/12 G06F 9/44 - 9/45 G06F 17/20 - 17/28

Claims (6)

    (57)【特許請求の範囲】
  1. 【請求項1】 画像生成プログラムを解釈して該画像生
    成プログラムに対応する画像を生成する画像生成手段
    と、 画像生成プログラムと該画像生成プログラムによって生
    成された画像とを対応づけて保持する保持手段と、 入力画像生成プログラムを構成する1以上の画像生成プ
    ログラムと等価な画像生成プログラムを前記保持手段か
    ら特定する特定手段と、 前記特定手段が特定した画像生成プログラムに対応する
    画像と、前記特定手段が特定できなかった画像生成プロ
    グラムを前記画像生成手段に入力して生成された画像と
    に基づいて、前記入力画像生成プログラムに対応する出
    力画像を生成する制御を行う制御手段とを具備したこと
    を特徴とする画像生成プログラム処理装置。
  2. 【請求項2】 入力画像生成プログラムを構成する1以
    上の画像生成プログラムと前記保持手段に保持されてい
    る画像生成プログラムとが等価であるか否かを判定する
    等価性判定手段を具備し、 前記特定手段は、該等価性判定手段が等価であると判定
    した画像生成プログラムに対応する前記保持手段に保持
    されている画像生成プログラムを特定することを特徴と
    する前記請求項1記載の画像生成プログラム処理装置。
  3. 【請求項3】 前記入力画像生成プログラムのうち、実
    行結果が確定している部分プログラムを、該部分プログ
    ラムの実行結果で置換して、該入力画像生成プログラム
    を最適化する最適化手段を具備し、 前記保持手段が保持する画像生成プログラムは、前記最
    適化手段によって最適化されたプログラムであり、前記
    入力画像生成プログラムは、前記最適化手段によって最
    適化されたプログラムであることを特徴とする前記請求
    項1記載の画像生成プログラム処理装置。
  4. 【請求項4】 前記最適化手段は、 入力画像生成プログラム内の命令定義及び命令の記述の
    型が正しいか否かの型推論を行う型推論手段と、 前記型推論手段によって前記命令の型が正しいと推論さ
    れる毎に該命令の実行結果が確定した値になるか否かを
    判定する判定手段と、 前記判定手段によって確定した値になると判定された命
    令に関する部分プログラムを実行する部分実行手段と、 前記部分プログラムを前記部分実行手段による実行結果
    で置換する置換手段とを具備したことを特徴とする前記
    請求項3記載の画像生成プログラム処理装置。
  5. 【請求項5】 前記画像生成手段は、画像生成処理過程
    によって生成される画像と該画像に対応する画像生成プ
    ログラムとを対応させて前記保持手段に保持することを
    特徴とする前記請求項1記載の画像生成プログラム処理
    装置。
  6. 【請求項6】 入力画像生成プログラムの命令定義及び
    命令の記述の型が正しいか否かの型推論を行う型推論手
    段、 前記型推論手段によって前記命令の型が正しいと推論さ
    れる毎に該命令の実行結果が確定した値になるか否かを
    判定する判定手段、 前記判定手段によって確定した値になると判定された命
    令に関する部分プログラムを実行する部分実行手段、 前記部分プログラムを前記部分実行手段による実行結果
    で置換する置換手段からなる前記入力画像生成プログラ
    ムを最適化する最適化手段と、 前記最適化手段によって最適化された画像生成プログラ
    ムと該画像生成プログラムに対応する画像とを対応づけ
    て保持する保持手段と、 画像生成プログラムを解釈して該画像生成プログラムに
    対応する画像を生成するとともに、生成された画像と該
    画像の画像生成プログラムとを前記保持手段に保持する
    画像生成手段と、 前記最適化手段によって最適化された入力画像生成プロ
    グラムを構成する1以上の画像生成プログラムと前記保
    持手段に保持されている画像生成プログラムとが等価で
    あるか否かを判定する等価性判定手段と、 前記等価性判定手段が等価であると判定した画像生成プ
    ログラムに対する前記保持手段に保持されている画像生
    成プログラムを特定する特定手段と、 前記特定手段が特定した画像生成プログラムに対応する
    画像と、前記特定手段が特定できなかった画像生成プロ
    グラムを前記画像生成手段に入力して生成された画像と
    に基づいて、前記入力画像生成プログラムに対応する出
    力画像を生成する制御を行う制御手段とを具備したこと
    を特徴とする画像生成プログラム処理装置。
JP7078994A 1995-04-04 1995-04-04 画像生成プログラム処理装置 Expired - Fee Related JP2982647B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7078994A JP2982647B2 (ja) 1995-04-04 1995-04-04 画像生成プログラム処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7078994A JP2982647B2 (ja) 1995-04-04 1995-04-04 画像生成プログラム処理装置

Publications (2)

Publication Number Publication Date
JPH08279031A JPH08279031A (ja) 1996-10-22
JP2982647B2 true JP2982647B2 (ja) 1999-11-29

Family

ID=13677458

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7078994A Expired - Fee Related JP2982647B2 (ja) 1995-04-04 1995-04-04 画像生成プログラム処理装置

Country Status (1)

Country Link
JP (1) JP2982647B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5323421B2 (ja) * 2008-08-21 2013-10-23 京セラドキュメントソリューションズ株式会社 画像形成装置、画像形成システム及び画像作成方法
JP5842029B2 (ja) * 2014-05-15 2016-01-13 株式会社 ディー・エヌ・エー 画像データをキャッシュする情報処理支援装置、情報処理装置及び情報処理支援プログラム

Also Published As

Publication number Publication date
JPH08279031A (ja) 1996-10-22

Similar Documents

Publication Publication Date Title
US6253374B1 (en) Method for validating a signed program prior to execution time or an unsigned program at execution time
US6658603B1 (en) Method and apparatus for efficiently generating and implementing engine error codes and verifying the correctness of the implementation of the engine error codes
JP2982647B2 (ja) 画像生成プログラム処理装置
JP6567212B2 (ja) 等価性検証装置および等価性検証プログラム
JP3011552B2 (ja) 制限チェッカ発生器
JPH07175629A (ja) 文字コード変換装置
JPH11224186A (ja) ソフトウェア解析装置及びソフトウェア解析方法
JP3301203B2 (ja) ページ記述言語プログラム変換装置
JPH06149793A (ja) ページ記述言語プログラム検証装置
JP2000242478A (ja) 実行可能性判定装置およびその方法
JP2907129B2 (ja) パッチ作成システム
JP2001060240A (ja) フォーマット修正方法およびデータ変換方法
US6957176B2 (en) Reduction processing method and computer readable storage medium having program stored thereon for causing computer to execute the method
AU778165B2 (en) Real-time program audit software
JP2803087B2 (ja) 印刷処理装置
JP3097558B2 (ja) 印刷制御方法及び印刷装置
CN117829123A (zh) 用于处理文本的方法、装置、设备和介质
JP2022148608A (ja) 情報処理装置及びプログラム
JP2795332B2 (ja) ループ処理誤り検出装置
Takahashi et al. Effective automated testing: a solution of graphical object verification
JPH11282722A (ja) プログラム検証方法
JPH07281888A (ja) 水平型マイクロプログラム最適化方法およびその装置
JP2007133536A (ja) 故障検出プログラム作成装置、プリプロセッサ、故障検出プログラム作成方法、及びプログラム
JPH0528010A (ja) ソフトウエアバグ原因推論方法及びエキスパートシス テム
JPH02231634A (ja) ソフトウェア互換性維持方法

Legal Events

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

Free format text: PAYMENT UNTIL: 20070924

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20080924

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20090924

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees