(57)【要約】【課題】ドキュメントを異なるドメインからの閲覧および編集に適した共通の表現に変換するための方法およびシステムを提供すること。【解決手段】本システムは、ドキュメントをそのドメイン固有の入力状態から一連の中間言語に変換する、パイプラインにおける一連の変換を行うことによって、視覚表現のためのドメイン固有のドキュメントを準備する。中間言語は、変換されるドキュメントのドメインにかかわらず同じシンタックスを共有する。【選択図】図１
2008146637.tif 000002
【特許請求の範囲】
【請求項１】
ユーザとの対話のためにドメイン固有のドキュメントを表現するためのシステムであって、
前記ドキュメントをドメイン言語から抽象言語に変換するためのドメイン−抽象言語コンポーネントであって、前記ドキュメントの前記ドメインに固有であるドメイン−抽象言語コンポーネントと、
前記ドキュメントを前記抽象言語から具象言語に変換するための抽象−具象言語コンポーネントであって、前記ドキュメントの前記ドメインから独立している抽象−具象言語コンポーネントと、
前記ドキュメントを前記具象言語からグラフィカル言語に変換するための具象−グラフィカル言語コンポーネントであって、前記ドキュメントの前記ドメインから独立している具象−グラフィカル言語コンポーネントと、
前記グラフィカル言語に基づいて前記ドキュメントをレンダリングするための表示コンポーネントと
を含むことを特徴とするシステム。
【請求項２】
前記抽象言語は、
視覚表現のために保持される必要があるセマンティクスを含まないデータを表現するデータ要素と、
ドキュメント作成者の意図を表現するステートメントであって、種々の表記を有するドキュメントを表すことができるステートメントと、
組み合わせのセマンティクスを有するドキュメント要素を表現するオペレーションと、
前記ドキュメントの前記視覚表現に影響を及ぼす組織的情報を表現するオーガナイザとを含み、
前記抽象言語が、複数の交換可能で等価な表記を含む一般的なドメイン非依存の慣習を有する表記上の項の固定されたセットにおいてドキュメントを表現するようになされたことを特徴とする請求項１に記載のシステム。
【請求項３】
前記具象言語は、
１つまたは複数のレイアウト規則によってボックスを表現するフレームと、
１つまたは複数のレイアウト規則によって前記ドキュメントの前記表示の状態を変更するコントロールと、
コントロールによって指定された前記状態変更の範囲を定義するオーガナイザと、
前記ドキュメント内のデータを表現するマークと
を含むことを特徴とする請求項１に記載のシステム。
【請求項４】
前記グラフィカル言語は、特定の寸法を有する前記表示の領域を定義するキャンバスと、キャンバスに関連して表示された画像の一部分を表現するマークとを含むことを特徴とする請求項１記載のシステム。
【請求項５】
各前記コンポーネントはまた、前記グラフィカル言語から前記具象言語へ、前記具象言語から前記抽象言語へ、および前記抽象言語から前記ドメイン言語へ、前記ドキュメントを変換するために逆変換を行うことを特徴とする請求項１に記載のシステム。
【請求項６】
前記ドメインドキュメントは、コンピュータプログラムのためのソースコードであることを特徴とする請求項１に記載のシステム。
【請求項７】
前記ドメインに対して無効であり前記ドメイン言語に格納できない前記ドキュメントへの中間的変更を、表現するペンディング言語コンポーネントを含むことを特徴とする請求項１に記載のシステム。
【請求項８】
前記具象言語は、前記ドキュメントに適用されるフォーマッティングおよびスタイルを表現することを特徴とする請求項１に記載のシステム。
【請求項９】
前記ドキュメントの表示された表現に基づいて、ユーザによって選択されたグラフィカル言語要素を検出するためのヒットテストコンポーネントを含むことを特徴とする請求項１に記載のシステム。
【請求項１０】
異なるドメイン言語を使用するドキュメントを、前記ドキュメントをレンダリングするためにドメイン非依存の抽象言語に変換する方法であって、
前記ドキュメントのドメイン固有のデータ要素を識別するステップと、
前記ドキュメントを種々の表記で表すためにドキュメント作成者の意図を指定するドメイン固有のステートメントを識別するステップと、
組み合わせのセマンティクスを有するドキュメント要素を指定するドメイン固有のオペレーションを識別するステップと、
前記ドキュメントの視覚表現に影響を及ぼす組織的情報を指定するドメイン固有のオーガナイザを識別するステップと、
前記識別されたデータ要素、ステートメント、オペレーション、およびオーガナイザを前記抽象言語で表現するステップであって、異なるドメインからのドキュメントが前記抽象言語で表され、前記抽象言語がドメイン非依存の方法で前記ドキュメントをレンダリングするために使用することができるようにするステップと
を含むことを特徴とする方法。
【請求項１１】
前記ドキュメントをコンピュータモニタ上に表示するステップを含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記ドキュメントの前記抽象言語表現を逆変換して、前記ドキュメントの表示された表現に対してなされた編集の変更を含む前記ドキュメントのドメイン言語表現を生成するステップを含むことを特徴とする請求項１０に記載の方法。
【請求項１３】
前記ドキュメントは、文書処理ドキュメントであることを特徴とする請求項１０に記載の方法。
【請求項１４】
方法によって、コンピュータシステムに表示のためのドメイン固有のドキュメントを作らせる命令を含むコンピュータ可読媒体であって、前記方法は、
前記ドメイン固有のドキュメントを抽象言語表現にマップするステップと、
前記抽象言語表現に関係する表記上の選択を受け取るステップと、
前記受け取った表記上の選択に基づいて前記抽象言語表現を具象言語表現にマップするステップと、
前記具象言語表現のレイアウトを決定するステップと、
前記決定されたレイアウトに基づいて前記具象言語表現をグラフィカル言語表現にマップするステップと、
前記グラフィカル言語表現に基づいて前記ドキュメントを表示するステップと
を含むことを特徴とするコンピュータ可読媒体。
【請求項１５】
前記ドメイン固有のドキュメントに対する変更を検出するステップと、前記変更に基づいて前記表示を更新するステップとを含むことを特徴とする請求項１４に記載のコンピュータ可読媒体。
【請求項１６】
前記表示されたドキュメントに対する変更を検出するステップと、前記変更を前記グラフィカル言語表現に取り込むステップとを含むことを特徴とする請求項１４に記載のコンピュータ可読媒体。
【請求項１７】
前記取り込まれた変更を前記グラフィカル言語表現から前記ドメイン固有のドキュメントに逆マッピングするステップを含むことを特徴とする請求項１６に記載のコンピュータ可読媒体。
【請求項１８】
前記ドキュメントを表示するステップは、前記ドキュメントを表示するための表示領域のサイズを決定することを含むことを特徴とする請求項１４に記載のコンピュータ可読媒体。
【請求項１９】
前記ドキュメントに対する変更を検出するステップと、ペンディング言語表現を使用して前記変更を表現するステップとを含むことを特徴とする請求項１４に記載のコンピュータ可読媒体。
【請求項２０】
前記変更は、前記ドメイン固有のドキュメントに対し無効である変更を含むことを特徴とする請求項１９に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
ドキュメントを異なる複数のドメインから共通の表現に変換するための方法およびシステムに関する。
【背景技術】
【０００２】
様々なタイプのドキュメントが、異なるドメインを表現するために異なる用途で作成されうる。例えば、文書処理は、英語などの自然言語で作成されるドキュメントを有する１つのドメインであり、一般に、段落、要約、および見出しなどの概念を含む。文書処理ドキュメントは、メモ、アウトライン(outline)、およびレター(letter)などのいくつかのタイプを有することができる。もう１つのドメインは、コンピュータプログラムを表現するために識別子、フロー制御、および算術演算子のようなプログラミング言語の要素を使用するコンピュータプログラミングである。コンピュータプログラミングドキュメントもまた、ヘッダファイル、インプリメンテーションファイル(implementation file)、およびリソースファイルなどのいくつかのタイプを有することができる。各ドメインは、そのドメイン内で理解可能なドキュメントを作成するための適切なシンタックス(syntax)および辞書を定義する一組のドメイン自体の制約を有する。ドメインおよびドキュメントは多様であるが、閲覧および編集のためにこれらのドキュメントを表現する方法は、多くの類似点を共有している。
【０００３】
現在では、ドキュメントを閲覧および編集するために、ドキュメントドメインごとに異なるアプリケーションが使用されており、１つのドメイン内でドキュメントのタイプごとに異なるアプリケーションが使用されることもある。例えば、文書処理ドキュメントを閲覧および編集するための多数の市販のワードプロセッサが存在する。同様に、コンピュータプログラムを閲覧および編集するための多数のプログラミングエディタ(programming editor)が存在し、プログラミング言語ごとに別々のエディタが用いられることが多い。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
閲覧アプリケーションおよび編集アプリケーションをドメインによって分離することは、各アプリケーションのユーザに、個々のドキュメントを閲覧および編集するのにどのアプリケーションを使用すべきかを知るための、また、各アプリケーションに関連する固有の機能（feature）を習得するための負担をもたらす。また、閲覧アプリケーションおよび編集アプリケーションをドメインによって分離することは、アプリケーション開発者にも負担をもたらし、アプリケーション開発者は、他のドメインに既に存在するソースコードに類似する新しいソースコードを、再実装し別個に保守しなければならないことがしばしばである。アプリケーション開発者に対する追加的な負担により、プログラミングエラーまたはバグが追加的にもたらされ、これに必要とされる労力のため、新しいドメインのドキュメントを閲覧および編集するための完全な機能を有するアプリケーションの入手が遅れることになる。
【課題を解決するための手段】
【０００５】
閲覧および編集のために、ドキュメントを異なる複数のドメインから共通の表現に変換するための方法およびシステムが提供される。例えば、変換システムは、文書処理ドキュメント、様々なプログラミング言語におけるソースコードドキュメント、数式を含むドキュメントなどを閲覧および編集するために使用することができる。このシステムは、ドキュメントをそのドメイン固有の入力状態からドキュメントの複数の異なる側面を表現する一連の中間言語に変換する、パイプラインにおける一連の変換を行うことによって、（例えば、コンピュータ画面またはプリンタへの）レンダリングのためのドメイン固有のドキュメントを準備する。変換プロセスをいくつかのより小さいステップに分解することにより、システムは、多くの異なるドメインからのドキュメントを表示および編集するために相当量のソースコードを再使用することが可能になる。中間言語は、変換されるドキュメントのドメインにかかわらず同じシンタックスを有する。かかる３つの中間言語は、抽象言語(abstract language)（Ａ）、具象言語(concrete language)（Ｃ）、およびグラフィカル言語(graphical language)（Ｇ）である。抽象言語は、共通のシンタックスにおいてドキュメントを表現し、変換パイプラインの後段においてドキュメントを解釈するためにドメイン定義の概念の必要性を除去する。抽象言語は、パイプラインの後段を多数の異なるタイプのドキュメントについて同じにすることができる固有の言語である。具象言語は、小数、ツリー、または他のアイテムをどのように表示するかなどの表記上の選択を解決するとともに、ドキュメントを、スクロールなどの機能と併せて、変化する寸法の表示領域においてドキュメントを表示するために適切な形態で表現する。グラフィカル言語は、特定の表示領域上でドキュメントの可視要素のレンダリングを記述する。Ａ、Ｂ、およびＧ言語の組み合わせが、多くのドメインからのドキュメントの閲覧および編集を可能にする固有のパイプラインを形成する。これらの言語について、以下で更に詳細に説明する。
【発明を実施するための最良の形態】
【０００６】
ドキュメントは、変換の各ステップにおいて編集されうる。様々なタイプのドキュメントを、ドメイン固有の表現から閲覧および編集のための様々な段を経て変換するためのシステムが、米国特許出願第２００５／００９７４５３号明細書（代理人整理番号４０８０６−８００５ＵＳ）「METHOD AND SYSTEM FOR REVERSIBLE DESIGN TREE TRANSFORMATIONS」に説明されている。例えば、ユーザは、グラフィカル言語表現を変更するために画面上の視覚要素を直接操作することができる。これらの変更は、逆変換によってパイプラインにおいて、より早期の言語表現に、それらの表現がドメイン言語で表現されるまで適用されうる。グラフィカル言語表現より前に変換パイプラインにおけるある段で行われる変更は、表示装置上にレンダリングされるパイプラインにおいて前方に投射されうる。編集は、ドメイン固有の変換環境の外部のツールや変換環境内の高水準の編集機能を介するなどして、ドメイン言語レベルでも行われることがある。ドメイン言語レベルの外部で行われる変更は、そのドメインと互換性がないことがある。例えば、Ｃ＋＋プログラムの編集の際、ユーザが変更を完了し終えるまで、不完全なテキストをコンパイルすることができない。ドメインへの保留中の変更を格納するためのシステムが、米国特許出願第２００４／０２２５９６４号明細書（代理人整理番号４０８０６−８００１ＵＳ）「METHOD AND SYSTEM FOR STORING PENDING CHANGES TO DATA」に説明されている。
【０００７】
このように様々なタイプのドキュメントを変換するために行われるステップは、しばしば、多くの共通の要素を共有する。例えば、文書処理ドキュメント内の段落とＣ＋＋プログラミング言語内の「ｉｆ」文とは、非常に異なる目的および意味を有するが、しばしば、両方とも、他の段落またはプログラムブロックを表現する他の類似の長方形の上方または下方でページに配置される長方形にて表現される。同様に、両方のタイプのドキュメントの編集は、グラフィカルな長方形内のテキストを修正する、または画面上のグラフィカルな長方形の順序を並べ替えることによって行うことができる。例えば、新しい単語が文書処理ドキュメント内の段落に追加されうる、または新しいステートメントがプログラムブロックに追加されうる。同様に、段落が文書処理ドキュメント内で移動されうる、またはプログラムブロックがプログラム内で移動されうる。Ａ、Ｃ、およびＧ言語は、多くの異なるドメインのドキュメントにより共有される共通要素を利用する様々な方法で、ドキュメントを記述する。このようにして、システムは、多くの異なるタイプのドキュメントの間で閲覧および編集機能を共有することを可能にし、追加のタイプのドキュメントをサポートするために書く必要があるカスタムソフトウェアの量を減少させる。
【０００８】
Ａ言語
第１の言語は、共通のシンタックスで様々なドメインを表すための表記言語である、Ａ言語と呼ばれる抽象言語である。ドキュメントは、ドメイン言語において始まり、ドメインは、ドメイン−抽象(domain-to-abstract)（Ｄ２Ａ）変換と呼ばれる変換を用いてドキュメントをＡ言語に変換することを担う。ドメインの例としては、文書処理、Ｃ＋＋、ＳＱＬ、Ｃ＃、カレンダ、ダイアログボックスなどがある。Ａ言語は、ドメイン固有の表記を最小限にし、ドメイン表現を共通のシンタックスに変換しようと努める。例えば、英語は、文と段落を作るために用いる単語の組み合わせの複雑な変化を有することができるが、抽象言語は、２６文字のアルファベット、ならびに、スペース、句読点、および改行など他の文字を表現するための要素を含むことによって、任意の英語のドキュメントを表現することができる。抽象ドメインは、所望の表記が表記上の項の固定されたセットにおいて表される形態であり、それらの表記上の項は、複数の交換可能で等価な表記を含む一般的なドメイン非依存の慣習(tradition)を有する。これらは、より特定的概念の「加算(addition)」、「除算(division)」、および「シンタックス式(syntax equation)」、ならびに、より一般的概念の「テキスト(text)」、「テーブル(table)」、「縦方向のリスト(vertical lists)」、「階層(hierarchy)」、および「演算子優先順位(operator precedence)」などを含む。
【０００９】
Ａ言語の要素は、いくつかのグループ、すなわち、データ、ステートメント、オペレーション(operation)、およびオーガナイザ(organizer)に分割される。第１のグループであるデータは、適切な視覚表現のために保持される必要があるセマンティクス(semantics)を含まないテキスト、数値、グラフィック(graphical)、または他の汎用データであるデータを表現する。第２のグループであるステートメントは、様々な異なる表記でドキュメントを表すことを必要とするドキュメント作成者の共通の意図を保持するために使用される。例えば、スイッチ文、ループ、転送、およびコメントのような共通のプログラミングの構成体を表現するために、Ａ言語において要素が定義される。第３のグループであるオペレーションは、プログラミング言語における括弧内のアイテムや数学のドキュメントにおける数式の植字などのような優先的に定義される組み合わせのセマンティクスを有するドキュメント要素を表現するために使用される。例えば、要素は、基本的演算、２項演算、および変数代入を表現するために定義される。第４のグループであるオーガナイザは、ドメインにおいて必ずしも表現される必要はないが、ドキュメントの視覚表現に影響を及ぼす組織的情報を格納するために有用であるアイテムを表現する。例えば、コードのブロック、アイテムのリスト、テキストのブロック、および他の同様のグループを、Ａ言語のオーガナイザ要素を使用して表現することができる。これらの要素は、編集の際に、ユーザが編集を意図しうるドキュメントの関連領域を識別するために使用することができる。例えば、オーガナイザは、編集する段落または除去するコードのブロックを選択するためのユーザの能力を保持する。いくつかのドメインの表記上の概念は、Ａ言語において類似の要素を持つためには十分に一般的ではないが、しかしながら、キーワード、ブロック、および要素間の関係を表現するための（後述する）ＡＣｈｉｎ、ＡＫｅｙｗｏｒｄ、およびＡＯＢｌｏｃｋのようなより一般的な要素を使用してＡ言語において表されうる。例えば、Ｃ＃言語のｔｒｙ／ｃａｔｃｈ表記は、一般的なＡ言語要素を使用して実装することができるが、多くの言語が同様の概念を追加すると、Ａ言語は、この表記を表現するための特定的要素を含むように修正されることも可能である。
【００１０】
ドキュメントのＡ言語への変換は、共通の表現内に置かれるが、依然として、ドキュメントの最終的なグラフィカルな表現に影響を及ぼす多数の選択がある。例えば、Ａ言語は、時間を表現するデータを識別することができるが、その時間は、アナログもしくはデジタルとしてグラフィックで表現されうる。テキストは、強調表示として識別されうるが、強調表示の様式は、黄色の背景から、太字テキスト、点滅テキストまで様々である。デジタル回路は、グラフィカルゲート(graphical gate)またはプログラミング演算子を使用して示すことができる。プログラミング言語は、特定のプログラムについて多くの正当な表現を有することができるが、ユーザは、ユーザが行あたり１つの演算子やコンマ後のスペースなどを優先するかどうかを示す設定優先を有することができる。
【００１１】
表１は、Ａ言語のいくつかの要素を示す。
【００１２】
【表１】
2008146637.tif 000003
【００１３】
Ｃ言語
Ｃ言語と呼ばれる具象言語は、シンボル、テキスト、グリフ(glyph)、およびグラフィック（まとめてマークと称する）の特定のセットが、ドキュメントを表現するために選択された後であるが、選択されたマークがディスプレイ上に配置されるより前に、ドキュメントを表現する。Ａ言語表現は、どのようにプログラミングブロックをフォーマットするかなど（例えば、行のそれら自体による中括弧、括弧の後のスペースなど）何らかの表記上の選択を解決することによって、Ｃ言語表現に変換される。Ｃ言語は、内容および関係を表すが、表現においてアイテムの特定の位置は表さない。例えば、Ｃ言語は、特定のテキストが緑のテキストおよびイタリックを使用して強調表示されることを示すことができる。Ｃ言語はまた、ユーザが編集作業を行うために選択できるドキュメント内の領域を識別するために使用されるアンカポイントを含む。Ｃ言語は、要素のサイズと表示装置上でそれらに割り振られたスペースとの間の相互作用に対応することができる一定の方法でドキュメントのレイアウトを記述する。例えば、Ｃ言語は、テキストがレンダリングされるべきウィンドウのサイズが与えられた場合にテキストの段落をレンダリングするための十分な情報を含む。この例では、Ｃ言語は、改行が発生しうる段落内の領域を識別する。その領域では、段落がレンダリングされるサイズに基づいて視覚表現において改行として実際に終結する場合もそうでない場合もある。Ｃ言語は、変換パイプラインの他の段では表現されないユーザによって指定されたフォーマッティングの選択を取り込む。
【００１４】
Ｃ言語の一変形は、ペンディング言語(pending language)であり、これにより、ドキュメントの編集によりもたらされる中間的変更を表現することが可能になる。ドキュメントは、特定のドメインに対して無効な編集の際の状態を経過することがある。例えば、文書処理ドメインにおいて、文は、ユーザが始めて入力している過程にあるとき常に正しい英語となるわけではない。別の例として、Ｃ＋＋プログラムは、ユーザがソースコードの新しい行を入力している間、誤ったステートメントを含むことがある。ペンディング言語は、進行中の変更を表現するための表記を提供する。また、ペンディング言語は、編集のための選択領域に対するテキストの重ね合わせを可能にすることができる。例えば、Ｃ＋＋ドキュメントにおいて、ユーザは、「ｗｈｉｌｅ」文を選択し、「ｉｆ」文と置き換えることができる。保留中の変更を格納する更なる方法については、上記「METHOD AND SYSTEM FOR STORING PENDING CHANGES TO DATA」に記載されている。
【００１５】
Ｃ言語の要素は、フレーム、コントロール、オーガナイザ、およびマークのカテゴリにグループ分けされる。フレームは、レイアウト規則を有するボックスを表現する。フレームは、あるフレームが他の多くのフレームを含みそれらのフレームがフレームを含み以下同様にフレームを含むように、入れ子にすることができる。フレームは、ユーザコマンドに基づいて可視または不可視とすることができ、フレームの選択などのユーザの対話に基づいてタイプおよびレイアウトを変更することができる。以下は、フレームタイプのいくつかの例である。第１のタイプのフレームは、ＬｉｎｅＩｔｅｍであり、テキストを含むためのボックスを表現する。ＬｉｎｅＩｔｅｍフレームは、フレーム内のテキストに適用可能な折返しおよび改行規則に従ったテキストの処理を担う。ＬｉｎｅＩｔｅｍはまた、水平または垂直にフレーム内のテキストの前後に出現するスペースの定義された量を含むことができる。ＬｉｎｅＩｔｅｍは、プログラムのステートメント、長いコメント、または文書処理における段落を表現するために使用することができる。
【００１６】
別のタイプのフレームに、ＧｒａｐｈｉｃｓＩｔｅｍがあり、これは、レイアウト情報とともにグラフィカルマーク(graphical mark)のグループを表現する。更に別のタイプのフレームに、Ｖｅｒｔｉｃａｌフレームがある。Ｖｅｒｔｉｃａｌフレームは、縦方向に配列されたフレームの長方形の列を表現する。Ｖｅｒｔｉｃａｌフレームは、段落を表現する入れ子にされたＬｉｎｅＩｔｅｍフレームを含んで、フレームの組み合わせが、多数の段落がページの下方へ縦方向に配列された一般的な文書処理ドキュメントを表現するようにする。同様のタイプのフレームであるＨｏｒｉｚｏｎｔａｌは、フレームの長方形の行を配列するもので、時間線、横方向のリスト、または他の横方向のデータを表現するために使用することができる。Ｄｅｓｋｔｏｐは、行および列に長方形を配列するタイプのフレームであり、一般的なオペレーティングシステムシェル(operating system shell)におけるデスクトップに類似している。Ｔｒｅｅは、長方形を階層的に配列するタイプのフレームである。最後に、Ｔｒａｎｓｐａｒｅｎｔフレームは、ある種の構造情報を格納する不可視のフレームであり、この構造情報は、格納されなければ、ドキュメントを表示可能な形態に変換する際に失われることになる情報である。例えば、プログラミング言語におけるプロシージャは、個別に選択可能でありうるが、表示のために単一フレームにおいて他のプロシージャとともに初期にグループ化されることがある。そのプロシージャの周辺のＴｒａｎｓｐａｒｅｎｔフレームを維持することによって、ユーザは、そのプロシージャを個別に選択することができる。
【００１７】
Ｃ言語要素の第２のカテゴリは、コントロールを含む。コントロールは、表示またはドキュメントの状態を変更するアイテムである。例えば、コントロールの１つのタイプは、ＢｒｅａｋＯｐｔｉｏｎであり、これは、テキストにおいて現在の位置を区切りの機会として設定する。別のタイプのコントロールとして、ＳｅｔＣｏｎｔＳｔｒｉｎｇがあり、これは、区切りが発生するすべての行の継続部分に置かれる継続ストリング(continuation string)を指定する。例えば、Ｃ＋＋では、アスタリスクなどの同じ文字でコメント内の各行を開始することが一般的である。更に別のタイプのコントロールに、ＳｋｉｐＲｉｇｈｔがあり、これは、現在の列が空でありスキップされるべきことを示すための列ベースのフレームで使用される。更に別のタイプのコントロールに、ＳｅｔＴａｂがあり、これは、テキストのブロックについてタブ指定(tabification)規則を設定する。
【００１８】
Ｃ言語要素の第３のカテゴリは、オーガナイザを含む。オーガナイザは、コントロールによって指定された状態変化の範囲を定義する目的のコントロールのグループまたは階層である。例えば、オーガナイザは、特定の改行方針が段落全体に適用されることになることを指示することができる。オーガナイザはまた、特定の領域がユーザによって強調表示されていることや、ドキュメントに関するデフォルトの区切り規則が特定の領域に適用されるべきでないことを指示することもできる。
【００１９】
Ｃ言語要素の最後のカテゴリは、マークを含む。マークは、テキストや画像などのドキュメント表現における基本葉ノードである。マークの例として、テキスト、カレット、アイコン、キャンバス（例えば、デスクトップまたは他の２Ｄスペース）、スケーラブルシンボル(scalable symbol)、および、グラフィカルマーク（例えば、線、円など）がある。カレットは、他のマークの前または後の情報を示すために使用される。スケーラブルシンボルは、それが表示される領域のレイアウトに基づいて表現が変化するシンボルである。例えば、あるスケーラブルシンボルは、平方根号でありうるが、その視覚表現は、それを小数に適用するかどうか、および表示装置上のその小数のレイアウトの仕方によって異なることが可能である。いくつかの実施形態では、マークは、レイアウト情報を持つ。例えば、テキストは、横方向にフレキシブルであるが（例えば、いくつかの行で折り返す、または、位置調整されたテキストのように横方向に圧縮することができる）、縦方向にフレキシブルではないように指定することができる。
【００２０】
レイアウトは、Ｇ言語への変換によって表示装置上の表示のためにＣ言語において表現されたアイテムを準備するプロセスである。Ｃ言語アイテムのレイアウトは、表示されるフレームのタイプに基づいて変化する。例えば、ＬｉｎｅＩｔｅｍの場合、ｚレイアウトアルゴリズムが適用されて、テキストを、ｚ字状（左から右に進み、次いで行を下って繰り返す）に先行スペース、末尾スペース、および改行を明らかにする行の配列にマップする。Ｔｒｅｅフレームの場合、レイアウトがレベルごとに行われ、また、ユーザの介入によって任意のレベルでレイアウトが影響されてもよい。例えば、Ｔｒｅｅフレームは、平衡した、片側に寄った、右に向かって大きくなる、下に向かって大きくなるなど様々な表現のうちに配置することができ、直線、四角形、ジグザグなど異なるスタイルの連絡線を有することができる。これらのタイプのレイアウトオプションは、Ａ言語を介してパイプラインを通して渡されるプロパティを使用してドメインによって、またはユーザの選好によって指定することができる。デスクトップフレームは、指定されたレイアウトオプションに応じて、行／列グリッド、ｚ字状のパターン、または螺旋状のパターンを用いて配置することができる。
【００２１】
Ｃ言語はまた、フォーマットおよびスタイルを表現するために使用される。フォーマッティングオプションは、太字体やフォントの選択などの個別のマークに適用されるオプションである。スタイルは、見出しスタイルのようなフォーマッティングオプションのグループであり、見出しが、太字、下線付き、および通常テキストより大きいフォントであるべきことを指定することができる。
【００２２】
表２は、Ｃ言語のいくつかの要素を示す。
【００２３】
【表２−１】
2008146637.tif 000004
【００２４】
【表２−２】
2008146637.tif 000005
【００２５】
Ｇ言語
Ｇ言語と呼ばれるグラフィックス言語は、表示前のドキュメントの最終段を表現する。Ｇ言語への変換では、ドキュメントを表示するために、表示領域の実際の寸法および特性を、Ｃ言語表現にマップする。グラフィカル言語は、ドキュメントの要素の実際のレイアウトを記述するために使用され、つまり、それにより、（マークを重ね合わせるための順序を含めて）要素のサイズ、切落とし、および位置が決定されている。Ｇ言語は、キャンバスおよびマークから構成される。キャンバスは、特定の寸法を有する表示領域である。例えば、キャンバスは、リストボックス、スクロール可能なウィンドウ、またはプログラミングステートメントのリストとすることができる。互いに隣接しかつレイヤにおいて、完全な表示を構成する多数のキャンバスがありうる。キャンバスは、スクロール可能ウィンドウにおいて可視領域の外部にテキストの領域がスクロールされたときなどに、隠すこともできる。Ｇ言語におけるマークは、表示された画像の一部分を表現する。マークは、キャンバス、ならびに、内容、レイアウト、ユーザの選択を受け取るためのポインティング領域を表現する長方形に対する基準位置を含む。マークは、テキスト、カーソル、線、空白領域、長方形、あるいは他の形状またはデータを表現することができる。
【００２６】
ヒットテスト(hit testing)は、ユーザにより選択された点をＧ言語マークにマップするプロセスである。ユーザがオブジェクトまたは領域を選択すると、影響を受けたマークがヒットテストによって識別され、選択情報が変換パイプラインを介して渡され、適切なレベルで処理される。
【００２７】
表３は、Ｇ言語のいくつかの要素を示す。
【００２８】
【表３】
2008146637.tif 000006
【００２９】
図面
図１は、一実施形態における変換パイプラインを示す。この変換システムは、ドメイン固有の言語での入力ドキュメント１１０を受け取る。入力ドキュメント１１０は、ドメイン−抽象変換１２０を通過し、ドメイン−抽象変換１２０は、抽象言語ドキュメント１３０を生成する。抽象言語ドキュメント１３０は、抽象−具象変換(abstract-to-concrete)１４０を通過し、抽象−具象変換１４０は、具象言語ドキュメント１５０を生成する。具象言語ドキュメント１５０は、具象−グラフィカル変換(concrete-to-graphical)１６０を通過し、具象−グラフィカル変換１６０は、グラフィカル言語ドキュメント１７０を生成する。次いで、グラフィカル言語ドキュメント１７０は、閲覧および編集のためにドキュメントをユーザへ表示するために使用される。パイプラインのいずれの段においても、ユーザ入力１８０は、変換に影響を及ぼし、フォーマッティング設定、コーディングスタイル(coding style)、またはユーザから受け取る他の因子に基づいて異なる出力を生成させることができる。３つの変換が図示されているが、他の中間の変換、例えば、まだドメインドキュメントの一部分ではない保留中の変更を表現するためのペンディング変換やドキュメントの部分のユーザの選択を表現するための選択変換なども、変換パイプラインの一部分とすることができる。ドキュメントは、同じレベルにおいて複数の変換を受けることもできる。例えば、ドキュメントは、ドメイン−ドメイン変換を通過して、ドメイン概念を低減させドメイン−抽象変換１２０のためにより適切な表現にすることができる。
【００３０】
図２は、一実施形態における変換システムのコンポーネントを示すブロック図である。変換システム２００は、ドメイン言語インタプリタコンポーネント２０５、ドメイン−抽象変換コンポーネント２１０、抽象言語出力コンポーネント２１５、抽象言語インタプリタコンポーネント２２０、抽象−具象変換コンポーネント２２５、具象言語出力コンポーネント２３０、具象言語インタプリタ２３５、具象−グラフィカル変換コンポーネント２４０、グラフィカル言語出力コンポーネント２４５、グラフィカル言語インタプリタ２５０、表示装置２５５、および、ユーザ入力装置２６０を含む。ドメイン言語インタプリタコンポーネント２０５は、ドメイン言語ドキュメントを受け取り、それが含むドメインベースの概念を解釈する。ドメイン−抽象変換コンポーネント２１０は、ドメインベースの概念を抽象表現に変換することによってドメイン言語ドキュメントを抽象言語に変換する。抽象言語出力コンポーネント２１５は、変換されたドメインドキュメントから抽象言語ドキュメントを出力する。新しいドメインをサポートするとき、通常は、ドメイン言語インタプリタコンポーネント２０５、ドメイン−抽象変換コンポーネント２１０、および抽象言語出力コンポーネント２１５のみが、修正される必要がある。抽象言語は、様々なドメインについての抽象表現を提供するように設計されており、したがって、システムの剰余が各ドメインで再使用できる。抽象言語インタプリタコンポーネント２２０は、抽象言語出力コンポーネント２１５によって生成された抽象言語ドキュメントを解釈し、解釈されたドキュメントを抽象−具象変換コンポーネント２２５に渡す。抽象−具象変換コンポーネント２２５は、ドキュメントを、抽象表現から、表記上の選択を解決する具象言語表現に変換する。具象言語出力コンポーネント２３０は、変換された抽象ドキュメントから具象言語ドキュメントを出力する。具象言語インタプリタ２３５は、具象言語ドキュメントを解釈し、解釈されたドキュメントを、具象−グラフィカル変換コンポーネント２４０に渡す。具象−グラフィカル変換コンポーネント２４０は、ドキュメントを、具象言語表現からグラフィカル言語表現に変換する。グラフィカル言語出力コンポーネント２４５は、変換されたグラフィカル言語ドキュメントを出力する。グラフィカル言語インタプリタ２５０は、グラフィカル言語ドキュメントを解釈し、表示装置２５５で表示するためのドキュメントを準備する。表示装置２５５は、コンピュータ画面、モニタ、または、ユーザによって閲覧するためのドキュメントを表示する他の表示装置とすることができる。ユーザ入力装置２６０は、編集、スクロール、またはドキュメントとの他の対話のためのユーザからの入力を受け取り、システムにユーザの要求を通知する。その結果、ドキュメントを更新し再表示することができる。ユーザ入力装置２６０は、マウス、キーボード、タッチスクリーン、または、ユーザからの入力に応答する他の装置とすることができる。
【００３１】
システムが実装されるコンピューティングデバイスは、中央処理装置、メモリ、入力装置（例えば、キーボードおよびポインティングデバイス）、出力装置（例えば、表示装置）、および記憶装置（例えば、ディスクドライブ）を含むことができる。メモリおよび記憶装置は、システムを実装する命令を含むことができるコンピュータ可読媒体である。更に、データ構造およびメッセージ構造を、通信リンク上の信号などのデータ伝送媒体を介して格納または伝送することができる。様々な通信リンク、例えば、インターネット、ＬＡＮ、ＷＡＮ、２地点間ダイヤルアップ接続、携帯電話ネットワークなどを使用することができる。
【００３２】
システムの実施形態は、パーソナルコンピュータ、サーバコンピュータ、携帯型またはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能家庭用電化製品、デジタルカメラ、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、および、上記の任意のシステムまたは装置を含む分散コンピューティング環境などを含む、様々な動作環境で実装されうる。コンピュータシステムは、携帯電話、携帯情報端末、スマートフォン、パーソナルコンピュータ、プログラム可能家庭用電化製品、およびデジタルカメラなどであってよい。
【００３３】
システムは、１つまたは複数のコンピュータあるいは他の装置によって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的文脈で記述されうる。一般に、プログラムモジュールは、特定のタスクを実行するまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構想などを含む。通常、プログラムモジュールの機能性は、様々な実施形態において所望に応じて組み合わせたり分散させたりすることが可能である。
【００３４】
図３は、一実施形態におけるコンピュータプログラムの一部分の抽象言語表現を示す。ステートメント３１０が、Ｃ＃などのプログラミング言語において示されており、その言語によって定義されるいくつかのキーワード（例えば、「foreach」）、ならびにユーザによって定義されるいくつかの変数名（例えば、「bar」）を含んでいる。ドメイン−抽象変換に続いて、抽象言語表現３２０が生成される。図示の抽象言語表現は、ドメイン言語キーワード（例えば、Ａｋｅｙｗｏｒｄにより表現する）、ブロックを構成する句読点（例えば、ＡＯＳｐａｃｅＯｐｔ、ＡＯＳｐａｃｅ、およびＡＯＢｌｏｃｋにより表現する）、ならびに共通ドメイン概念（例えば、ＡＦｏｒｍｕｌａ、およびＡＡｔｏｍにより表現する）を表現するためのＡ言語の要素を含む。ＡＯｔｈｅｒ要素３２５は、保持されるドメイン言語ドキュメントの組織的構造を表現し、この例では、後続のすべてのものが、ブロックとしてまとめてグループにされる。ＡＫｅｙｗｏｒｋ要素３３０は、ドメインキーワード「foreach」を表現している。ＡＯＳｐａｃｅＯｐｔ要素３３５は、ユーザの選好、またはドキュメントスタイル設定のような他の因子に基づいて、オプションでスペースを配置する場所を表現する。ＡＯＰａｒｅｎ要素３４０は、囲まれたステートメントを一緒にグループにするドメイン内に見つかる括弧の組織的構成を表現する。ＡＡｔｏｍ要素３４５は、ドメイン内のユーザ定義の変数を表現するアトム「foo」を表現する。ＡＯＳｐａｃｅ要素３５０および３６０は、表示された表現に保持されるべきドメイン内のスペースを表現する。ＡＫｅｙｗｏｒｄ要素３５５は、ドメイン言語キーワード「in」を表現している。ＡＦｏｒｍｕｌａ要素３６５は、囲まれたステートメントが式の部分であることを示す。この式は、ドメインドキュメントにおいて定義されたアトム「bar」を表現するＡＡｔｏｍ要素３７０を含む。ＡＯＢｌｏｃｋ要素３７５は、一緒にグループにされるべきステートメントのブロックを定義する。ＡＡｔｏｍ要素３８０は、そのブロック内の唯一のステートメントであり、ドメインドキュメントにおけるアトム「file」を表現する。いくつかのドメイン概念は抽象言語への変換の際に失われるが（例えば、ドメインにおけるforeachステートメントの振舞い）、抽象言語は、ドキュメントを視覚的に表現しユーザがドキュメントと対話することを可能にするために必要なすべてのドメイン言語からの構造および概念を表現する。
【００３５】
図４は、一実施形態におけるコンピュータプログラムの一部分の具象言語表現を示す。ステートメント４１０が、Ｃ＃などのプログラミング言語において示されており、その言語によって定義されるいくつかのキーワード（例えば、「foreach」）、ならびにユーザによって定義されるいくつかの変数名（例えば、「bar」）を含んでいる。抽象−具象変換に続いて、具象言語表現４１５が生成される。図示の具象言語表現は、表記上の決定（例えば、小数を、横方向でスラッシュによって分離して表すべきか、それとも分母上の分子を横線によって分離して縦方向に表すべきかなど）が解決された後のテキストおよびレイアウト情報を表現するためのＣ言語の要素を含む。ＣＦＬｉｎｅＩｔｅｍ要素４２０は、論理行を表現するラインアイテム(line item)を開始するが、表示領域の特性に応じて１行または複数行として表示されることもある。ＣＦＬｉｎｅＩｔｅｍ要素４２０は、行を開始するテキストアイテム４２５のリストを含む。これらのテキストアイテム４２５の後に、Ｃ言語におけるコントロールであるＣＣＳｅｔＴａｂ要素４３０が続き、ＣＣＳｅｔＴａｂ要素４３０は、後続のテキストが２つのスペースで字下げされるべきであることを示す。ＣＣＢｒｅａｋＩｆＡｎｙＢｒｅａｋｓ要素４３５、４４５、および４５５は、表示領域の寸法に起因して必要に応じて改行を配置することが妥当となる表示内の点を示す。ＣＣＳｅｔＴａｂ要素４６０は、これに先立つＣＣＳｅｔＴａｂ要素４３０によって設定されたラインアイテムのタブ指定を打ち切る。最後に、閉じ括弧４７０は、ＣＦＬｉｎｅＩｔｅｍ要素４２０の終端を表現する。
【００３６】
図５は、一実施形態におけるコンピュータプログラムの一部分のグラフィカル言語表現を示す。ステートメント５０５が、Ｃ＃などのプログラミング言語において示されており、その言語によって定義されるいくつかのキーワード（例えば、「foreach」）、ならびにユーザによって定義されるいくつかの変数名（例えば、「bar」）を含んでいる。具象−グラフィカル変換に続いて、グラフィカル言語表現５１０が生成される。図示のグラフィカル言語表現は、コンピュータモニタなど表示装置上のドメイン言語ドキュメントのレイアウトを記述するためのＧ言語の要素を含む。具象−グラフィカル変換は、表示領域の寸法、例えば情報がレンダリングされるウィンドウのサイズなどに関する入力を受け取る。ＧＶｅｒｔｉｃａｌＦｒａｍｅ要素５１５は、縦方向のレイアウトでその範囲内にフレームを構成し、各フレームが他のフレームの上部に表示されるようにする。第１のＧＦｒａｍｅ要素５２０は、ドメイン言語の「foreach」キーワード、およびforeachキーワードの始まりの括弧を表現する。次のＧＦｒａｍｅ要素５２５は、テキスト「foo in bar」をレンダリングするためのマークを含む行を表現する。次のＧＦｒａｍｅ要素５３０は、foreachキーワードの終わりの括弧を含む行を表現する。次のＧＦｒａｍｅ要素５３５は、foreachキーワードの本体の始まりの中括弧を表現する。次のＧＦｒａｍｅ要素５４０は、foreachキーワードの「fie;」本体内のテキストの単一行を表現する。最後のＧＦｒａｍｅ要素５４５は、foreachキーワード本体の終わりの中括弧を表現する。例示的表示５５０は、表示装置上の結果として得られるフレームのレイアウトの例を示す。フレームの周囲のボックスは、説明のために示されているものであって、フレームが実際にレンダリングされたときには表示してもしなくてもよい。各ＧＦｒａｍｅ要素（５２０、５２５、５３０、５３５、５４０、および５４５）は、ＧＶｅｒｔｉｃａｌＦｒａｍｅ要素５１５内に縦方向に配列される。
【００３７】
図６は、一実施形態における変換システムのコンポーネントの処理を示す流れ図である。このシステムは、表示装置上の表示のためにドメイン固有の表現においてドキュメントを準備するために呼び出される。ブロック６１０で、システムは、ドキュメントのドメイン固有の表現を受け取る。ブロック６１５および６２０は、ドメイン言語から抽象言語への変換を表す。ブロック６１５で、システムは、ドメイン言語ドキュメントを解析する。ブロック６２０で、システムは、ドメイン言語ドキュメントの要素を、抽象言語の該当する要素にマップする。ブロック６２５および６３０は、抽象言語から具象言語への変換を表す。ブロック６２５で、システムは、表記上の選択に関する入力を受け取る。ブロック６３０で、システムは、表記上の選択を使用して、抽象言語要素を具象言語要素にマップする。ブロック６３５および６４０は、具象言語からグラフィカル言語への変換を表す。ブロック６３５で、システムは、ドキュメントがレンダリングされる表示装置のレイアウトを決定する。ブロック６４０で、システムは、表示領域の寸法および他の制約条件に基づいて、具象言語要素をグラフィカル言語要素にマップする。ブロック６５０で、システムは、表示装置上にグラフィカル言語ドキュメントを表示し、次いで完了する。
【００３８】
変換システムの具体的実施形態が本明細書に例示として説明されているが、本発明の趣旨および範囲から逸脱することなく様々な修正が可能であることは、上記から理解されるであろう。例えば、文書処理およびプログラミングドメインからのドキュメントが、例示的用途で使用されているが、他の多数のドメインからのドキュメントが変換システムによって処理されることが可能である。ドキュメントは単一の実体として記述されているが、変換システムは、本の複数の章やプログラミングプロジェクトでよく見られる多数のソースコードファイルのような多くのドキュメントを処理することができる。したがって、本発明は、添付の特許請求の範囲によってのみ限定される。
【図面の簡単な説明】
【００３９】
【図１】一実施形態における変換パイプラインを示す図である。
【図２】一実施形態における変換システムのコンポーネントを示すブロック図である。
【図３】一実施形態におけるコンピュータプログラムの一部分の抽象言語表現を示す図である。
【図４】一実施形態におけるコンピュータプログラムの一部分の具象言語表現を示す図である。
【図５】一実施形態におけるコンピュータプログラムの一部分のグラフィカル言語表現を示す図である。
【図６】一実施形態における変換システムのコンポーネントの処理を示す流れ図である。
【図１】
2008146637.tif 000007
【図２】
2008146637.tif 000008
【図３】
2008146637.tif 000009
【図４】
2008146637.tif 000010
【図５】
2008146637.tif 000011
【図６】
2008146637.tif 000012
【外国語明細書】
2008146637000001.pdf