JP4326599B2 - 対話型テキスト修正及びユーザーガイダンスをサポートする方法及びシステム - Google Patents

対話型テキスト修正及びユーザーガイダンスをサポートする方法及びシステム Download PDF

Info

Publication number
JP4326599B2
JP4326599B2 JP18111496A JP18111496A JP4326599B2 JP 4326599 B2 JP4326599 B2 JP 4326599B2 JP 18111496 A JP18111496 A JP 18111496A JP 18111496 A JP18111496 A JP 18111496A JP 4326599 B2 JP4326599 B2 JP 4326599B2
Authority
JP
Japan
Prior art keywords
event
rule
automatic correction
user input
token
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
JP18111496A
Other languages
English (en)
Other versions
JPH09101949A (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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JPH09101949A publication Critical patent/JPH09101949A/ja
Application granted granted Critical
Publication of JP4326599B2 publication Critical patent/JP4326599B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/232Orthographic correction, e.g. spell checking or vowelisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/274Converting codes to words; Guess-ahead of partial word inputs

Description

【0001】
【発明の属する技術分野】
本発明は、一般的には、プログラムを用いる際にユーザーを支援するように設計された、コンピュータシステムにおける自動化された機能に関するものであり、更に特定するならば、自動テキスト修正及びユーザーガイダンス機能に関するものである。
【0002】
【従来の技術】
今日のワード処理ソフトウェアは、未経験のユーザーでさえも精巧なドキュメントを作成することができるようになっいる。ワードプロセッサは、通常、ユーザーが、ドキュメントのスタイル、レイアウト、又は文字フォントを決めることによって、ドキュメントのフォーマットを定めることができるという多数の特徴を具えている。これらの特徴を用いると、ユーザーは、種々のレイアウト、フォント、スタイル等を持つレポート、手紙、メモ等の様々なドキュメントを作成することができる。
【0003】
その反面、新しいフォーマット設定機能の氾濫により、ワードプロセッサの利用を困難なものにしている。今や、ユーザーはドキュメントのフォーマットを定めるための非常に多くのオプションを持っているので、継続してそれらの情報を得ることが極めて困難になっている。ドキュメントのフォーマットを決めるためには、ユーザーはフォーマットを決めるためのコマンドを思い出すか、又はワードプロセッサに対するユーザーインタフェースの多数のオプションから選択しなければならない。最も親切なユーザーインタフェースであっても、ドキュメントのフォーマット設定は面倒で時間のかかることである。
【0004】
ユーザーがフォーマット設定機能を選択すると、ワードプロセッサの挙動が時には混乱した状態になる。例えば、ユーザーが図表オプションを選択すると、テキストを入力するための複雑さのレベルが上がる。ユーザーは、時には図表にテキストを入れるための新しいコマンドを学習しなければならなくなる。これらのコマンドは、ワードプロセッサ毎に変わることがあり、平均的なユーザーにとっては直観的に認識できるものではない。
【0005】
殆どのユーザーにとって、ドキュメントを作成する最も容易な方法は、タイプライターに打ち込むように単にテキストを入力することである。平均的なユーザーはワードプロセッサを用いてドキュメントを作成するために、時に彼の/彼女のタイプライターのキーに対する馴れに頼っている。例えば、アウトラインを作る時、通常のユーザーは手動で数字及び文字を入力し、タブキーを用いて種々のセクションのインデントを行う。多くのユーザーは、いつでもアウトライン機能を選択することができアウトラインフォーマットを自動的に発生するワードプロセッサを持っている時でさえ、このような方法でアウトラインを作っている。このワードプロセッサの能力の利点を利用することに対する抵抗は、他の多くのフォーマット設定機能にも同様に当てはまる。このように、ワードプロセッサは、かなり職業的なドキュメントを作成する際にユーザーを助ける目的で設計されているが、彼らはそれでも通常のタイプライターを使うのと同様にテキストを入力することがずっと快適だと感じている。
【0006】
フォーマット設定機能は、大部分のユーザーがワードプロセッサで用いる方法を完全に揃えていないので充分に役立つものではない。ユーザーは、フォーマット設定機能の選択の方法を学習するために時間を取ることを望まないし、それらを使うことに満足することもない。従って、ドキュメントのフォーマット設定の負担を軽減するワードプロセッサが必要であり、同時に、更に広い範囲のフォーマット設定オプションを具えることが必要である。
【0007】
実際に存在するワードプロセッサは、更に、ユーザーが誤りのないドキュメントを作成することを助ける付加機能を含むことによって改良することができる。特に能力が劣るタイピストにとって役に立つ1つの機能は、打ち込みのエラーを自動的に修正することである。自動的な修正は、エラーを発見すること、及びユーザーに対して停止及び変更の要求をせずにそれらを正しいテキストに置き換えることに関する。マイクロソフト社のワード処理プログラムであるワード6は自動修正機能を持っており、更に効率的に動作するように、且つ種々の型のエラーに対して容易に拡張することができるように改良することができる。
【0008】
【発明が解決しようとする課題】
上述のように、ワードプロセッサに対して新しい機能を追加しても、その新しい機能の使い方をユーザーが迅速に且つ容易に学習できなければ、それを容易に利用するようにはならない。ユーザーに対してガイダンスを提供するための1つの方法は、「ヘルプ」テキストに対するリンクを作ることである。多くのプログラムが、ユーザー命令及びプログラムの機能についての記録と共に、ヘルプスクリーンに対するクイックアクセスを具えている。このオンラインガイダンスは有用であるが、それでもユーザーがドキュメントの作成を止め、手動で所望の情報の走査を行うことが必要である。ワードプロセッサ及びその他のアプリケーションプログラムは、所望の機能の使い方に対する有用なガイダンス、助言、及び近道を自動的に提供するように設計するならば、ずっと使い易くなるだろう。
【0009】
【課題を解決するための手段】
現存するワード処理システムに係わる問題に近づくため、1つの実施例は、対話型自動フォーマット設定機能を具え、ワード処理を簡易化し改良している。対話型自動フォーマット設定機能は、ユーザーが打ち込むと同時にワードプロセッサが自動的にフォーマットを決定する。
【0010】
1つの実施例によれば、対話型自動フォーマット設定機能は、ユーザーが打ち込む時にユーザー入力をモニターし、多数の自動フォーマット設定規則に従って自動的にドキュメントのフォーマットを設定する。自動フォーマット設定機能は、ユーザーがキーボードによって文字を打ち込む時にそれらを読取る。次に文字を分析して予め定められたイベントとの同定を行う。
【0011】
予め定められたイベントは、自動フォーマット設定規則に対するアーギュメントである。1つのイベントが生起すると、次に関連する規則が評価される。規則が満足されると対話型自動フォーマット設定機能が自動フォーマット設定動作を開始し、ユーザーが打ち込む時にこれらの動作を自動的に実行する。
【0012】
このシステムにおけるフォーマット設定は、ユーザーがドキュメントを編集している間に行われるという意味で「対話型」である。ユーザーがフォーマットのコマンド又はバッチフォーマット設定機能を個別に呼出す必要はない。このように、ユーザーはフォーマット機能の呼出し方を記憶する必要はなく、一時中止して規定されたコマンドを選択する必要もない。ユーザーは、単にタイプライターに打ち込むように、テキストを入力する方法を知ることが必要であるだけであり、ユーザーが打ち込む時に、対話型フォーマット設定機能が自動的にドキュメントのフォーマットを設定する。
【0013】
本発明の他の実施例は、改良された自動的な修正(「自動修正」)機能を具える。ユーザーがドキュメントを作成する時、ワードプロセッサはユーザー入力イベントを傍受し、それらを分析し、それらが予め定められたイベントに対応するか否かを決定する。自動修正規則が満足されるような予め定められた自動修正イベント又はイベントのパターンが生起すると、ワードプロセッサが自動修正動作を実行し、1つの文字列を他の文字列で置き換える。
【0014】
この実施例においては、イベントモニター、規則ベースのイベントエンジン及び規則ベースが、これらの自動修正機能を実行するために用いられる。イベントモニターが自動修正イベントを識別した場合は、それらは評価のためにスケジューリングされる。これらのイベントの評価の間に、他のイベント又は規則をスケジューリングすることができる。規則の評価の間に、イベントエンジンが、規則の条件が満足されているか否かを決定する。この自動修正規則に対する条件が満足されると、自動修正動作が実行され、ユーザーが打ち込む時に又はプログラムを用いる時にドキュメントが自動的に修正される。
【0015】
ワードプロセッサは、検出された時に自動的に置き換えられるべき文字列を特定する自動修正入力のリストを保持する。ワードプロセッサは、新しい追加及び存在する入力の削除の両者を含むこのリストの変更をサポートする。自動修正リストに加えて、ワードプロセッサは、或る種の自動修正機能に対する例外のリストを保持し、これも変更することができる。ワードプロセッサは、自動修正規則に対する例外を検出し、これらの例外を自動的に自動修正リストに加える機能をサポートする。
【0016】
他の変形実施例は、予め定められたイベントの検出に応答して、ユーザーに対する「助言」と呼ばれる自動ガイダンスを具える。例えば、予め定められたイベントのパターンが、ユーザーがまごつき、助けを必要としていることを表示することができる。他の例としては、或るイベントが、プログラムが行っていることに対するユーザーの理解を助けるため、又は1つの動作を受入れるか又は拒否するかの選択をユーザーが行えるようにするための動作に対応する助言を含む動作を起動することができる。
【0017】
1つの実施例においては、助言機能は更にイベントモニター、規則ベースのイベントエンジン及び規則ベースと共にサポートされる。イベントモニターが規則ベースの予め定められたイベントを検出した場合は、評価のためにそれらをスケジューリングする。イベントエンジンは、イベントを評価し、続いてスケジューリングされるべき他のイベント又は規則をスケジューリングすることができる。「助言」動作に対応する或る型の規則が評価され、これらの条件が満足される場合は、「助言」動作が自動的に遂行される。助言動作は、一般的に助けになるテキストのボックスの表示を含む。しかし、更に、ユーザーインタフェース制御を含むことができ、これによりユーザーが、「実行」−動作を続ける−又は「実行せず」−プログラムが自動的に実行した動作を無効にする−等のオプションを選択することができるようになる。
【0018】
本発明のその他の利点及び特徴は、以下の詳細な説明及び添付の図面によって明らかになる。
【0019】
【発明の実施の形態】
先ず、本発明の1つの実施例に関する方法及びシステムが実現されるコンピュータシステムの各要素についての説明を行う。続いて、本発明の1つの実施例に関する対話型自動フォーマット設定機能の構成の概観を説明する。次に、この実施例の動作及びその実現方法について付加的な詳細の説明を行う。
【0020】
図1は、本発明の方法及びシステムの実施例を実現するために用いられるコンピュータシステム20のブロック図である。コンピュータシステム20は、基本的な要素としてコンピュータ22、入力デバイス24及び出力デバイス26を含む。
【0021】
コンピュータ22は通常、バス構成32によって通信する中央処理ユニット(CPU)28及びメモリーシステム30を含む。CPU28は、計算を実行するための算術的論理ユニット(ALU)33、データ及び命令を一時格納するためのレジスタ34、及び、アプリケーション又はオペレーティングシステムのようなコンピュータプログラムからの指示に応答してコンピュータシステム20の動作を制御するための制御ユニット36を含む。
【0022】
メモリーシステム30は通常、ランダムアクセスメモリー(RAM)及びリードオンリーメモリー(ROM)半導体デバイスのような媒体の形の高速主メモリー38、及び、フロッピィーディスク、ハードディスク、テープ、CD−ROM等のような媒体の形、及び光学的、磁気的、又は記録材料を用いる他のデバイスの形の2次記憶装置40を含む。主メモリー38は、コンピュータのオペレーティングシステム及び現在走っているアプリケーションプログラムのようなプログラムを格納する。主メモリー38は、更に表示装置を通して画像を表示するためのビデオ表示メモリーを含む。
【0023】
入力デバイス24及び出力デバイス26は、通常、バス構成32によってコンピュータ22に接続される周辺デバイスである。入力デバイス24は、キーボード、モデム、ポインティングデバイス、ペン、その他の、入力データをコンピュータに供給するデバイスである。出力デバイス26は、ディスプレイ装置、モデム、プリンタ、音響装置、その他の、コンピュータからの出力データを供給するデバイスである。
【0024】
図1は、コンピュータシステムの基本的な要素を説明するためのブロック図であることを理解すべきである。図1は、コンピュータシステム20の特別なアーキテクチャを説明することを意図したものではない。例えば、コンピュータシステムの各要素を相互接続するために、コンピュータ設計の分野で既知の種々のバス構成が必要に応じて多くの方法で用いられているので、特定のバス構成は図示されていない。CPU28は、個別のALU33、レジスタ34及び制御ユニット36から構成されてもよいし、マイクロプロセッサのようにCPUの1又は複数のこれらの部分が統合されている単独のデバイスであってもよい。更に、コンピュータシステムの要素の数及び配置は、この分野で既知の方法で、図示され説明されたものから変更してもよい。
【0025】
本発明は、多数の既知のコンピュータシステムのいれによっても実行することができる。例えば、本発明は、例えばIBM−AT互換のパーソナルコンピュータ(PC)、又はインテル社製の 80386、 80486、又はペンチアムプロセッサに基づくコンピュータシステムで実行することができる。他の例として、本発明は、アップル社製のアップルマッキントッシュコンピュータで実行することができる。マッキントッシュコンピュータシステムは、モトローラ社製のMC68000 ファミリーのプロセッサに基づいている。これに代えて、本発明は、RISC(reduced instruction set computing )アーキテクチャに基づくマシンのような、幾つかのコンピュータワークステーションで実行することができる。上述のシステムは、例示としてのみ意味があり、本発明が実行されるコンピュータシステムの型を限定するものと解釈されてはならない。
【0026】
コンピュータシステムのメモリーにロードされたオペレーティングシステムは、本発明の実施例の動作をサポートするための多数の低レベル機能を具える。一般的に、オペレーティングシステムはメモリー、CPUタイム、ディスク空間、及び周辺デバイスのようなハードウェアリソースの割当て及び使用を制御する。よく知られているように、オペレーティングシステムは、モジュール(プロセス及びダイナミックリンクライブラリ)管理、スケジューリング、プロセス間メッセージング、メモリー管理、ファイルシステム管理、及びグラフィックユーザーインタフェースサポートのような低レベル機能を具えている。
【0027】
多数の既知のオペレーティングシステムが、上記に挙げたコンピュータに利用できる。例えば、マイクロソフトDOS及びウィンドウズオペレーティングシステムは、インテル社製のプロセッサのX86ファミリーに基づくコンピュータシステムに広く用いられている。他の例としては、ウィンドウズNTオペレーティングシステムは、インテル社製のプロセッサのX86ファミリーに基づくコンピュータシステムばかりでなく、RISCマシンにも用いることができる。更に他の例としては、UNIXオペレーティングシステム及びそれの変形版は、種々のコンピュータシステムに広く用いられている。
【0028】
本発明は、種々のオペレーティングシステムを用いて実行することができるが、以下に説明する実施例は、マイクロソフト社のウィンドウズオペレーティングシステムで動作するコンピュータシステムで実行される。この実施例は、マイクロソフト社の「ウィンドウズアプリケーションプログラムインタフェース」(Win 32 API)から図形上における窓開け環境についての利点が得られる。ウィンドウズAPIの解説は、マイクロソフト社の「ウィンドウズ95ソフトウェアデベロッパーズキット」(SDK)及びマイクロソフトプレス社発行の「マイクロソフトウィン32プログラマーズリファレンス」のような種々の解説書から得られる。
【0029】
実施例の実行に用いられるハードウェア及びオペレーティングシステムについて説明したので、次に実施例のアーキテクチャに進む。図2は対話型自動フォーマット設定システムのアーキテクチャを示す。このシステムは、3つの基本的な成分、即ち、イベントモニター50、規則ベースイベントエンジン52、及び規則ベース58について説明することができる。このシステムをこの一般的な構成に基づいて説明すると本発明についての明快な理解が得られる。当業者は、この構成が本発明の範囲を逸脱せずに変更することができることが分かる筈である。
【0030】
図2の左側を見ると、イベントモニター50は、ユーザーが打ち込むか又は他の入力を行う時に入力をモニターし、自動的にドキュメント56のフォーマット設定を行う機能を起動するためのシステムの一部であることが分かる。イベントモニター50はユーザー入力を捕捉し、この入力からイベントを生成する。イベントモニター50は、次にこれらのイベントを規則ベースイベントエンジン52に送る。
【0031】
イベントモニターがイベントエンジン52にイベントを送ることにより、イベント及び規則に対する評価のためのスケジューリングが行われる。イベントモニター50は規則ベースイベントエンジン52を呼出し、規則ベース58のインターバルセクションでスケジューリングされた規則及びイベントを評価する。この評価の結果として、イベントエンジン52は、自動フォーマット設定規則を遂行するために生成されるべき遅延動作を生起することができる。いずれかの自動フォーマット設定規則が用いられると、イベントモニター50は、適当な機能に対して呼出しを行う判断を行い、これらの遅延動作を遂行する。
【0032】
説明を続ける前に、この実行例における規則に関する用語を明確にしておくことが重要である。「擬似コード規則」は、人間の言語での自動フォーマット設定動作のための条件を記述する高レベル規則に関する。コンピュータでこれらの擬似コード規則を実行するため、これらはCのような高水準ソースコードで書かれ、規則ソース60に置かれる。規則ソース60中の規則は、次にコンパイルされて規則ベース58を形成する。規則ソース60中の規則は、規則ベース58中の規則と1対1の対応を持っている。従って、一般的な用語「規則」は、規則ソース60及び規則ベース58中の規則の両者に用いられる。規則ベース58の構造は以下に詳細に説明される。
【0033】
再び図2を参照すると、規則ベースイベントエンジン(イベントエンジン)52は、規則ベース58中の規則に従ってユーザー入力を評価するシステムの一部分であることが分かる。
【0034】
イベントエンジン52はイベントを処理するための2つのルーチン、即ち、スケジューリングルーチン及び評価ルーチンを含む。イベントモニター50がイベントをイベントエンジン52に送ると、イベントエンジンは、そのイベントに従属する規則及び他のイベントを決定し、評価のためにそれらのスケジューリングを行う。イベントモニターが評価ルーチンを呼出すと、イベントエンジンは、これらのスケジューリングされた規則及びイベントを評価する。規則の評価がスケジューリングされるべきイベント及び規則の追加の原因になることがあるため、スケジューリング及び評価のステップは相互に関係付けられる。例えば、規則が満足されると、それにより、それに従属する規則が、直接又は新しいイベントを通しての評価のためにスケジューリングされることになる。
【0035】
規則の評価が、他の規則又はイベントをスケジューリングする原因になることがあり得るが、一方で、スケジューリング及び評価ルーチンは分離されている。規則及びイベントは、上述のようにイベントモニター50により、又は評価の間はイベントエンジン52により、スケジューリングされ得る。規則ベース58は、以下に定義される複数のインターバルセクションに分割される。一般的には、規則は、イベントモニターが規則を評価するために評価ルーチンを呼出した時に評価され、イベントは、規則ベースの特定のインターバルセクションでスケジューリングされる。評価の間、評価されたイベント又は規則が追加のイベント又は規則をスケジューリングする時は、評価ルーチンがスケジューリングルーチンを呼出す。インターバルセクションにおける規則及びイベントのスケジューリング及び評価の処理は、そのインターバルセクション中の評価のためにスケジューリングされた規則がなくなるまで続く。
【0036】
イベントモニターは、「イベントインターバル」の識別に応答して「インターバルセクション」のための評価ルーチンを呼出す。
【0037】
規則ベースは、それぞれがイベントの型に対応する複数のインターバルセクションに分割される。1つのインターバルセクションが、イベントの共通の型を処理するために専用になっている。ユーザー入力から、又は他の規則又はイベントの評価から、1つのイベントが生成されると、それがそのインターバルセクションでスケジューリングされる。
【0038】
「イベントインターバル」は、特定のインターバルセクションについてスケジューリングされた規則又はイベントを評価するために評価ルーチンが呼出される時期を決定する。イベントインターバルは、従ってインターバルセクションに対応する。
【0039】
イベントインターバルの概念を明らかにするためには、ユーザー入力に関連付けて説明するのが有効である。イベントモニターは各イベント型の状態の変化を探査している。それぞれインターバルセクションに対応して種々のイベント型があるため、イベントモニターは、各イベント型について状態の変化を監視する。イベントモニターが特定のイベント型について状態の変化(即ちイベントインターバル)を識別すると、それは対応するインターバルセクションの評価を開始する。
【0040】
イベントインターバルは時間に類似する。秒針の正時が新しい秒インターバルを表す。次の分への分針の通過が新しい分インターバルの到来を表す。次の時間への時針の通過が他の時間インターバルの到来を表す。このシステムにおいては、イベントインターバルは時間とは異なる量の状態の変化を表すが、概念は同一である。ここでは、イベントインターバルは、特定のイベント型についての状態の変化を表す。この状態の変化が生起すると、イベントモニターが、対応するイベントセクションについての評価ルーチンを呼出す。
【0041】
この実行例においては、数個のイベントインターバルセクションがある。ユーザーインタフェース、選択、対話、文字、トークン、ライン、文節、オブジェクト及びドキュメントイベントを含む多種のイベントについてのインターバルセクションがある。選択インターバルセクションは、「選択」イベント(即ち、ユーザーがテキストを選択するか又はカーソルを動かす)を追跡する。対話インターバルセクションは、対話ボックス又はメニューの中のユーザー入力イベントを追跡する。ユーザーインタフェースインターバルセクションは、対話インターバルセクションより高いレベルのイベントを追跡し、押しボタン制御の始動、対話の呼出し等のようなイベントを含む。オブジェクトインターバルセクションは、複数文節要素、テーブル等についてのイベントを追跡する。ドキュメントインターバルセクションは、ドキュメントが変わるまで有効なイベントを追跡する。例えばヘッダーが個別のドキュメントと考えられ、従って、ユーザーがヘッダーを開くと、これがドキュメントイベントインターバルセクション中のドキュメントイベントになる。
【0042】
トークンインターバルセクションは、デリミッタ及びワードのような論理ユニットを形成する或る文字又は文字列の追跡を続ける。
【0043】
インターバルセクションの数は変化し得る。多種のユーザー入力の追跡を続けるため、イベントモニターが監視するイベントの数は増加することがあり、これらのイベントを分類するためのイベントインターバルセクションの数もやはり増加し得る。自動フォーマット設定規則については、関連する基本的なインターバルセクションは、文字、トークン、ライン、文節、オブジェクト及びドキュメントである。イベントモニターは、主として自動フォーマット設定規則に妨害を与えるイベントが起きないことを確認するために、更に他の型のイベントを監視する。規則がワード及び文字の或るシーケンスに従属する場合は、その規則に、そのワードと文字との間に他のユーザー入力イベントが起きないという条件を含めることが重要であり得る。例えば、ユーザーがワードを打ち込み、ユーザーインタフェース又は対話インターバルセクションで他のイベントが起き、続いて最終的に文字の打ち込みに戻ると仮定しよう。この例においては、ユーザーのみがワードを及び続いて文字を打ち込むという望ましい条件が、もはや満足されない。要約すると、この規則はイベントの生起及び他のイベントの欠如に従う。
【0044】
イベントをこれらのイベントインターバルセクションに分離することにより、基礎であるイベントエンジンが、規則が評価される時期を制御することができる。他のインターバルセクション中のイベント及び規則が、現在のインターバルセクション中のイベント及び規則によってスケジューリングされ得る。これは、それが或る型のユーザー入力に基づく規則の評価を遅らせる1つの方法であることから、ワード処理に関しては明らかである。インターバルセクションの利用により、ユーザーが行うことについて規則が評価されるべき時期を、規則ベースが表すことが可能になる。例えば、ユーザーは、トークンインターバルセクションについてのイベントインターバルを生成する文字列の打ち込みを行うことができる。このイベントが、トークンインターバルセクション中の規則ベースを通して伝播する場合は、イベントエンジンは、文節インターバルセクションのような一層高いインターバルセクションで、規則をスケジューリングすることができる。この可能性は、規則は、単にスケジューリングされた場合、及び規則ベースにおいて規則が存在するインターバルセクションについてイベントインターバルが生起する場合にのみ評価されることが必要であるに過ぎないので、著しい効率化を生み出すことができる。このように、規則ベースの設計が、規則が満足されるか否かを決定するために必要な処理の量を減らす。他のイベントインターバル又はインターバルセクション中の規則をスケジューリングする能力は、極めて長時間後に起こり得るユーザー動作を予想する能力を規則に与えることができる。
【0045】
次に、図2の右側に移ると、規則ベース58が規則を実行するためのシステムの一部分になっている。規則ソース60は、Cのような高水準言語で書かれ、次に規則コンパイラ62を用いて規則ベース58にコンパイルされた規則である。
【0046】
規則は、追加のイベント又は規則のスケジューリング又はコードの実行のような、動作がとられる前に生起する筈の多数のイベントに基づいて表現される。これらのイベントは、変数に基づいて表現され、規則の条件は、これらの変数をアーギュメントとして用いて論理的に表現される。例えば、規則は、論理的なコネクタを用いて、生起する筈の一連のイベントにおける部分を特定することができる。規則は、更に、「and」、「not」及び「or」、更に、ドキュメント又はワードプロセッサ内の全体的な状態のチェック、又は機能の呼出しを含む論理演算子を用いて多数の条件を定めることができる。
【0047】
高レベルの自動フォーマット設定機能の1つの例は、ユーザーが箇条書きで作成するリストをシステムが予測し、自動的にドキュメントの形式を整えることである。フォーマット機能を呼出す方法が分からない場合は、通常、ユーザーはアステリスクを使う。例えば、文節の最初の文字として、ユーザーは「*」を、続いてスペースを、続いてワードを打ち込むことによってリストを作成することができる。これらの文字に対する自動フォーマット設定のための擬似コード規則は次のようになる。即ち、ラインが「*」で始まり、スペースが続き、ワードが続く場合は、アステリスクを黒丸に変換し自動箇条書きモードを呼出す。ソースコードでは、このアブストラクト規則は一連の順序規則に基づいて記述される。
【0048】
規則コンパイラ62でコンパイルされると、規則はノードのネットワークに格納される。各イベント及び規則はノードによって規則ベース中に表示される。図3はこのネットワークの構成の一例を示す。このネットワークは、複数のインターバルセクション70a-e に配置された多数のノードを含む。各インターバルセクションはイベントインターバルに対応する。同様に、各イベントインターバルセクションは、1つのインターバルセクションの中におけるイベントと規則との内部従属性を反映する多数のレベルを持つことができる。1つのレベルのノードは、次に高いレベルのノード又は上の複数のレベルのノードとの結合を持つことができる。更に、1つのインターバルセクションのノードと高いか又は異なるインターバルセクションのノードとの間の結合も存在し得る。
【0049】
図3は、規則ベース中のノード間の関係を説明する図である。各ノードは多くのイベントに対して従属性を持つことができる。ノードは同一のイベント又は規則に従属するので、ノードの多くは相互従属性である。イベントと規則との間の従属性を表すために、規則コンパイラ62は各規則及びイベントをノードに変換し、ノードをレベルに分類する。規則ノードの1つは、「イベント1が生起したならば、イベント2に続け」であり得る。他の規則又はイベントに従属する規則は、それらが従属する規則又はイベントより高いか又はこれと異なるレベルに存在する。1つのセクションの中では、他のノードに従属するノードは、それらが従属するノードより高いレベルに存在する。
【0050】
ノード間の結合はノード間の従属性を表す。結合は、同一のインターバルにおける直接の結合、イベントを介しての間接の結合、又は他のインターバルにおける評価に対するスケジューリングによる遅延結合が可能である。規則の場合、結合は、規則とそれに従属するノードとの間の関係を表す。直接規則の一例は、「イベント1が生起したならば、イベント2をスケジューリングせよ」である。2つの間接相互従属規則の例は、「イベント1が生起したならば、イベント2を真に設定せよ」及び「イベント2が生起したならば、イベント3を真に設定せよ」である。第1の規則がイベント2の値を変えることができるので、第2の規則は第1の規則に従属する。遅延規則の一例は、「イベント1が生起したならば、1つのインターバルの遅延の後でイベント2をスケジューリングせよ」である。
【0051】
図3に示されたネットワーク構成は、規則がスケジューリングされ、イベントエンジン52で評価される方法を説明するのに役立つ。上述のように、イベントが生起した時に、このイベントを契機として、ノードのスケジューリング及び評価の対話処理が開始される。図3においては、イベントインターバルは、ネットワークのインターバルセクション70a-e に対応する。1つのインターバルセクションに対して1つのイベントが生起すると、イベントエンジン52が、関連するノードをスケジューリングし、そのインターバルセクションの第1レベルで始まる時間にそのノードを1つのレベルに評価する。
【0052】
イベントエンジン52は、1つのレベルに対してスケジューリングされた全てのノードの評価が終了するまで、繰り返しノードを評価しスケジューリングを行う。次に、イベントエンジンは次のレベルに移動し、そのレベルでスケジューリングされたノードを評価する。イベントエンジンは、そのインターバルセクション中の全てのレベルに対してこの処理を続け、やがて停止する。この処理の間、他のインターバルセクションのノードは、図3の異なるインターバルセクションのノード間の結合によって表されるようにスケジューリングされ得る。しかしながら、これらのノードは、イベントモニターがこのインターバルセクションのための評価ルーチンを呼出すまでは評価されない。
【0053】
このネットワークに関しては、1次規則、2次規則、順序規則、及び動作規則を含む規則の多数の異なる型が存在する。1次規則は他の規則に従属しない規則である。1次規則が従属するイベントが値を変える時には、イベントエンジン52は自動的に1次規則をスケジューリングする。2次規則は他の規則に従属する。2次規則は明確に他の規則によってスケジューリングされる。言い換えれば、規則の評価によって、2次規則のスケジューリングが行われる。
【0054】
順序規則は2次規則の1つの型であり、自動フォーマット設定動作がイベントの順序に従属することを可能にする。順序規則は、後のイベントが検出され得る場合に、それが後のイベントに対する合成規則の部分の評価を遅延させるので、イベントエンジンが一連のイベントを検出することを可能にする。順序規則は、特定の数のイベントインターバルの変化が生起するまではそれが評価されないような遅延を持ってスケジューリングされる。例えば、一連のイベントに基づいて、1つのトークンインターバルの中で1つの規則が評価される場合は、この規則は順序規則をスケジューリングし、次のトークンインターバルで評価することができる。2つの規則は、連続的にパターンを検出するための能力との合成規則のように振舞う。このようにして合成規則を構成することによって、2つのトークンイベントが連続的に生起することを、イベントエンジンが検出できる。
【0055】
順序規則は、規則ベース中の規則の評価を遅らせるための1つの方法である。他の方法としては、概略を上述したように、規則が他の規則をネットワーク中の高い又は異なるインターバルセクション70b-e にスケジューリングさせることである。両者の場合共、イベントエンジンは異なるイベントインターバル中で規則を評価することにより、評価を遅らせる。
【0056】
動作規則は遅延した動作を発生することができる規則である。動作規則が満足されると、続いてそれが遅延した動作を遅延動作キューに置く。この遅延した動作は1つの動作であり得るし、実行されるべき多数の動作を含む複合動作でもあり得る。例えば、箇条書きリストを作成する場合、リストを作成するためのドキュメントの編集に係わる多数の動作、及びユーザーにヘルプテキストを表示するようなその他の動作があり得る。これらの遅延した動作を開始するために、イベントモニターがそれらをキューから1度に1つづつ削除し、適当な機能を呼出し、それらを実行する。
【0057】
イベントモニター50、イベントエンジン52、及び規則ベース58について上述したが、次にこれらの成分の実行例について更に詳細に説明する。
【0058】
図2に示すように、イベントモニター50は、ユーザー入力を捕捉するイベントフック80、ユーザー入力から種々のインターバルセクションに対するイベントを発生する複数のイベント発生器82、及び「トークン」に基づいてイベントを識別するレクサー84を含む多数の機能要素を含む。これらの要素に加えて、イベントモニターは、ラインフォーマットバッファからの一連のフォーマット設定されたテキストをアクセスする次のランの取得機能86を含む。レクサーはこのテキストから「テキストトークン」を識別し、これらをテキストトークンキャッシュ88に格納する能力を持つ。フォーマットレクサー90は、一連のテキストから「フォーマットトークン」を識別し、これらを一時的にフォーマットトークンキャッシュ92に格納する。遅延動作インタプリタ94は、機能95を開始して、動作規則の評価の間にイベントエンジンで発生された遅延動作に基づいてドキュメントのフォーマット設定を行う。これらの機能要素の各々について、以下に更に詳細に説明する。
【0059】
フック80は、ワードプロセッサ内の手順からイベント発生器に対する呼出しであり、これは、例えばキーボード上のキーの押下によりイベント発生器に送られるユーザー入力を傍受するためのものである。このイベントフックは、必要に応じて、規則で特定される新しいイベントをサポートするために加えられる。イベントは必要に基づいているため、イベントフックの数及び型は変化し得る。ワードプロセッサプログラムは、種々のユーザー入力イベントを捕捉するため、コードの種々のセクションに位置する多数のフックを含む。フックの一例は、システム中でキーの押下が受信された時にこれを傍受するために用いられる文字イベントフックである。ワードプロセッサは、システムのユーザーインタフェースに対する他の型の入力を傍受するための他のフックを含むことができる。例えば、この実施例は更に、テキスト選択、ボタンを押すマウスクリックのようなユーザーインタフェースイベント、及び対話ボックス内部のユーザー入力からの対話型イベントを検出するためのフックを含む。
【0060】
イベントフックは、ワードプロセッサの動作状態及び傍受されるべき入力に応じて、ワードプロセッサの中の種々の位置に位置することができる。この実施例においては、ユーザーインタフェースイベントに対するフックは、「コマンド送出」と呼ばれる、コマンドを送出するためのルーチンを呼出すコードセクションに位置する。コマンド送出は更にキーボード又はマウスでのユーザー入力に直接対応しないマクロを処理するので、フックは、ユーザー入力をマクロから分離できる更に高次のコードレイヤに位置される。マクロは、本質的に、1又は複数のユーザー入力動作に応答して実行される多数のコマンドを潜在的に含むスクリプトである。従って、スクリプトに含まれるコマンドは、直接にユーザー入力動作にマップすることはない。規則ベース中の規則はユーザー入力の或る型に関連するので、フックは、所望のユーザー入力イベントを検出できるコードセクションに位置しなければならない。しかしながら、フックの位置及び動作は変化し得る。
【0061】
ユーザーインタフェースイベントに対するフックのように、対話型イベントに対するフックは、特に或る型のユーザー入力イベントを傍受するように設計される。この実施例においては、対話ボックスにおけるユーザー入力イベントを傍受するためには、1)対話ボックスの「以前」の状態と「以後」の状態とを比較することによる方法、及び2)ワードプロセッサ中の全ての対話ボックスを処理するための中央集中手順にフックを加えることによる方法の2つの方法がある。第1の方法においては、イベントフックがイベント発生器を呼出し、対話の初期化の間に対話の状態を捕捉し、続いて第2イベントフックがイベント発生器を呼出し、イベント発生器がこの状態を対話が終了した時の対話の状態と比較する。対話ボックスに対する最終のユーザーの変化に従属するのみのイベントが、第1の方法における主流である。第2の方法においては、対話ボックスを処理するためのコード内のイベントフックが、例えばチェックボックスのチェック又は未チェック、押しボタンのクリック等のようなユーザー入力が起きた時にそれを傍受し、そのイベント発生器を呼出してイベントを発生する。規則が対話ボックス内の特定の一連のユーザー入力イベントを知る必要がある場合には、これらのイベントが追加されなければならない。
【0062】
イベントを選択するためのフックは同様に振舞う。このフックは、ユーザーがテキストを選択する時及び選択しない時にこれを検出するように設計される。
【0063】
各イベント発生器82は、ユーザー入力からイベントを発生し、これらのイベントをイベントエンジン52に送る役割を持つ。一般的に、複数のイベント発生器は、個別のルーチンのように実行することができ、又は、1つのルーチンに結合することができる。しかしながら、概念的には、複数の特定のイベント発生器は1つのイベント発生器のように見ることができる。この実施例においては、イベント発生器82は、ユーザーインタフェース、対話、文字、選択、及びトークンイベントに対するイベント発生器を含む。
【0064】
図4は、イベント発生器の概要を示すフロー図である。イベント発生器は、各イベントフックから傍受したイベントに応答して動作を開始する。イベント発生器の最初のステップ100 は、関連するイベントを識別しそれらをスケジューリングすることである。イベント発生器は、フックから得られたイベントから規則ベースに関係するイベントを振るい分ける。一般的に、イベント発生器は、規則ベースに関係するイベントをルックアップするためのテーブルを用いる。しかしながら、或る種のイベントは、後に説明するように、ルックアップテーブル以外のものも含む。この実施例はテーブルを用いて関連するイベントを識別するが、他の方法を用いることもできる。
【0065】
一般的に、このテーブルはユーザー入力イベントを規則ベースに関係する1又は複数のイベントにマップすることができる。テーブル中の各イベントは、インデックスによって規則ベースに関係付けられ、イベントのスケジューリングをサポートする。1つのイベントフックからのイベントが関連するイベントを発生しないことも多数の関連するイベントを発生することもあり得るので、最初のステップ100 は、ゼロか又は複数イベントのスケジューリングに関する。
【0066】
次のステップ102 においては、イベント発生器がイベントエンジンの評価ルーチンを呼出し、1つのインターバルセクションについて規則及びイベントを評価する。例えば、ユーザーインタフェースイベント発生器は、ユーザーインタフェースイベントインターバルに応答して、ユーザーインタフェースインターバルセクションについての評価ルーチンを呼出し、文字イベント発生器は、文字イベントインターバルに応答して、文字インターバルセクションについての評価ルーチンを呼出し、その他も同様である。イベントの数のトラックを保持するため、イベントエンジンは、イベント発生器がそれぞれのインターバルセクションについての評価ルーチンを呼出す度に、毎回1つのインターバルについてカウンタを歩進させる。1つのインターバルセクションについての評価において、規則がこの他のインターバルセクションへの遷移を開始させる場合は、評価ルーチンは更に他のインターバルセクションを評価することができる。例えば、これは、トークン発生器が、ライン、文節、オブジェクト、及びドキュメントインターバルについての評価ルーチンを開始させる方法である。
【0067】
判断ステップ104 は、イベント発生器が、遅延動作が評価ステップ102 の後で実行される必要があるか否かの決定を行うことを示す。肯定の場合は、イベント発生器が遅延動作インタプリタ94を呼出し、通常ステップ106 で表されるように遅延動作を実行する。この実施例においては、各イベント発生器は通常図4のステップに従って実行する。しかしながら、文字及びトークンイベント発生器についての以下の説明から明らかになるように、これと異なる特別な設計も可能である。
【0068】
図5は、文字及びトークンイベント発生器によって実行されるステップの概要を示す。この実施例においては、文字及びトークンイベント発生器が1つのルーチンで実行され効率を最高にする。文字発生器及びトークンイベント発生器の両者共に、ユーザーの1つの文字の打ち込みに応答してイベントを発生することができる。
【0069】
ユーザーが文字を打ち込む時、文字イベントフックが文字イベント発生器を呼出す際に処理が始まる。最初のステップ110 においては、文字イベント発生器が文字フック80から文字を受信する。この文字をルックアップテーブル中で探すことにより、そこにある場合は、文字イベント発生器が文字フックから送られて来た各文字について文字イベントを識別する。
【0070】
次のステップ112 においては、文字イベント発生器は文字イベントをスケジューリングする。文字イベントのスケジューリングにおいては、文字イベント発生器がイベントエンジン中のスケジューリングルーチンを呼出し、文字イベントについてのインデックスを文字インターバルセクションの規則ベースに送る。文字イベント発生器が文字イベントをモニターし、ドキュメント中のパターンを監視する。例えば、順序規則は、次に空白、その次に文字数字が続くワードに従属する。この例においては、合成順序規則は、空白文字及び文字数字についてのワード及び文字イベントに対するトークンイベントに基づいて書かれる。
【0071】
文字イベント発生器は、ステップ114 で示すように、次に文字インターバルについての評価ルーチンを呼出す。評価の間に何らかの遅延動作が生起されると、これらは遅延動作キューに置かれる。文字イベント発生器、キューをチェックして実行すべき遅延動作があるか否かを決定する(ステップ116 )。肯定なら文字イベント発生器が遅延動作インタプリタ94を呼出し、ステップ118 で表されるように、遅延動作を実行する。
【0072】
ステップ110 から118 までが文字イベント発生器の挙動を要約している。打ち込まれたそれぞれの文字は潜在的にトークンを形成する。このように、文字イベント発生器がいずれかの文字イベントを一度処理すると、トークンイベント発生器がトークン関連イベントを処理する。ステップ120 −132 はトークンイベント発生器に関係する。
【0073】
トークンイベント発生器は、トークンに基づいてイベントを発生するためのものである。前述の説明のように、規則ベース58の規則はイベント及び他の規則の両者に従属する。このトークンは、規則ベース58に存在するイベントに、文字からなるユーザー入力と文字列との間の関係を確立する方法を提供する。トークンイベント発生器はレクサーを呼出し、「トークン」イベントを識別する。レクサー84が「トークン」を識別する時は、それは規則ベースに影響する或る型のイベントが生起したことを既に決定している。
【0074】
この実行例には、テキストトークン及びフォーマットトークンの2つの型のトークンがある。テキストトークンは、文字又は文字列を表す。これらのテキストトークンは、これらがワード又は区切り記号全体を表示するので、規則ベースにとって重要である。各々が規則ベースの対応するイベントと1対1の関係を有する。図3は、トークンインターバルセクション70a で、テキストトークンキャッシュから出ている一連の矢印によってノードにリンクされたテキストトークンを表示することにより、テキストトークンがコンパイルされた規則ベースに関係する様子を示す。イベント発生器82がイベントエンジン52に対してテキストトークンを送ると、それはどのイベントが生起したかを知らせることとなり、これにより、関係する規則又はイベントがスケジューリングされ評価される。
【0075】
フォーマットトークンは、テキストに適用されるフォーマットの型に対応し、複数のテキストトークンに亘ることができる。図3は更に、フォーマットトークンがコンパイルされた規則ベース58にどのように関係しているかを示している。テキストトークンと同様に、フォーマットトークンは、規則ベースイベントノードに対応する。フォーマットトークンは、フォーマットトークンキャッシュ92から出ている点線によって示されるように、トークンインターバルセクション、更にラインインターバル及び文節インターバルセクションでイベントに対応することができる。
【0076】
イベントエンジンに到達したそれぞれのトークンは、インデックス、文字位置データ、及び値と結合する。トークンのインデックスは規則ベース58内で1つのノードを特定する。イベント発生器がイベントエンジン52にトークンを送ると、それが規則ベース中のイベントノードに対してインデックスを供給する。イベントノードは、規則の従属リスト及びスケジューリングされるべき他のイベントノードと結合される。
【0077】
文字位置データは、ラインフォーマットバッファ及びドキュメントファイルにおけるトークンのスタートの文字位置を含む。それは更に両者における効果の範囲即ちトークンの長さを含む。例えばラインフォーマットバッファに現れるがドキュメントには現れない、作成されるテキスト、表示フィールド等、又は、ドキュメントに現れるがラインフォーマットバッファには現れない、隠されたテキストのような作成物によって文字位置が異なる場合があるので、ラインフォーマットバッファ及びドキュメントの両者に対する文字位置データが含まれる。
【0078】
トークンと共に送られる値は、それと結合しているイベントの値である。上述のように、1つのイベントが規則ベースの変数ノードによって表される。テキストトークンについては、その変数の値は1か又はゼロである。ここで1は、イベント発生器がイベントを検出したことを表す。フォーマットトークンについては、この値は非ゼロかゼロである。フォーマット設定では有用な情報を表すので、その値は非ゼロである。例えば、「インデント」に対応するフォーマットトークンの値は、インデントのための水平方向のスペースの合計を表す。フォーマット設定の目的のためにこの値がゼロである場合、それにも拘わらずイベントが検出されると、その値か一時的に強制的に非ゼロ値にされ、次に元に戻してイベントが生起したことをイベントエンジンに表示する。
【0079】
トークンの概念がトークンインターバルと混同されないことが重要である。トークンは、そのトークンインターバルでスタートしドキュメントインターバルセクションまで範囲が広がる種々のインターバルセクションにおいて、イベントを表すことができる。テキスト及びフォーマットトークンは、ユーザー入力から識別されるイベントの型を表示する。他方、1つのイベントインターバルは、上述のように状態変化のユニットであり、「トークンインターバル」はこの実施例におけるイベントインターバルの型の1つである。変更のユニットを構成するものは設計の判断であり、変化し得る。トークンインターバルは、図3のトークンインターバルセクション70a に対応する。図3の例では、テキスト及びフォーマットトークンキャッシュからトークンインターバルセクション70a の第1レベル71に向かう矢印によって示されるように、テキストトークン及び或る種のフォーマットトークンが、トークンインターバルセクションで、規則ベースのノードにインデックスされる。更に、ラインインターバルセクション70b の第1レベル72でノードに、及び、同様に文節インターバルセクション70c の第1レベル73でノードに向かう矢印で示されるように、他のフォーマットトークンがライン及び文節インターバルセクションにインデックスされる。
【0080】
判断ステップ120 で一般的に説明したように、トークン発生器が、文字又は文字の順序が完全なトークンを構成するか否かを最初の質問として決定する。この最初の質問は最適化である。最初に完全なトークンが存在するか否かを決定することによって、不必要な処理を避けるのである。この最適化を実行するため、トークン発生器は、レクサーのデジェネラティブのバージョンを用いる。トークン発生器は、文字翻訳テーブル及び状態マシンテーブルを用いて、文字又は文字列がトークンを構成するか否かを識別する。文字翻訳テーブルは、文字の型を分類する。状態マシンテーブルは、文字翻訳テーブルからの結果を取り、文字の型の遷移を識別し、文字又は文字列がトークンを構成するか否かを決定する。
【0081】
図6は、デジェネラティブレクサーが完全なトークンを識別する方法を説明するフロー図である。
【0082】
ステップ133 では、デジェネラティブレクサーが、処理されているテキストの現在のランから取出した文字を文字翻訳テーブルに照会する。文字翻訳テーブルは、状態マシンテーブルにおける列番号を返す。状態マシンテーブルは文字翻訳テーブルなしでも利用できるが、別個の文字翻訳テーブルを用いると、状態マシンテーブルの必要なサイズが小さくなり、特定の文字セット(例えばロシア文字、ANSI、IBM)を扱うことができるようになるので好都合である。当業者にとっては、状態の変化及び処理されるテキスト要素の型の情報を得るために他の技術を用いることができることは明らかである。
【0083】
デジェネラティブレクサーは、初め状態マシンのゼロ行の文字翻訳テーブルによって指示された列にエントリーする。各行はレクサーの異なった状態を表す。各行と列との交点には、現在の文字の処理の後のレクサーの次の状態である新しい状態値が存在する。次の状態が行の全数より小さい場合は、状態値は次の文字のために使用される次の行を示す。この値が行の数より大きい場合は、そのトークンについての予備のトークンの型を表す。第1文字の後、デジェネラティブレクサーが状態マシンの現在の行の、文字翻訳テーブルから返された列にエントリーする。これはステップ134 に示されている。各文字が打ち込まれる時には、新しい状態が行の数を超えるまで処理が継続する。この点における状態値はそのトークンの予備トークンの型の値である。好ましい実施例は、4行を有する有限の状態マシンテーブルを用い、行ゼロはエントリーの開始点として使用され、行1は空白又はホワイトスペースに対応し、行2はアルファベット文字に対応し、行3は数字に対応する。
【0084】
好ましい実施例においては、状態マシンテーブルのための列は0と11との間であり、列0は空白及びホワイトスペースに対応し、列1はアルファベット文字A−Zに対応し、列2は数字0−9に対応し、残余の列は句読点、記号等の他の型の文字に対応する。
【0085】
テキストのランの第1文字がアルファベット文字の場合は、文字翻訳テーブルが状態マシンの列1を示す。状態マシンの行0、列1の値は新しい状態を示し、行2、列1の値はレクサーの新しい状態を示す。文字トークンの連続するアルファベット文字が走査される時は文字翻訳テーブルは同一の列を指し続け、列1、行2の交点の新しい状態はアルファベット文字を処理する行2の状態に留まる。例えば、コンマのような句読点記号がイベントフックから到着すると、これはアルファベット文字ではないので、文字翻訳テーブルは、句読点記号のその型に使用される列を指示し、その列の新しい状態は列2以外になる。
【0086】
判断ステップ136 においては、デジェネラティブレクサーが、ステップ135 からの新しい行番号が状態マシンの行の全数より大きいか否かを決定し、肯定ならば、その文字又は文字列が完全なトークンを構成することの検出を完了する。状態マシンテーブルが状態の変化を識別するので、デジェネラティブレクサーは、テキストのワードが処理される時点を決めることができ、次の文字を、その前のワードの文字とは別に処理されるべき、コンマ、ピリオド、コロン、又は他の型の句読点として識別することができる。
【0087】
ステップ136 の後、デジェネラティブレクサーが、文字又は文字列が完全なトークンを構成するか否かの決定を完了する。肯定の場合、処理は図5の122 に続く。
【0088】
デジェネラティブレクサーが完全なトークンを識別すると(図6の120 )、トークン発生器82がフルレクサー84を呼出し、それに結合している特定のテキストトークン又はフォーマットトークンを識別する。トークンイベント発生器がレクサー84を呼出し、特定の範囲の文字についてのトークンインターバルイベントを発生する。レクサーの呼出しにおいては、トークンイベント発生器がトークンを返す文字の範囲を特定する。
【0089】
レクサー84は、ドキュメントから走査された文字からのトークンを識別する。レクサー84は、ラインフォーマットバッファをアクセスし、ドキュメントから走査された文字のラインを記憶する。次のランの取得機能86を呼出すことにより、レクサー84が、ラインバッファ中にある均一にフォーマットされたテキストのランに対するポインタを受信する。
【0090】
レクサー84はテキストトークンを識別し、それらを、テキストトークンを一時的に記憶するためのデータ記憶であるテキストトークンキャッシュ88に置く。文字又は文字列がテキストトークンを構成するか否かを決定するために、レクサー84は、デジェネラティブレクサーに関して上述した文字翻訳テーブル及び状態マシンテーブルを利用する。
【0091】
図7A及び7Bはレクサーによって遂行されるステップのフロー図を示す。レクサーは、デジェネラティブレクサーと同様に、ラインフォーマットバッファからの文字を走査し状態マシンテーブルを更新する。ステップ138 は、レクサーがラインフォーマットバッファから次の文字を得る方法を示す。このステップにおいては、このランに走査すべき文字がない場合は、レクサーは次のランの取得機能を呼出し、他のランを引出し、ポインタをリセットする。ステップ139-142 は、デジェネラティブレクサーで実行されるステップ133-136 と同一である。レクサーは、状態マシンテーブル中のデジェネラティブレクサーと同一の状態を実行し、デジェネラティブレクサーが停止する箇所で停止することができる。
【0092】
現在の行番号が状態マシンテーブル中の行の数を超えていない場合は、レクサーが、次の文字を得る前に、走査し過ぎているか否かを決定する。これは、単に、レクサーがトークンイベント発生器によって特定された文字範囲を超えて走査しようとしているか否かをチェックすることを意味する。1つの例は、レクサーが挿入点に対して走査する時である。次の文字が挿入点を超えている場合は、レクサーが「トークン未完成」を返す。
【0093】
再び判断ステップ142 を参照すると、現在の行番号が状態マシンテーブル中の行の数を超えている場合は、レクサーは判断ステップ144 に進む。トークンの識別においては、レクサーはトークンの最後の文字を超えて走査することができる。このような場合、レクサーはステップ145 で説明した適当な数の文字をバックアップする。状態マシンテーブルの最終状態はトークンの予備の型を指示する。この点で、レクサーは予備のトークンの型(例えばアルファベット、数字、デリミタ)を持ち、文字の番号をバックアップする(1又は0文字)。レクサーは次に、ステップ156 に示すように、行番号をゼロにリセットする。
【0094】
次に図7Bを参照すると、レクサーは送出ルーチンを呼出し、予備のトークンの型(状態マシンテーブルからの最終状態値)に基づく1又は複数のトークンを識別する。
【0095】
アルファベット及び数字の文字列のような或る種のトークンについて、特定のトークンを識別する方法は、ルックアップテーブルを用いてトークンを識別することを含む。規則コンパイラ62が、規則ソース60をコンパイルする時にこのルックアップテーブルを発生する。アルファベット文字列については、送出ルーチンが大文字化をチェックし、「大文字でスタート」、「大文字あり」又は「全て大文字」を示すフォーマットトークンを発生することができる。従って、レクサーが最初にテキストトークンを識別するとしても、それは更に或る種のフォーマットトークンを識別することができ、それらをフォーマットトークンキャッシュに置くことができる。
【0096】
他のトークンに対して追加の処理が必要である。レクサーは、文節マークのような特定の文字について、その位置に基づいてトークンを分析しなければならない。
【0097】
送出ルーチンがリターンした後、レクサーは次にステップ148 に進み、現在のトークンの長さ及び次のトークンのスタート位置を計算する。
【0098】
トークンがトークンインターバルイベントに対応するか否かはその型に依存する。この実行において、「間接」トークンはトークンインターバルイベントに対応しない。間接トークンは空白、注釈マーク、及び脚注マークのような文字である。レクサーは、これらの間接トークンを直ちに返さずに、ステップ150 に示すように、テキストトークンキャッシュにそれらをキャッシュする。「直接」トークンはインターバルイベントに対応し、イベント発生器に返される。一般的に、直接トークンは、アルファベット又は数字の文字列、又は句読点のようなデリミタである。
【0099】
フォーマットレクサー90は、同一のフォーマット設定を持つ1又は複数の文字を表すフォーマットトークンを識別するために用いられる。フォーマットレクサー90は、次のランの取得機能86によって返されたテキストのそれぞれの新しいランに対して作用する。図8はフォーマットトークンを識別する処理を詳細に示す。フォーマットレクサー90は、均一にフォーマットされたテキストのランからのフォーマットトークンを識別する。更に多くの文字を走査することが必要なためにレクサー84が次のランの取得機能86を呼出す場合、ラインフォーマットバッファ中の均一にフォーマットされたテキストのランへのポインタを返す。図8は、処理の第1ステップとしてこのステップ164 を示す。文字の現在のランから、フォーマットレクサー90が、ドキュメント及びラインフォーマットバッファ両者、規則ベースノードインデックス、及びフォーマット特性の値に基づくフォーマット特性の変化の開始位置及び長さを識別する。フォーマットレクサー90は、ステップ166 、168 に示すように、この情報をフォーマットトークンキャッシュ92に格納する。フォーマットレクサー90は、フォーマットトークンを、現在文字位置の昇順に処理されているテキストのランのためのフォーマットトークンキャッシュ中に置く。フォーマットレクサーは、フォーマットトークンがドキュメント中に存在する順序に正しく対応するように文字位置の昇順に従ってフォーマットトークンをソートし、文字の次のランを処理する時にフォーマットトークンキャッシュを置き換える。
【0100】
再び図5を参照すると、トークンイベント発生器が、各トークンイベントインターバルについてのイベントエンジンを呼出す。トークンインターバルイベントを定める各トークンについて、トークンイベント発生器はステップ126 及び128 により処理する。レクサーがトークン未完成を返すと、判断ステップ124 がステップ130 に分岐する。
【0101】
トークン発生器は、ステップ126 に示すように、イベントエンジン中のスケジューリングルーチンを呼出し、テキスト及びフォーマットトークンをスケジューリングする。トークン発生器は直接トークン、及び、キャッシュされた間接トークン及びスケジューリングのためのイベントエンジン52に関連するフォーマットトークンを送出する。レクサーは、キャッシュされた間接トークンをイベントインターバルを定めるトークンと共に送出する。
【0102】
トークンインターバルを定める各テキストトークンについて、トークン発生器は、ステップ128 に示すように、イベントエンジン中の評価ルーチンを呼出す。次に、イベントエンジンは、規則ベース中のトークンインターバルセクションについての全てのイベント及び規則を評価する。
【0103】
図9A及び9Bは、イベント発生器82から送られて来たイベントをイベントエンジン52が処理する過程を説明するフロー図である。イベントエンジン52に送られて来たテキスト及びフォーマットトークンは、規則ベース58中のノードに対するインデックスを含む。規則ベース58は、一次元のアレイからなり、各インデックスはこのアレイ中のセルに対応する。
【0104】
更に、アレイ中の各セルは、コア従属リスト又はボディ従属リストの2つのアレイの1つに属している。ノードは、対話型自動フォーマット設定機能のフェーズに基づいてこれらのリストの1つに属する。同時には1つのリストのみがアクティブである。ボディ従属リストはユーザーが打ち込みを行う時に適用される。コア従属リストは初期化フェーズの間及びユーザーが打ち込みを行う時に適用される。ボディ従属リストは、そのノードについてのコアリストへの全てのエントリー及び付加エントリーを含む。初期化は、ユーザーが挿入点を動かした場合に、対話型自動フォーマット作成機能をリセットするための処理である。初期化の間に実行される走査は後に説明する。
【0105】
各ノードは2つの従属リストを有する。規則ベース中の各ノードは、それぞれの従属リストアレイ中に対応するセルを持つ。このアクティブ状態の従属リストアレイはノードアレイ中のノードと同一のインデックスを持つが、このアレイ中のセルは、そのノードについてのアクティブ従属リストである。
【0106】
ノードは規則又はイベントを表すデータ構造である。データ構造は22バイトの大きさであり、ノードに関連する種々の情報を含む。データ構造は、規則ベース中のインターバルセクションに対応するレベル番号を含む。それは更にノードの型、即ち規則又はイベントを特定する。それは、ノードが遅延評価のためにスケジューリングされるか否かを示す遅延マスクを含む。この遅延マスクは、順序規則に結合された遅延を実現する。
【0107】
このデータ構造は、更に、ノードが評価キューに存在する場合、リンクされたリストにおける次の項目へのポインタを含む。この値が空白の場合は、イベントエンジンはノードがいずれの評価キューにも存在しないことを知る。
【0108】
イベントノードについては、データ構造は、1つのインターバルの評価の後で自動的にクリアされるべき、リンクされたイベント変数のリスト中の次のイベント変数へのポインタを含む。1つのインターバルセクションについての全ての規則及びイベントの評価の後、評価ルーチンは、この「自動クリア」リスト中のイベント変数の値をクリアする。リンクされたリストを用いることにより、イベントエンジンは、ノードが自動クリアリストにあるか否かの決定を行うことができる。規則が自動クリアリストへのポインタを必要としないことを除いて、このノード及び規則についての構造は一般的に同一である。
【0109】
ノードは、ノードに結合され、規則又はイベントに従属する規則及びノードを掲載した、ノードに対応するリンクされたリスト、所謂従属リストを持つ。上述のように、アクティブ従属リストアレイ中にノードのインデックスを付けることによって、このリストが発見される。従属リストアレイの2つの型、即ちコア及びボディは、従属リストの2つのアレイとして実現される。初期化フェーズの間はコア従属リストアレイがアクティブである。ユーザーが打ち込む間はボディ従属リストアレイがアクティブである。この実施例においては、ボディ従属リストはコア従属リストを包含する。
【0110】
イベント発生器がスケジューリングルーチンを呼出してこれにトークンを送る場合、スケジューリングルーチンは、図9Aの最初のステップ170 に示すように、トークンによって識別されたノードのための、アクティブな従属リスト中の全てのイベント及び規則のスケジューリングを行う。規則及びイベントをスケジューリングするため、イベントエンジン52が、従属リスト中の各イベント及び規則向けのポインタを、規則ベース中のノードのレベルにおける評価キュー上に押し出す。
【0111】
規則ベース中の各レベルについて、2つの個別の評価キューが存在する。再び図3を更に参照すると、各ノードが規則ベース中の1つのレベルと結合されている。各レベルは、アクティブ評価キュー及び遅延評価キューを持つ。アクティブ評価キューにスケジューリングされたノードは直ちに評価される。しかしながら、遅延評価キューにスケジューリングされたノードは、特定の数のイベントインターバルの間遅延する。
【0112】
遅延評価キューはイベント及び順序規則の遅延評価をサポートする。この遅延をサポートするため、各ノードは、評価されるノードがどのイベントインターバルに存在するかを示す遅延マスクを有する。遅延マスクは、そのノードに結合したインターバルにおける新しいイベントをイベント発生器82が送る時に1ビット右にシフトする。マスクにおける第1ビットが存在し、シフトがそれを動かすと、イベントエンジンがノードをノードのレベルのアクティブキューに転送する。例えば、順序規則がトークンインターバルセクションにおける遅延の2つのインターバルについてスケジューリングを行うと、2つのトークンインターバルイベントがイベントエンジン52に到達するまで順序規則が評価されない。従って、遅延評価キューにより、自動フォーマットについての条件を一連のイベントに基づいて書くことが可能になる。
【0113】
再び図9A及び9Bを参照すると、ステップ172-190 はイベントエンジン中の評価ルーチンに属する。スケジューリングが完了すると、イベント発生器がそのインターバルセクションについての評価ルーチンを呼出す。この評価ルーチンは、遅延評価キュー中のノードをアクティブキューに転送するステップ172 で始まる。
【0114】
次に評価ルーチンは、ステップ174 に示すように、次のノードをキューから移動させてそれを評価する。ノードがイベントである場合(176 )、次に評価ルーチンは、ステップ180 に示すように、スケジューリングルーチンを呼出してそのノードの従属リスト中の規則及びイベントをスケジューリングする。ノードが規則の場合、判断ステップ178 に示すように、その規則は、従属リストへのエントリーのスケジューリングの前に、「誤りではない」ことを試験しなければならない。
【0115】
規則が「誤りではない」ことを試験する場合、この論理は判断ステップ179 に進む。規則がそれに結合された動作を持つ場合は、ステップ181 に示すように、次にこの動作が実行される。ここで用いられる「動作」は、規則が満足される時に実行される規則に結合されたコードに属する。このコードは種々の機能を遂行する。特に重要なものは遅延動作を発生する機能である。諸動作が遅延動作を遅延動作キューに置くことができる。他の型の動作は新しい規則及び/又はイベントのスケジューリングであり、このステップはステップ180 に示されている。
【0116】
判断ステップ182 においては、評価ルーチンが、現在のレベルにおける評価キューが空であることを見出すためのチェックを行う。否定の場合、このルーチンはステップ174 に戻る。肯定の場合、このルーチンは判断ステップ184 に続く。最初の繰り返しの間、「現在」のレベルがインターバルセクションの最初のレベルである。例えば、イベント発生器がイベントをトークンインターバルセクションに送る場合、イベントエンジンは、トークンインターバルセクション中の第1レベル71で評価を開始する。図3に示された規則ベースの例においては、第1レベル71はトークンインターバルセクションの基底にある。
【0117】
判断ステップ184 では、評価ルーチンが、インターバルセクションの終わりまで、各レベルについて評価キュー中のノードの評価を続ける。ステップ186 に示されるように、現在のレベルで最後のノードが評価された後、評価ルーチンはそのインターバルセクションの次のレベルに進む。
【0118】
そのインターバルセクションが終わると、ステップ188 に示されるように、評価ルーチンはそのインターバルについての全ての変化したイベントをクリアする。上述のように、イベントを表す各ノードは、自動クリアリスト中に次のノードへのポインタを持つ。このノードが変化した値を持たない場合は、それはこのリスト中に存在せず、ポインタは零を指示する。このポインタが零ではない場合、イベント変数の値がクリアされる。
【0119】
或る場合においては、評価ルーチンが他のインターバルセクションに遷移し、そのインターバルセクションについて評価処理を繰り返す。この型の遷移を実行するために、イベントインターバルが遷移規則を含む。遷移規則についての条件が満足されると、遷移規則は遷移変数の値を遷移先のインターバルセクションに対応する数に設定する。判断ステップ190 においては、評価ルーチンが遷移変数の値をチェックする。遷移変数が他のインターバルセクションに対して設定されると、評価ルーチンはステップ172 に戻る。そうではない場合は評価ルーチンは終了する。
【0120】
評価処理の間、イベントエンジンは「遅延動作」106 と呼ばれる自動フォーマット動作を発生することができる。システムのこの観点は、図2に規則ベース58から遅延動作キュー108 への矢印で示されている。動作規則が満足されると、イベントエンジン52が遅延動作を遅延動作キュー108 に置く。
【0121】
遅延動作キュー108 は遅延動作レコードのリンクされたリストである。遅延動作レコードは多数のフィールドを含む。1つのフィールドは、それが存在する場合は1つの編集範囲を特定する。編集範囲はドキュメント中の開始文字位置と終了文字位置で表される。それは、自動的な調整によって登録される。この調整は1つの動作が他の動作に影響する場合に敏感である。例えば、動作の遂行中、編集ルーチンがドキュメントに現在ある文字の位置を変えながら文字を加えることができる。他の遅延動作が調整のために登録されると、それに対応する編集範囲は、その編集範囲が特定の文字に対応することが明確になるために必要な調整を受けることができる。これは、更に、他の規則の変化の影響について調整を必要とせずに編集の決定を行うための規則を可能にする。しかしながら、全ての動作が編集範囲を含むわけではない。ドキュメントを編集しない動作については、編集範囲は不要である。
【0122】
遅延動作レコードの他のフィールドは動作レコードの型即ち「オプコード」を特定する。このオプコードは同一の作用を有する動作のクラスを記述するために利用することができる。
【0123】
更に他のフィールドは、キューの次の動作への次のポインタを含む。次のポインタが零を指示する場合は、それはそのキューの最後のレコードである。
【0124】
合成動作は動作のサブリストへのポインタを含む。このサブリストは、合成動作が遂行される時に実行されるべき動作を特定する。
【0125】
図9A及び9Bに示された評価ルーチンがリターンした後で、遅延動作キュー108 中の遅延動作のいずれかが遂行される。再び図5を参照すると、判断ステップ130 に示されるように、トークンイベント発生器が、遅延動作キュー中に遅延動作が存在するか否かを決定する。肯定ならば、トークンイベント発生器は遅延動作インタプリタ94を呼出し、遅延動作キュー中の動作を遂行する。
【0126】
イベントモニター50の遅延動作インタプリタ94の部分は、これらの遅延動作を実行するための開始機能95の役割を持つ。遅延動作インタプリタ94は適当なルーチンを呼出し、遅延動作を実行する。それは更に「取消し」スタックをセットアップする。取消しスタックは、既に実行された最後の動作又は合成動作をユーザーが取消すことができるようにする。例えば、自動フォーマット規則がリストを自動黒丸リストに変換すると、ユーザーは編集メニューから取消しコマンドを選択してそれを取消すことができる。合成動作であっても取消しスタックへの1つのエントリーとして現れる。これにより、ユーザーは、取消しコマンドを1度選択するだけで合成動作の各々の動作を取消すことができる。
【0127】
遅延動作インタプリタは、キューに動作の残りがなくなるまで一時に動作を遂行する。合成動作については、遅延動作インタプリタが動作の残りがなくなるまでサブリスト中の各動作を反復し、実行する。次にそれはキュー中の次の動作を続ける。遅延動作キューが空の場合、イベント発生器は他のイベントが生起するまで停止する。
【0128】
次に、ユーザーが打ち込む間にこのシステムが如何にフォーマット設定を行うかについて説明する。ユーザーは頻繁にカーソルの挿入位置を変更するので、システムはこのユーザー入力の形式を検出し、適切に自動フォーマット設定機能をリセットしなければならない。
【0129】
ユーザーが挿入位置を移動し、打ち込みを開始する時、システムはそれ自体を初期化する。初期化処理は、ドキュメント中の位置を挿入位置の前に移動させ、この位置から挿入位置まで、トークンについて走査を行うことによって開始される。走査は前の文節の終端の前方5文字から開始され、挿入位置まで続く。最適にするには、カーソルが存在する文節の現在のラインを通って挿入位置の前256文字が存在する最初のラインのみが走査される。
【0130】
自動フォーマット作成機能は、初期化の間バッチモードで動作する。初期化ルーチンは、最初に現在の文節の開始の前の5文字をラインフォーマットバッファにロードすることによってその走査を開始する。続いて、上述のようにレクサーがトークンを分析する。各トークンインターバルについて、初期化ルーチンが評価ルーチンを呼出す。
【0131】
初期化走査は、数個の点について対話モードと異なる。この初期化フェーズの間、ボディ従属リストではなくコア従属リストが用いられる。更に、遅延動作は生成されない。初期化の目的はシステムをリセットすることである。前の文節の終端の前5文字から開始することによって、システムが挿入位置に至るイベントのパターンを検出することができる。走査される文字の特定の範囲は変更することができる。この場合、この範囲は、前の文節がどのように終わったかを識別できるように、又はこれに代えて前の文節が存在したか否かを識別できるように選ばれる。
【0132】
規則ベースイベントエンジンは、自動フォーマット設定をサポートするのに加えて、他の種々のワード処理機能をサポートする。イベントエンジンは、広い範囲の種々のユーザー入力イベントについて有効な規則分析をサポートするので、ユーザー入力イベントに依存する他の自動ワード処理機能をサポートすることができる。1つの機能は、ユーザーがしていることを検出して助けになるフィードバックを与える助言ウィザードである。他の機能は、自動的な修正即ち「自動修正」である。自動的な修正は、典型的なエラーを監視し、それらが起きた時にそれらを修正することである。イベントエンジンの重要な能力は、自動修正を強化することである。ユーザーが自動修正動作を覆すか否かを監視することによって自動修正規則に例外を設けるためにイベントエンジンを用いることができる。
【0133】
図2に示したシステムは助言ウィザードをサポートする。助言は、ディスプレイスクリーン上のボックスに表示される有用なテキストである。助言は、有用なテキストを簡単に提供し、ユーザーにフィードバックすることができる。テキストを表示するのに加えて、助言は、更にユーザーに、動作を選択するためのオプションを与えることができる。このシステムは、ユーザーの入力を促す押しボタン制御を助言ボックス中に表示する。この押しボタンは、ユーザーが動作をさせるか又はシステムが自動的に実行した動作を取消すことができるようにする。例えば、押しボタン制御を持つ助言ボックスは、合成遅延動作の部分として表示することができる。自動フォーマットモードにある間、ドキュメントを編集する合成遅延動作は助言ボックス及び押しボタン制御を表示し、ユーザーが編集動作を取消すことができる。逆に、自動フォーマットモードが選択されない場合、可能性がある編集動作を記述するテキストを含む助言ボックス中で、ユーザーが「実行」押しボタンを選択するか否かに従って、編集動作が行われる。
【0134】
助言ウィザード動作をサポートするため、その動作を起動するユーザー入力イベントを確定し、同時に動作を確定するための規則を書込むことができる。これらの規則は、次に、規則コンパイラで規則ベース58中にコンパイルされる。助言をサポートする合成規則は、通常、ユーザーインタフェース又は対話型イベントに基づいて書込まれる。例えば、ユーザーが対話の開始のようなイベントのパターンを見て、何もオプションを選択せずに何回もそれを閉じることにより、ユーザーがまごついているか否かをシステムが検出することができる。助言ウィザード規則は、通常、ユーザーインタフェース及び対話イベントに基づいて書込まれる一方、トークン及び文字イベントを含む他のイベントに基づいても同様に書込まれる。
【0135】
図2に示したシステムは更に自動修正をサポートする。自動修正は、通常の打ち込みエラーを検出し、自動的に修正を行うことを意味する。例えば、自動修正機能は、文の最初のワードを大文字にすること又は2つの大文字が連続している場合に2番目の大文字を小文字に変えることを含む。第1の機能は、文中の最初のワードの最初の文字が大文字ではないという通常の誤りに向けられる。第2の機能は、偶発的に、ユーザーがワードの最初の文字を大文字にする時に必要以上に長くシフトキーを押さえるという問題に向けられる。
【0136】
一般的に、自動修正機能をサポートするための合成自動修正規則と共に、この機能に対する例外を書込むことができる。最初のワードの大文字化規則に対する例外のクラスの1つは、ユーザーが略語の後にピリオドを、次に文の初めではない他のワードを打ち込む場合である。例えば、「etc.」は通常は文の中間に用いられる。この機能を実現する規則は、この規則が適用されない若干の例外を示す例外リストを含むことができる。基本的には、例外は自動修正規則に抵触する規則である。
【0137】
規則ベース中に予め定めておくことができる例外の数には限界がある。一方、システムは対話的に例外を作り出すこと、例えばユーザーの挙動に基づく例外を加えることをサポートする。
【0138】
合成規則は、自動修正規則を遂行ために必要な遅延動作を特定する動作規則を含む。動作規則が満足される場合、それが、自動フォーマット設定動作に関して上述した遅延動作と同様の遅延動作を発生する。特に、自動修正規則に基づいてテキストを編集するための動作を発生する。自動フォーマット動作と同様に、自動修正動作はドキュメントの編集を必要とせず、大部分の場合、必然的にそれが編集を含むことになる。
【0139】
例外を監視するため、動作規則は更に追加の動作を発生する。最初のワードの大文字化の例は概念を説明するための助けになる。ユーザーが「after 」を「aft.」と省略し、「aft. five 」という句を打ち込むとしよう。ワードの最後のピリオドの後にスペースが続くことにより、「five」を大文字化する自動修正規則が起動される。規則ベース中の動作規則が「誤りではない」を試験する時、合成動作が遅延動作キューに置かれる。
【0140】
合成動作は、それぞれが1又は複数の動作を含むことができる3つの基本的な動作を含む。1つの動作が最初の文字の大文字化である。他の動作が前のワード「aft.」及びワード「five」を捉える。そして第3の動作が監視ルーチンを呼出す。
【0141】
監視ルーチンは、ユーザーがバックスペースを行うこと等により自動修正を削除し、元のテキストでの置き換えを行う場合を検出するように設計される。監視ルーチンに対するアーギュメントとして、遅延動作インタプリタが2番目のワード「five」とこのワードのいずれかの変形との比較を実行する機能のIDを送出する。比較の結果はユーザーが自動修正を元のテキストで置き換えたか否かを示す。
【0142】
ワード「five」を変形するいかなる企てに対しても、監視ルーチンが比較機能を呼出す。比較の結果が一致する場合は、比較機能がワード「aft.」を例外リストに加える。この実施例においては、比較機能は、ユーザーが取消しコマンドを呼出す時に一体として用いられる規則と同一なので、規則として実現される。しかしながら、それはまた個別の機能として実現することもできる。ユーザーが、自動修正を「取消す」ために再度打ち込みをせずに取消しコマンドを選択した場合は、例外リストに例外を加えるために比較規則が起動される。
【0143】
この実施例においては、自動修正機能をサポートするため規則ベースをダイナミックに変更する多数の方法が存在する。自動修正機能は、1)自動的に文字列を検出して他の文字列で置き換える機能、2)文の最初の文字を自動的に大文字にする機能、及び3)ワードの2番目の文字を自動的に小文字にする機能を含む。第1の機能について、プログラムは監視し置き換えを行うべき多数の予め定義された文字列を持ち、「自動修正リスト」中のエントリーとしてリストされる。プログラムによって提供される自動修正リストを変更するために、ユーザーが自動修正対話を用いてリストにエントリーを加え又はリストからエントリーを削除することができる。
【0144】
第2及び第3の機能は、実際には第1の機能の特別な場合である。第2及び第3の機能に対する多数の例外が存在し、それらは各機能の例外リストに掲載される。ユーザーは、自動修正対話を用いて、例外リスト中のエントリーを変更することができる。この実施例においては、特別な場合を扱う対話ボックスは、自動修正対話の中からアクセスすることができる。これに加えて、対話ボックスを通して例外リストを変更するために、ユーザーが「取消し」ボタンを選択する場合又は上述のように特別な場合の機能を手動的に取消す時には、プログラムが追加の例外を発生することができる。
【0145】
次に、自動修正リスト及び例外リストに関係するプログラムの観点を更に詳細に説明する。
【0146】
この実施例においては、自動修正リスト及び例外リスト中の変更に基づいて規則ベースを変更することができる場合の3つの例が存在する。1つは、プログラムがファイルから自動修正リスト及び例外リストを走査するブート時間においてであり、そのリスト中のエントリーによって必然的に規則ベースが変更される。次の例は、自動修正対話を通して入力されたユーザーによる変更からである。そして第3は、ユーザーが「取消し」オプションを選択する時又は自動修正の特別な場合の1つを手動的に取消す時である。ブート時間においては、プログラムは自動修正及び例外リスト中の各エントリーを走査し、これらのリスト中のエントリーに従って規則ベースが変更されるべきが否かを識別する。自動修正対話で入力された変更については、プログラムが対話ボックス内の編集ボックス中に置かれた文字を走査する。ユーザーが特定の場合の1つを取消す場合は、第1文字大文字化の合成動作との関連で上述したように、例外に対応する文字列が捕捉される。
【0147】
走査が実行される時に文字列が特別に位置されていることは決定的なことではない。この実施例においては、レクサーは、ポインタが文字列の走査されるべき位置に向いて与えられた時に走査を実行する。従って、文字列がどこに位置しているかに拘わらず、レクサーは同様に動作する。しかしながら、トークンを特別に識別するために用いられる送出ルーチンは、文字列の走査が開始される箇所に依存して異なる動作を行うように設計することができる。例えば、文字列がドキュメントではなく編集ボックスから来るとすれば、文節及びラインマークのようなドキュメントに限って起きる種類のイベントを探す必要はない。
【0148】
文字列の走査は一般的に特定の文字列についてのレクサーの呼出しを含む。或る場合には、文字列の走査が一連のトークンの発生を含むことがある。しかしながら、多くの場合、文字列は1つの対応するトークンを持つただ1つのワードからなる。一連のトークンの場合、プログラムは一連のトークンの最後のトークンを採用し、それをルックアップテーブルで探し、そのトークンに対応するイベントノードが既に存在するか否かを決定する。1つのトークンの場合は、一連のトークンの最後のトークンを採用する場合より簡単にこのトークンを探し出す。
【0149】
トークンイベントがテーブルにある場合は、即ち既に存在する場合は、規則ベースが既に対応するイベントノードを持っている。この場合、イベントノードは簡単に他のイベントノードとリンクされる。リンクされるイベントノードの型は、走査が自動修正エントリーについて実行されるか、又は特定の場合の1つに対する例外について実行されるかに依存する。
【0150】
自動修正エントリーのためには、イベントノードは他の自動修正規則を起動するイベントノードにリンクされる。イベントノードは「自動修正」イベントといわれる。代替案として、自動修正エントリーに対応するイベントノードが自動修正規則に直接リンクされる。この代替案においては、自動修正エントリーに対応するイベントノードはまた自動修正イベントである。
【0151】
自動修正機能に対する例外については、イベントノードはこの機能を禁止する他のイベントノードにリンクする。例えば、この禁止イベントが真にセットされると、第1文字の大文字化のための自動修正動作が実行されない。
【0152】
或る場合において、例えば新しいエントリーが自動修正リストに加えられる場合は、新しいエントリーのための対応するイベントノードは存在しない。トークンイベントがテーブルに存在しない場合は、次に1つのイベントノードが規則ベースに加えられるべきである。イベントノードが加えられると、対応するトークンが更にレクサーのためのルックアップテーブルに加えられる。前述のように、ルックアップテーブルは、規則ベース中でインデックスによりトークンイベントをそのノードに対応させている。自動修正又は例外リストのいずれかに対する新しいエントリーのために、適切なリストが新しいエントリーを含むように構成される。
【0153】
新しいノードが作られた後、他のノードとのリンクが確立される。リンクを作るために、新しいイベントノードの従属リンクに1つのエントリーが加えられる。逆に、ユーザーが自動修正リストから自動修正エントリーを消す場合は、イベントノードと自動修正規則との間のリンクを消去する。この実施例においては、自動修正エントリーのためのイベントノードと自動修正規則を起動するイベントノードとの間のリンクが消去される。
【0154】
代表的な例においては、自動修正規則は以下のように動作する。自動修正規則にリンクしたイベントノードが評価されると、それが自動修正規則を起動する。次に自動修正規則が比較ルーチンを呼出し、これがテキストトークンキャッシュ中の1又は複数のトークンを自動修正エントリーと比較し、一致するか否かを決定する。一連のトークンの場合は、そのシーケンスの最後のトークンを検出した後で自動修正規則が起動される。次に、このシーケンスを通して後方に進みながら、比較ルーチンが、テキストトークンキャッシュ中のトークンが一連の自動修正エントリーと一致するか否かを見るためにチェックする。これが一致する場合は、次にドキュメントが、現存の文字列を自動修正リスト中のそれの置換部分で置き換えを行うように適当に編集される。
【0155】
この方法を用いると、多数の自動修正エントリー及び自動修正エントリーに対する例外が、容易に規則ベースに追加され又はこれから消去される。自動修正機能をサポートする規則は或るイベントが発生された後にのみ起動するように設計され得るので、イベントエンジン及び規則ベースは、この機能に対して効果的なサポートを行う。
【0156】
本発明の特別な実施例が詳細に説明されたので、本発明が本発明の範囲を逸脱することなしに変形され得ることが理解される筈である。例えば、イベントエンジン及びイベントモニターを実現するためのルーチンが本発明の範囲を逸脱することなしに変形され得る。それを実現するために用いられるデータ構造を含む規則ベースの特別な実現例も変形することができる。規則は、コンピュータプラットフォーム、アプリケーションプログラム及び他の因子に依存して変化することができる種々のイベントに従属する構造を持つことができる。規則ベースは柔軟性を持ち、種々のイベント型、イベントインターバル、及び対応するインターバルセクションをサポートする。規則は、他のインターバルにおけるスケジューリング従属イベント又は規則による遅延を持って実現され得る。要約すれば、多数のバリエーションが可能なのである。
【0157】
本発明の原理が実現されている多くの可能な実施例を考慮して、ここに記載された詳細な実施例は単に説明のためのものであって、本発明の範囲を限定するものと考えられるべきではないことが強調されなければならない。特許請求の範囲は、発明の範囲及び精神がこのような全ての実施例を包含するように及び等価であるように設定されている。
【図面の簡単な説明】
【図1】本発明の実施例に用いられるコンピュータシステムのアーキテクチャを説明するためのブロック図である。
【図2】本発明の実施例による自動フォーマット作成機能のアーキテクチャのブロック図である。
【図3】規則ベースの構成の例を説明する図である。
【図4】本発明の実施例によるイベント発生器を概観するためのフロー図である。
【図5】本発明の実施例における文字及びトークンイベント発生器によって実行されるステップを示すフロー図である。
【図6】本発明の実施例による完全なトークンの検出において実行されるステップを示すフロー図である。
【図7】本発明の実施例によるテキストトークンの識別において実行されるステップを示すフロー図である。
【図8】本発明の実施例によるフォーマットトークンの識別において実行されるステップを示すフロー図である。
【図9】規則ベースを通してイベントを伝搬する際の規則ベースイベントエンジンによって実行されるステップを示すフロー図である。
【符号の説明】
20 コンピュータシステム
22 コンピュータ
24 入力デバイス
26 出力デバイス
28 中央処理ユニット(CPU)
30 メモリーシステム
32 バス構成
33 算術的論理ユニット(ALU)
34 レジスタ
36 制御ユニット
38 高速主メモリー
40 2次記憶装置
50 イベントモニター
52 規則ベースイベントエンジン
56 ドキュメント
58 規則ベース
60 規則ソース
62 規則コンパイラ
70 インターバルセクション
71 トークンインターバルセクションの第1レベル
72 ラインインターバルセクションの第1レベル
73 文節インターバルセクションの第1レベル
80 イベントフック
82 イベント発生器
84 レクサー
86 次のランの取得機能
88 テキストトークンキャッシュ
90 フォーマットレクサー
92 フォーマットトークンキャッシュ
94 遅延動作インタプリタ
95 機能
108 遅延動作キュー
109 自動修正対話

Claims (6)

  1. ワード処理のドキュメントにおけるユーザー入力を自動修正するユーザー入力自動修正方法であって、プログラムされたコンピュータ、ディスプレイ装置、及び入力装置を含むワード処理システムで実行されるユーザー入力自動修正方法において、
    ユーザーがワード処理のドキュメントを作成中に前記入力装置から受信したユーザー入力イベントを傍受する傍受ステップであって、前記入力装置が、キーボード及びポインティングデバイスを有し、ユーザー入力イベントが、前記キーボードで文字を打ち込むこと及び前記ポインティングデバイスを用いて前記ディスプレイ装置に対する制御を行うことを含む、傍受ステップと、
    前記ユーザー入力イベントが予め定められた自動修正イベントに対応するか否かを判別するために、前記ユーザー入力イベントを分析するユーザー入力イベント分析ステップと、
    該ユーザー入力イベント分析ステップから、1又は複数の文字からなるテキストトークンで表される当該予め定められた自動修正イベントに対応するユーザー入力イベントの検出に応じて、ユーザー入力を自動修正するための自動修正規則の評価をスケジューリングするために当該自動修正規則を決定する自動修正規則決定ステップであって、前記自動修正イベントは、所定の規則ベース内の自動修正規則にリンクされており、且つ前記自動修正規則は、前記規則ベース内の予め定められたイベントインターバルセクションに格納されている、自動修正規則決定ステップと、
    前記自動修正規則の決定に応じて、評価キューに前記自動修正規則を置くことによって、評価のための前記自動修正規則をスケジューリングするステップと、
    前記イベントインターバルセクションに対応するイベントインターバルの生起の検出に応じて、前記自動修正規則を評価する自動修正規則評価ステップとを含み、
    前記自動修正規則評価ステップは、
    前記自動修正規則の評価に応じて、自動修正エントリーによって規定されている1又は複数の文字とドキュメントに入力された文字列とを比較し、前記自動修正エントリーが合致する場合は、当該ドキュメント中に入力されている文字列を前記自動修正エントリーによって規定されている置換文字列で置換するステップを含むユーザー入力自動修正方法。
  2. 自動修正エントリーが自動修正リストに記憶されており、
    前記ユーザーが前記自動修正リストに前記自動修正エントリーを加えることができるように前記ディスプレイ装置上にインタフェースを表示するステップと、
    前記ユーザーが新しい自動修正エントリーを入力するのに応じて、新しい自動修正エントリーに対応する新しい自動修正イベントを創出するステップと、
    を更に含む請求項1に記載のユーザー入力自動修正方法。
  3. 自動修正エントリーが自動修正リストに記憶されており、
    ユーザーが既存の前記自動修正エントリーを前記自動修正リストから削除することができるように前記ディスプレイ装置上にインタフェースを表示するステップと、
    ユーザーが前記既存の自動修正エントリーを削除するのに応じて、既存の自動修正イベントと前記自動修正規則との間のリンクを消去し、既存の自動修正イベントを検出するのに応じて前記自動修正規則が評価されないようにするステップと、
    を更に含む請求項1に記載のユーザー入力自動修正方法。
  4. 前記ユーザーが前記置換文字列を前記ドキュメントに入力される文字列に戻すか否かを監視するステップと、
    その結果が肯定の場合、前記自動修正規則に対する例外を創出するステップと、
    を更に含む請求項1に記載のユーザー入力自動修正方法。
  5. 前記評価キューは、遅延動作キューである請求項1に記載のユーザー入力自動修正方法。
  6. 前記ユーザー入力イベント分析ステップが、テーブル中でユーザー入力イベントを探査し、前記ユーザー入力イベントが前記自動修正イベントに対応するか否か決定することを含む請求項1に記載のユーザー入力自動修正方法。
JP18111496A 1995-06-07 1996-06-06 対話型テキスト修正及びユーザーガイダンスをサポートする方法及びシステム Expired - Lifetime JP4326599B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/486407 1995-06-07
US08/486,407 US5754737A (en) 1995-06-07 1995-06-07 System for supporting interactive text correction and user guidance features

Publications (2)

Publication Number Publication Date
JPH09101949A JPH09101949A (ja) 1997-04-15
JP4326599B2 true JP4326599B2 (ja) 2009-09-09

Family

ID=23931765

Family Applications (1)

Application Number Title Priority Date Filing Date
JP18111496A Expired - Lifetime JP4326599B2 (ja) 1995-06-07 1996-06-06 対話型テキスト修正及びユーザーガイダンスをサポートする方法及びシステム

Country Status (5)

Country Link
US (1) US5754737A (ja)
EP (1) EP0747837B1 (ja)
JP (1) JP4326599B2 (ja)
CA (1) CA2177942C (ja)
DE (1) DE69638060D1 (ja)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778402A (en) * 1995-06-07 1998-07-07 Microsoft Corporation Method and system for auto-formatting a document using an event-based rule engine to format a document as the user types
US6804726B1 (en) 1996-05-22 2004-10-12 Geovector Corporation Method and apparatus for controlling electrical devices in response to sensed conditions
US6108668A (en) * 1997-04-18 2000-08-22 International Business Machines Corporation Method and system for undoing edits within selected portion of electronic documents
US6018723A (en) * 1997-05-27 2000-01-25 Visa International Service Association Method and apparatus for pattern generation
JP3353651B2 (ja) * 1997-06-23 2002-12-03 松下電器産業株式会社 エージェントインタフェース装置
US6314559B1 (en) * 1997-10-02 2001-11-06 Barland Software Corporation Development system with methods for assisting a user with inputting source code
US7024623B2 (en) * 1998-06-17 2006-04-04 Microsoft Corporation Method and system for placing an insertion point in an electronic document
US7705828B2 (en) 1998-06-26 2010-04-27 Research In Motion Limited Dual-mode mobile communication device
US6489950B1 (en) * 1998-06-26 2002-12-03 Research In Motion Limited Hand-held electronic device with auxiliary input device
US6278442B1 (en) 1998-06-26 2001-08-21 Research In Motion Limited Hand-held electronic device with a keyboard optimized for use with the thumbs
US6731309B1 (en) 1998-08-28 2004-05-04 Corel Corporation Real time preview
WO2000028397A2 (en) * 1998-11-10 2000-05-18 Farrow Robert C An intrinsically parallel programming system and method using procedural objects
US6260046B1 (en) 1998-12-02 2001-07-10 Pitney Bowes Inc. Product architecture retrieval information system
US6493694B1 (en) * 1999-04-01 2002-12-10 Qwest Communications Interational Inc. Method and system for correcting customer service orders
US6604093B1 (en) * 1999-12-27 2003-08-05 International Business Machines Corporation Situation awareness system
US7216113B1 (en) * 2000-03-24 2007-05-08 Symyx Technologies, Inc. Remote Execution of Materials Library Designs
US6918086B2 (en) * 2000-03-28 2005-07-12 Ariel S. Rogson Method and apparatus for updating database of automatic spelling corrections
US20020156816A1 (en) * 2001-02-13 2002-10-24 Mark Kantrowitz Method and apparatus for learning from user self-corrections, revisions and modifications
US7062547B2 (en) * 2001-09-24 2006-06-13 International Business Machines Corporation Method and system for providing a central repository for client-specific accessibility
US7093029B2 (en) * 2001-09-24 2006-08-15 International Business Machines Corporation Method and system for providing accessibility to electronic mail
US7117479B2 (en) * 2001-10-01 2006-10-03 Sun Microsystems, Inc. Language-sensitive whitespace adjustment in a software engineering tool
US20030085927A1 (en) * 2001-11-06 2003-05-08 International Business Machines Corporation Method and apparatus for single selection evaluations in interactive systems
US7113950B2 (en) * 2002-06-27 2006-09-26 Microsoft Corporation Automated error checking system and method
US20040003374A1 (en) * 2002-06-28 2004-01-01 Van De Vanter Michael L. Efficient computation of character offsets for token-oriented representation of program code
US20040003373A1 (en) * 2002-06-28 2004-01-01 Van De Vanter Michael L. Token-oriented representation of program code with support for textual editing thereof
US7386834B2 (en) * 2002-06-28 2008-06-10 Sun Microsystems, Inc. Undo/redo technique for token-oriented representation of program code
US20040006763A1 (en) * 2002-06-28 2004-01-08 Van De Vanter Michael L. Undo/redo technique with insertion point state handling for token-oriented representation of program code
FI114677B (fi) * 2002-09-25 2004-11-30 Syslore Oy Viestien prosessointi
US7707544B2 (en) * 2002-12-05 2010-04-27 Bea Systems, Inc. System and method for generating and reusing software application code with source definition files
US20040225998A1 (en) * 2003-05-06 2004-11-11 Sun Microsystems, Inc. Undo/Redo technique with computed of line information in a token-oriented representation of program code
US20040225997A1 (en) * 2003-05-06 2004-11-11 Sun Microsystems, Inc. Efficient computation of line information in a token-oriented representation of program code
US7223780B2 (en) * 2003-05-19 2007-05-29 Sanofi-Aventis Deutschland Gmbh Triazole-derivatives as blood clotting enzyme factor Xa inhibitors
US20040250209A1 (en) * 2003-06-05 2004-12-09 Gail Norcross Automated composition assistant
WO2006099674A1 (en) * 2005-03-24 2006-09-28 Accenture Global Services Gmbh Risk based data assessment
US8646025B2 (en) * 2005-12-21 2014-02-04 Mcafee, Inc. Automated local exception rule generation system, method and computer program product
US20080126079A1 (en) * 2006-01-20 2008-05-29 Research In Motion Limited Handheld electronic device with automatic text generation
US20080109712A1 (en) * 2006-11-06 2008-05-08 Mcbrearty Gerald F Method, system, and program product supporting automatic substitution of a textual string for a url within a document
US7720868B2 (en) * 2006-11-13 2010-05-18 Microsoft Corporation Providing assistance with the creation of an XPath expression
US7562344B1 (en) * 2008-04-29 2009-07-14 International Business Machines Corporation Method, system, and computer program product for providing real-time developer feedback in an integrated development environment
US8379801B2 (en) * 2009-11-24 2013-02-19 Sorenson Communications, Inc. Methods and systems related to text caption error correction
US20110145741A1 (en) * 2009-12-16 2011-06-16 Siemens Medical Solutions Usa, Inc. Context Specific X-ray Imaging User Guidance System
US9292161B2 (en) * 2010-03-24 2016-03-22 Microsoft Technology Licensing, Llc Pointer tool with touch-enabled precise placement
US8776091B2 (en) 2010-04-30 2014-07-08 Microsoft Corporation Reducing feedback latency
US9600801B2 (en) 2011-05-03 2017-03-21 Architectural Computer Services, Inc. Systems and methods for integrating research and incorporation of information into documents
US9317196B2 (en) 2011-08-10 2016-04-19 Microsoft Technology Licensing, Llc Automatic zooming for text selection/cursor placement
US9881010B1 (en) 2014-05-12 2018-01-30 Google Inc. Suggestions based on document topics
US9607032B2 (en) 2014-05-12 2017-03-28 Google Inc. Updating text within a document
US9251141B1 (en) 2014-05-12 2016-02-02 Google Inc. Entity identification model training
US9959296B1 (en) 2014-05-12 2018-05-01 Google Llc Providing suggestions within a document
US9444825B2 (en) * 2014-08-11 2016-09-13 Empire Technology Development Llc Continuous user authentication
US10176889B2 (en) 2017-02-09 2019-01-08 International Business Machines Corporation Segmenting and interpreting a document, and relocating document fragments to corresponding sections
US10169325B2 (en) 2017-02-09 2019-01-01 International Business Machines Corporation Segmenting and interpreting a document, and relocating document fragments to corresponding sections
JP6852480B2 (ja) 2017-03-15 2021-03-31 オムロン株式会社 文字入力装置、文字入力方法、および、文字入力プログラム
US11899904B2 (en) * 2017-04-12 2024-02-13 Microsoft Technology Licensing, Llc. Text input system with correction facility
US11403467B2 (en) 2020-03-30 2022-08-02 International Business Machines Corporation Semantic correction of messages
US11620437B2 (en) 2020-03-30 2023-04-04 International Business Machines Corporation Semantic correction of messages for groups

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2151055B (en) * 1983-11-29 1987-02-18 Nat Res Dev Word processing
US4797855A (en) * 1987-01-06 1989-01-10 Smith Corona Corporation Word processor having spelling corrector adaptive to operator error experience
JPH0289166A (ja) * 1988-09-26 1990-03-29 Sharp Corp 文書作成支援装置
US5390281A (en) * 1992-05-27 1995-02-14 Apple Computer, Inc. Method and apparatus for deducing user intent and providing computer implemented services
US5469538A (en) * 1994-03-02 1995-11-21 Mathsoft, Inc. Mathematical document editor and method performing live symbolic calculations for use with an electronic book
JPH08137842A (ja) * 1994-11-08 1996-05-31 Canon Inc 言語情報処理システム及びその方法

Also Published As

Publication number Publication date
US5754737A (en) 1998-05-19
EP0747837B1 (en) 2009-10-28
EP0747837A3 (en) 1999-08-25
CA2177942C (en) 2002-03-19
CA2177942A1 (en) 1996-12-07
JPH09101949A (ja) 1997-04-15
DE69638060D1 (de) 2009-12-10
EP0747837A2 (en) 1996-12-11

Similar Documents

Publication Publication Date Title
JP4326599B2 (ja) 対話型テキスト修正及びユーザーガイダンスをサポートする方法及びシステム
US5778402A (en) Method and system for auto-formatting a document using an event-based rule engine to format a document as the user types
US5649222A (en) Method for background spell checking a word processing document
US5392386A (en) Method and apparatus for adding functionality to computer programs executing under graphical user interfaces
EP0517486B1 (en) Global user interface
US5999942A (en) Method and apparatus for enforcement of behavior of application processing systems without modifying application processing systems
CA2258711C (en) Method and system for verifying accuracy of spelling and grammatical composition of a document
US6305008B1 (en) Automatic statement completion
US6108799A (en) Automated sample creation of polymorphic and non-polymorphic marcro viruses
US5450545A (en) Generation of rules-based computer programs using data entry screens
US6583798B1 (en) On-object user interface
Bass et al. Achieving usability through software architecture
CA2299310C (en) Detection and elimination of macro viruses
US6121968A (en) Adaptive menus
US6377965B1 (en) Automatic word completion system for partially entered data
US7451455B1 (en) Apparatus and method for automatically manipulating software products
US6046741A (en) Visual command sequence desktop agent
US20090150870A1 (en) Method, Apparatus, and Computer Program Product for Implementing Enhanced Template Debug
JPH07104765B2 (ja) コンピュータ駐在ソフトウエアシステムに対するユーザインタフェースとしての電子的ドキュメント
US5982365A (en) System and methods for interactively generating and testing help systems
US6851106B1 (en) Object oriented optimizing code generator with user selection of use or do not use for dynamic generation of functions
Sutphin AutoCAD 2006 VBA: a Programmer's reference
US5907851A (en) Editing nested documents by appointing a portion for insertion with an alternative substitute
JP2001318791A (ja) コンピュータ構成のためのテキスト・ファイルを変更する方法及びシステム
Ioannou UM-CYCLONE

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041214

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050221

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050310

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050613

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050613

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20051108

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060308

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20060427

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20060607

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20060714

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090204

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090210

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090304

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090325

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090325

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090401

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090610

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

Free format text: PAYMENT UNTIL: 20120619

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120619

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130619

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term