(57)【要約】  木構造データをテキストで編集する際のユーザの手間を軽減する。木構造データ編集装置（１）のノード選択手段（１４）は、編集画面で選択範囲が指定された場合、当該選択範囲の位置に基づいて、木構造データの中から１以上のノードＩＤを選択する。接続先決定手段（１６）は、編集画面で選択範囲の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、木構造データの中から接続先のノードＩＤを決定する。木構造データ編集手段（１７）は、１以上のノードＩＤが示すノードが接続先のノードＩＤが示すノードに接続するように、木構造データを編集する。変換手段（１１）は、木構造データ編集手段（１７）により編集された木構造データをテキストデータに変換する。表示制御手段（１２）は、変換手段（１１）により変換されたテキストデータに基づいて、編集画面の表示を更新する。
2017022041.tif 000002
【特許請求の範囲】
【請求項１】
木構造データと、前記木構造データに対応するテキストデータと、を相互に変換する変換手段と、
前記テキストデータの編集画面を表示手段に表示させる表示制御手段と、
前記編集画面で選択範囲が指定された場合、当該選択範囲の位置に基づいて、前記木構造データの中から１以上のノードＩＤを選択するノード選択手段と、
前記編集画面で前記選択範囲の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、前記木構造データの中から接続先のノードＩＤを決定する接続先決定手段と、
前記１以上のノードＩＤが示すノードが前記接続先のノードＩＤが示すノードに接続するように、前記木構造データを編集する木構造データ編集手段と、
を含み、
前記変換手段は、前記木構造データ編集手段により編集された前記木構造データを前記テキストデータに変換し、
前記表示制御手段は、前記変換手段により変換された前記テキストデータに基づいて、前記編集画面の表示を更新する、
ことを特徴とする木構造データ編集装置。
【請求項２】
前記選択範囲は、前記編集画面におけるテキストの切り取り範囲であり、
前記木構造データ編集装置は、前記１以上のノードＩＤの親ノードＩＤと子ノードＩＤを特定する手段を更に含み、
前記木構造データ編集手段は、前記１以上のノードＩＤが示すノードが前記接続先のノードＩＤが示すノードに接続し、かつ、前記子ノードＩＤが示すノードが前記親ノードＩＤが示すノードに接続するように、前記木構造データを更新する、
ことを特徴とする請求項１に記載の木構造データ編集装置。
【請求項３】
前記接続先決定手段は、前記貼り付け先の位置の最も近くにテキストが表示されているノードのノードＩＤを、前記接続先のノードＩＤとして決定する、
ことを特徴とする請求項１又は２に記載の木構造データ編集装置。
【請求項４】
前記編集画面は、所与のプログラミング言語のコードを入力するためのテキストエディタの画面であり、
前記変換手段は、前記テキストデータをコンパイルして前記木構造データに変換し、前記木構造データを逆コンパイルして前記テキストデータに変換する、
ことを特徴とする請求項１〜３の何れかに記載の木構造データ編集装置。
【請求項５】
木構造データと、前記木構造データに対応するテキストデータと、を相互に変換する変換ステップと、
前記テキストデータの編集画面を表示手段に表示させる表示制御ステップと、
前記編集画面で選択範囲が指定された場合、当該選択範囲の位置に基づいて、前記木構造データの中から１以上のノードＩＤを選択するノード選択ステップと、
前記編集画面で前記選択範囲の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、前記木構造データの中から接続先のノードＩＤを決定する接続先決定ステップと、
前記１以上のノードＩＤが示すノードが前記接続先のノードＩＤが示すノードに接続するように、前記木構造データを編集する木構造データ編集ステップと、
を含み、
前記変換ステップでは、前記木構造データ編集ステップにより編集された前記木構造データを前記テキストデータに変換し、
前記表示制御ステップでは、前記変換手段により変換された前記テキストデータに基づいて、前記編集画面の表示を更新する、
ことを特徴とする木構造データ編集方法。
【請求項６】
木構造データと、前記木構造データに対応するテキストデータと、を相互に変換する変換手段、
前記テキストデータの編集画面を表示手段に表示させる表示制御手段、
前記編集画面で選択範囲が指定された場合、当該選択範囲の位置に基づいて、前記木構造データの中から１以上のノードＩＤを選択するノード選択手段、
前記編集画面で前記選択範囲の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、前記木構造データの中から接続先のノードＩＤを決定する接続先決定手段、
前記１以上のノードＩＤが示すノードが前記接続先のノードＩＤが示すノードに接続するように、前記木構造データを編集する木構造データ編集手段、
としてコンピュータを機能させ、
前記変換手段は、前記木構造データ編集手段により編集された前記木構造データを前記テキストデータに変換し、
前記表示制御手段は、前記変換手段により変換された前記テキストデータに基づいて、前記編集画面の表示を更新する、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、木構造データ編集装置、木構造データ編集方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、テキストデータの編集画面上でユーザが任意の範囲を選択する技術が知られている。例えば、特許文献１には、テキストエディタにおいて矩形選択を行うためのコマンドが記載されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】http://www.gnu.org/software/emacs/manual/html_node/emacs/Rectangles.html
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記のようなテキストエディタは、例えば、プログラミング言語で木構造データをコーディングするために用いることができる。この場合、ユーザは、テキストエディタを用いて、ノードやブランチを示すテキストを入力して木構造データのコードを入力する。ユーザは、似た内容の部分木を繰り返し使用したいような場合、キーボードから直接入力すると手間がかかるため、部分木に対応するコード部分をコピーアンドペーストすることが考えられる。【０００５】
しかしながら、特許文献１の技術を利用して矩形選択を行い、部分木に対応するコード部分をコピーアンドペーストしても、あくまでテキストエディタ上でテキストが挿入されるだけなので、貼り付け先に部分木がきちんと接続しなかったり、貼り付け後に他のコードがずれてテキストで表現した木構造が崩れてしまったりすることがある。この場合、ユーザは、所望の木構造を示すように、ノードやブランチのテキストの位置をいちいち調整する必要があり、非常に手間がかかっていた。【０００６】
本発明は上記課題に鑑みてなされたものであって、その目的は、木構造データをテキストで編集する際のユーザの手間を軽減することである。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明に係る木構造データ編集装置は、木構造データと、前記木構造データに対応するテキストデータと、を相互に変換する変換手段と、前記テキストデータの編集画面を表示手段に表示させる表示制御手段と、前記編集画面で選択範囲が指定された場合、当該選択範囲の位置に基づいて、前記木構造データの中から１以上のノードＩＤを選択するノード選択手段と、前記編集画面で前記選択範囲の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、前記木構造データの中から接続先のノードＩＤを決定する接続先決定手段と、前記１以上のノードＩＤが示すノードが前記接続先のノードＩＤが示すノードに接続するように、前記木構造データを編集する木構造データ編集手段と、を含み、前記変換手段は、前記木構造データ編集手段により編集された前記木構造データを前記テキストデータに変換し、前記表示制御手段は、前記変換手段により変換された前記テキストデータに基づいて、前記編集画面の表示を更新する、ことを特徴とする。【０００８】
また、本発明に係る木構造データ編集方法は、木構造データと、前記木構造データに対応するテキストデータと、を相互に変換する変換ステップと、前記テキストデータの編集画面を表示手段に表示させる表示制御ステップと、前記編集画面で選択範囲が指定された場合、当該選択範囲の位置に基づいて、前記木構造データの中から１以上のノードＩＤを選択するノード選択ステップと、前記編集画面で前記選択範囲の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、前記木構造データの中から接続先のノードＩＤを決定する接続先決定ステップと、前記１以上のノードＩＤが示すノードが前記接続先のノードＩＤが示すノードに接続するように、前記木構造データを編集する木構造データ編集ステップと、を含み、前記変換ステップでは、前記木構造データ編集ステップにより編集された前記木構造データを前記テキストデータに変換し、前記表示制御ステップでは、前記変換手段により変換された前記テキストデータに基づいて、前記編集画面の表示を更新する、ことを特徴とする。【０００９】
また、本発明に係るプログラムは、木構造データと、前記木構造データに対応するテキストデータと、を相互に変換する変換手段、前記テキストデータの編集画面を表示手段に表示させる表示制御手段、前記編集画面で選択範囲が指定された場合、当該選択範囲の位置に基づいて、前記木構造データの中から１以上のノードＩＤを選択するノード選択手段、前記編集画面で前記選択範囲の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、前記木構造データの中から接続先のノードＩＤを決定する接続先決定手段、前記１以上のノードＩＤが示すノードが前記接続先のノードＩＤが示すノードに接続するように、前記木構造データを編集する木構造データ編集手段、としてコンピュータを機能させ、前記変換手段は、前記木構造データ編集手段により編集された前記木構造データを前記テキストデータに変換し、前記表示制御手段は、前記変換手段により変換された前記テキストデータに基づいて、前記編集画面の表示を更新する、ことを特徴とする。【００１０】
また、本発明に係る情報記憶媒体は、上記のプログラムが記憶されたコンピュータ読み取り可能な情報記憶媒体である。【００１１】
また、本発明の一態様では、前記選択範囲は、前記編集画面におけるテキストの切り取り範囲であり、前記木構造データ編集装置は、前記１以上のノードＩＤの親ノードＩＤと子ノードＩＤを特定する手段を更に含み、前記木構造データ編集手段は、前記１以上のノードＩＤが示すノードが前記接続先のノードＩＤが示すノードに接続し、かつ、前記子ノードＩＤが示すノードが前記親ノードＩＤが示すノードに接続するように、前記木構造データを更新する、ことを特徴とする。【００１２】
また、本発明の一態様では、前記接続先決定手段は、前記貼り付け先の位置の最も近くにテキストが表示されているノードのノードＩＤを、前記接続先のノードＩＤとして決定する、ことを特徴とする。【００１３】
また、本発明の一態様では、前記編集画面は、所与のプログラミング言語のコードを入力するためのテキストエディタの画面であり、前記変換手段は、前記テキストデータをコンパイルして前記木構造データに変換し、前記木構造データを逆コンパイルして前記テキストデータに変換する、ことを特徴とする。
【発明の効果】
【００１４】
本発明によれば、木構造データをテキストで編集する際のユーザの手間を軽減することが可能になる。
【図面の簡単な説明】
【００１５】
【図１】木構造データ編集装置のハードウェア構成を示す図である。
【図２】木構造データ編集装置で実現される機能の一例を示す機能ブロック図である。
【図３】テキストデータの一例を示す図である。
【図４】木構造データの一例を示す図である。
【図５】図４の木構造データの各ノードの接続関係を示す図である。
【図６】位置データの一例を示す図である。
【図７】テキストエディタ上で矩形選択をする様子を示す図である。
【図８】図７のように矩形選択が行われた場合に選択されるノードＩＤを示す図である。
【図９】貼付操作が行われる様子を示す図である。
【図１０】木構造データ編集部による編集後の木構造データを示す図である。
【図１１】木構造データ編集部による編集後の木構造データを示す図である。
【図１２】編集後のテキストデータを示す図である。
【図１３】編集後の木構造データに基づいて生成される位置データを示す図である。
【図１４】木構造データ編集装置において実行される処理の一例を示すフロー図である。
【図１５】変形例の機能ブロックを示す図である。
【図１６】変形例において指定された選択範囲を示す図である。
【図１７】変形例において指定された選択範囲を示す図である。
【図１８】変形例において指定された貼り付け先を示す図である。
【図１９】変形例において木構造データが更新される様子を示す図である。
【図２０】変形例において木構造データが更新される様子を示す図である。
【図２１】木構造データが更新された後の編集画面である。
【発明を実施するための形態】
【００１６】
［１．木構造データ編集装置のハードウェア構成］
以下、本発明に関わる木構造データ編集装置の実施形態の例を説明する。図１は、木構造データ編集装置のハードウェア構成を示す図である。木構造データ編集装置１は、ユーザが利用可能なコンピュータであり、例えば、パーソナルコンピュータ、サーバコンピュータ、携帯情報端末（タブレット型コンピュータを含む）、又は携帯電話機（スマートフォンを含む）等である。木構造データ編集装置１は、制御部２、記憶部３、通信部４、操作部５、表示部６、及び入出力部７を含む。
【００１７】
制御部２は、例えば、一又は複数のマイクロプロセッサを含む。制御部２は、記憶部３に記憶されたプログラムやデータに従って処理を実行する。記憶部３は、主記憶部及び補助記憶部を含む。例えば、主記憶部はＲＡＭであり、補助記憶部は、ハードディスク又はソリッドステートドライブ等である。通信部４は、ネットワークカードを含む。通信部４は、ネットワークを介してデータ通信を行う。
【００１８】
操作部５は、ユーザが操作を行うための入力デバイスであり、例えば、マウスやキーボード、タッチパネル等である。操作部５は、ユーザによる操作内容を制御部２に伝達する。表示部６は、例えば、液晶表示部又は有機ＥＬ表示部等である。表示部６は、制御部２の指示に従って画面を表示する。入出力部７は、外部機器とのデータの入出力を行う入出力インタフェースである。例えば、入出力部７は、コンピュータ読み取り可能な情報記憶媒体（例えば、光ディスクやメモリカード等）からデータやプログラムを読み取る。
【００１９】
なお、記憶部３に記憶されるものとして説明するプログラム及びデータは、ネットワークに接続された他のコンピュータから、通信部４を介して記憶部３に供給されるようにしてもよいし、情報記憶媒体から、入出力部７を介して記憶部３に供給されるようにしてもよい。また、木構造データ編集装置１のハードウェア構成は、上記の例に限られず、種々のコンピュータのハードウェアを適用可能である。
【００２０】
［２．木構造データ編集装置において実現される機能］
図２は、木構造データ編集装置１で実現される機能の一例を示す機能ブロック図である。図２に示すように、木構造データ編集装置１では、データ記憶部１０、変換部１１、表示制御部１２、選択操作受付部１３、ノード選択部１４、貼付操作受付部１５、接続先決定部１６、及び木構造データ編集部１７が実現される。
【００２１】
本実施形態では、所与のプログラミング言語で実装される木構造データのソースコード（以降、単にコードという。）をテキストエディタで編集する際に、ユーザが矩形選択したテキストをコピーアンドペーストする場合を例に挙げて、木構造データ編集装置１の機能を説明する。なお、詳細は後述するが、テキストエディタのプログラムは、コンパイラと逆コンパイラを含んでおり、本実施形態では、木構造として２分木を説明する。
【００２２】
［２−１．データ記憶部］
データ記憶部１０は、記憶部３を主として実現される。データ記憶部１０は、木構造データを編集するための各種データを記憶する。ここでは、データ記憶部１０が記憶するデータの一例として、テキストデータ、木構造データ、及び位置データについて説明する。
【００２３】
［テキストデータ］
図３は、テキストデータの一例を示す図である。図３では、テキストデータが後述の編集画面２０で表示される様子を示している。図３に示すように、テキストデータは、木構造データに含まれるノードとブランチの各々を示すテキストを含む。テキストデータの内容は、キーボード等の操作部５からの入力信号に基づいて更新されたり、後述の変換部１１によって更新されたりする。
【００２４】
各文字列Ｔｎ（ｎは、自然数。本実施形態では、ｎの数値は、後述のノードＩＤに対応している。）は、ノードの内容を示す。例えば、各文字列Ｔｎは、所与のプログラミング言語のコードであり、条件式や関数等である。図３に示す例では、分岐が発生するノードを示す文字列Ｔ１，Ｔ２，Ｔ３，Ｔ１１，Ｔ１２，Ｔ２０，Ｔ２１は、それぞれ条件式である。例えば、各条件式に示される条件が満たされる場合には、下の文字列Ｔｎが示すノード（２分木としては左のノード）に進み、条件が満たされない場合には、右の文字列Ｔｎが示すノード（２分木としては右のノード）に進む。例えば、文字列Ｔ１，Ｔ２，Ｔ１１，Ｔ２０は、引数のパラメータが所定の条件を満たすか否かを判定するif文であり、文字列Ｔ３，Ｔ１２，Ｔ２１は、乱数に基づいて５０％の確率で満たされる条件である。
【００２５】
各記号は、２つのノードを接続するブランチを示す。各記号は、あるノードを示す文字列Ｔｎと他のノードを示す文字列Ｔｎとの間に配置される。記号は、２つの文字列Ｔｎを繋いでいることを視覚的に認識可能であればよく、任意の記号を適用可能である。例えば、ブランチを示す記号は、「−」（ハイフン）や「｜」（縦線）であってもよいし、「＋」（プラス）や「−」（マイナス）のような記号であってもよい。他にも例えば、「─」「│」「┐」「┌」「├」等の罫線であってもよい。本実施形態では、ブランチを示す記号として、「−」（ハイフン）と「｜」（縦線）が用いられる場合を説明する。なお、各ブランチは、１つの記号で示されてもよいし、複数の記号で示されてもよい。
【００２６】
各ノードを示す文字列Ｔｎは、上下左右の少なくとも１つの方向にブランチを示す記号が配置されており、各文字列Ｔｎと各記号との位置関係によって、木構造データが示す各ノードの接続関係が表現されている。
【００２７】
例えば、ある１の文字列Ｔｎが、その下に配置された記号によって他の文字列Ｔｎと繋がっている場合、当該１の文字列Ｔｎが示すノードは、当該他の文字列Ｔｎが示すノードの親ノードである。図３に示す例では、文字列Ｔ１は、その下に配置された「｜」によって、文字列Ｔ２と繋がっているため、文字列Ｔ１が示すノードは、文字列Ｔ２が示すノードの親ノードとなる。
【００２８】
別の言い方をすれば、ある１の文字列Ｔｎが、その上に配置された記号によって他の文字列Ｔｎと繋がっている場合、当該１の文字列Ｔｎが示すノードは、当該他の文字列Ｔｎが示すノードの子ノードである。図３に示す例では、文字列Ｔ２は、その上に配置された「｜」によって文字列Ｔ１と繋がっているため、文字列Ｔ２が示すノードは、文字列Ｔ１が示すノードの子ノードとなる。
【００２９】
また例えば、ある１の文字列Ｔｎが、その右に配置された記号によって他の文字列Ｔｎと繋がっている場合、当該１の文字列Ｔｎが示すノードは、当該他の文字列Ｔｎが示すノードの親ノードである。図３に示す例では、文字列Ｔ１は、その右に配置された２つの「−」によって文字列Ｔ３１と繋がっている。このため、文字列Ｔ１が示すノードは、文字列Ｔ３１が示すノードの親ノードとなる。
【００３０】
別の言い方をすれば、ある１の文字列Ｔｎが、その左に配置された記号によって他の文字列Ｔｎと繋がっている場合、当該１の文字列Ｔｎが示すノードは、当該他の文字列Ｔｎが示すノードの子ノードである。図３に示す例では、文字列Ｔ３１は、その左に配置された２つの「−」によって文字列Ｔ１と繋がっているため、文字列Ｔ３１が示すノードは、文字列Ｔ１が示すノードの子ノードとなる。
【００３１】
本実施形態では、所定の文字列である「<main>」によって、根ノードを定義することができるようになっている。図３のコード例では、「<main>」と「｜」で結ばれた文字列Ｔ１が示すノードが、根ノードである。即ち、「<main>」の文字列は、根ノードを定義するためのコードといえる。
【００３２】
また、ある１の文字列Ｔｎの右及び下の何れにも記号が配置されていない場合、又は、記号が配置されているがその先に他の文字列Ｔｎが存在しない場合、当該１の文字列Ｔｎが示すノードは、葉ノードである。図３のコード例では、文字列Ｔ８，Ｔ１０，Ｔ１７，Ｔ１９，Ｔ２７，Ｔ２９，Ｔ３０，Ｔ３１は、その右にも下にも記号が存在しないので、これらのノードは、葉ノードである。
【００３３】
なお、テキストデータには、ノードとブランチ以外のテキストを含んでいてもよく、例えば、ヘッダ部分やコメント部分を示す文字列を含んでいてもよい。
【００３４】
［木構造データ］
図４は、木構造データの一例を示す図であり、図５は、図４の木構造データの各ノードの接続関係を示す図である。図４のように、木構造データは、木構造の各ノードの内容（データ部分）とノードの接続関係とを示し、例えば、ノードＩＤ、親ノードのノードＩＤ、子ノードのノードＩＤ、及びノードの内容が関連付けられている。なお、図５において、円で囲われた数値は、図４のノードＩＤである。
【００３５】
ノードＩＤは、各ノードを一意に識別する情報であり、例えば、各ノードに割り振られるノード番号（ポインタ）である。本実施形態では、根ノードから前順走査を行って探索した各ノードに、１から順番にノードＩＤが付与されている。なお、図４に示す例では、各ノードＩＤに関連付けて、親ノードと子ノードの両方のノードＩＤが格納されている場合を説明しているが、何れか一方のみが格納されていてもよい。
【００３６】
本実施形態では、テキストデータがプログラミング言語のコードを含む場合を説明するので、図４に示す木構造データは、図３に示すテキストデータをコンパイルすることで生成される。別の言い方をすれば、図４に示す木構造データを逆コンパイルすると、図３に示すテキストデータが生成される。なお、図４では、ノードの内容を文字列で記載しているが、実際にはノードの内容は機械語で表される。
【００３７】
図３のコード例では、文字列Ｔ１が示すノードが根ノードであり、図４及び図５に示すように、このノードにノードＩＤ「１」が付与されている。ノードＩＤが「１」のノードは、根ノードであり親ノードを持たないため、図４に示すように、ノードＩＤが「１」のノードは、親ノードＩＤを持たず、親ノードＩＤ部分には「NULL」等が格納される。
【００３８】
また、根ノードの子ノードは、文字列Ｔ２とＴ３１の各々が示すノードであり、これらのノードにノードＩＤ「２」と「３１」が付与されている。このため、図４及び図５に示すように、ノードＩＤが「１」のノードの子ノードＩＤは、「２」と「３１」になる。一方、ノードＩＤが「２」と「３１」のそれぞれのノードの親ノードＩＤは、「１」になる。なお、先述したように、文字列Ｔ３１が示すノード（ノードＩＤが「３１」のノード）は、葉ノードなので、図４に示すように、子ノードＩＤを持たず、子ノードＩＤ部分には「NULL」等が格納される。他のノードも同様に、図３に示すテキストデータで定義されたように、各ノードの親子関係は図４及び図５のようになっている。即ち、文字列Ｔ２，Ｔ３，Ｔ１１，Ｔ１２，Ｔ２０，Ｔ２１のそれぞれは、条件式を示すので、これらの文字列が示すノードであるノードＩＤ「２」「３」「１１」「１２」「２０」「２１」のそれぞれのノードは、２つの子ノードを持つ。他のノードは、条件式ではなく関数なので、１つの子ノードを持つノード、又は、葉ノードとなる。
【００３９】
［位置データ］
図６は、位置データの一例を示す図である。図６に示すように、位置データには、木構造データの各ノードのノードＩＤと、当該ノードを示す文字列Ｔｎのテキストデータ上での位置情報と、が関連付けられている。位置データは、後述する変換部１１が、逆コンパイル時に生成してもよいし、コンパイル時に生成してもよい。位置情報は、テキストデータにおけるノードを示す文字列Ｔｎの位置を示せばよく、例えば、テキストデータの何文字目に、そのノードを示す文字列Ｔｎがあるかを示している。なお、位置情報は、テキストデータにおけるノードを特定可能であればよく、編集画面２０における文字列Ｔｎの表示位置であってもよい。この場合、位置情報は、１次元的な情報ではなく、２次元的な情報が格納されることになる。
【００４０】
なお、データ記憶部１０が記憶するデータは、テキストデータや木構造データに限られない。データ記憶部１０は、木構造データを編集するために必要なデータを記憶するようにすればよい。例えば、データ記憶部１０は、テキストエディタのプログラムを記憶してもよい。
【００４１】
［２−２．変換部］
変換部１１は、制御部２を主として実現される。変換部１１は、木構造データと、木構造データに対応するテキストデータと、を相互に変換する。これらの変換ルールを定義した変換データは、データ記憶部１０に予め記憶されているものとする。変換データは、テキストデータから木構造データへの変換アルゴリズムと、木構造データからテキストデータへの変換アルゴリズムと、を含む。
【００４２】
本実施形態では、変換データは、所与のプログラミング言語で使用されるコンパイラと、逆コンパイラと、であり、テキストエディタのプログラムに含まれている。コンパイラは、プログラミング言語で記述されたコードから、機械語で記述されたオブジェクトコードを生成するプログラムである。逆コンパイラは、機械語で記述されたオブジェクトコードを解析し、ユーザが視覚的に理解しやすいコードを作成するプログラムである。変換部１１は、テキストデータをコンパイルして木構造データに変換し、木構造データを逆コンパイルしてテキストデータに変換する。
【００４３】
例えば、変換部１１は、次のようにしてテキストデータをコンパイルする。まず、変換部１１は、テキストデータに含まれる所定の文字列Ｔｎに基づいて根ノードを特定する。本実施形態では、変換部１１は、所定のコードである「<main>」の下に配置された「｜」で接続されたコードを根ノードとして特定する。そして、変換部１１は、根ノードを示す文字列Ｔｎの周囲（下又は右）にブランチを示す特定の記号「｜」又は「−」があるか否かを判定する。変換部１１は、「｜」又は「−」があると判定した場合、その先にある文字列Ｔｎを根ノードの子ノードとして特定する。以降同様に、変換部１１は、各ノードの周囲を探索して「｜」又は「−」があるか否かを判定し、これらの記号があると判定した場合、その先にある文字列Ｔｎを当該ノードの子ノードとして特定する。変換部１１は、ノードの周囲に「｜」又は「−」が無いと判定した場合、又は、ノードの周囲に「｜」又は「−」があるがその先に文字列Ｔｎがないと判定した場合、当該ノードを葉ノードとして特定する。変換部１１は、上記のように各ノードの親子関係を特定し、所定の順番で各ノードにノードＩＤを付与することによって、木構造データを生成する。
【００４４】
また例えば、変換部１１は次のようにして木構造データを逆コンパイルする。まず、変換部１１は木構造データの親ノードＩＤがないノード（「NULL」が格納されているノード）を、根ノードとして特定する。そして、変換部１１は、テキストデータ上の所定位置に所定のコードである「<main>」を配置し、その下にブランチを示す特定の記号である「｜」を配置し、その先に根ノードを示す文字列Ｔｎを生成して配置する。ノードと文字列Ｔｎの変換表は、予めデータ記憶部１０に記憶しておくものとする。そして、変換部１１は、木構造データの根ノードの子ノードＩＤによって子ノードを特定する。特定した子ノードが１つである場合、変換部１１は、根ノードを示す文字列Ｔｎの下に「｜」を配置し、その先に子ノードを示す文字列Ｔｎを配置する。一方、特定した子ノードが２つである場合、変換部１１は、根ノードを示す文字列Ｔｎの下に「｜」を配置し、その先にノードＩＤが小さい方の子ノードを示す文字列Ｔｎを配置する。次いで、変換部１１は、根ノードを示す文字列Ｔｎの右に「−」を配置し、その先にノードＩＤが大きい方の子ノードを示す文字列Ｔｎを配置する。以降同様にして、変換部１１は、子ノードの特定、ブランチを示す記号の配置、子ノードを示す文字列Ｔｎの配置を繰り返すことによって、木構造データからテキストデータを生成する。なお、変換部１１は、ノードを示す文字列Ｔｎの文字数やその周囲のノードを示す文字列Ｔｎの位置や文字数に応じて、各文字列Ｔｎが結合しないように、ブランチを示す記号の数を調整してもよい。
【００４５】
［２−３．表示制御部］
表示制御部１２は、それぞれ制御部２を主として実現される。表示制御部１２は、テキストデータの編集画面２０を表示部６に表示させる。編集画面２０は、テキストデータを編集するための画面であり、例えば、テキストエディタの画面である。本実施形態では、テキストデータがプログラミング言語のコードを含む場合を説明するので、編集画面２０は、所与のプログラミング言語のコードを入力するためのテキストエディタの画面といえる。図３に示すように、編集画面２０のメニューバー２１には、テキストエディタの各種機能を利用するためのメニューが表示される。
【００４６】
［２−４．選択操作受付部］
選択操作受付部１３は、制御部２を主として実現される。選択操作受付部１３は、操作部５からの入力信号に基づいて、編集画面２０上の範囲を選択するための選択操作を受け付ける。選択範囲は、編集画面２０におけるテキストのコピー範囲である。本実施形態では、選択操作は、編集画面２０上で矩形選択をするための操作である場合を説明するが、必ずしも選択範囲は、矩形でなくてもよい。ユーザがメニューバー２１の編集ボタンを選択したり、操作部５から所定のコマンドを入力すると矩形選択をしたりすることができる。
【００４７】
図７は、テキストエディタ上で矩形選択をする様子を示す図である。図７に示すように、ユーザは、編集画面２０に表示されたカーソル２２を用いて開始位置と終了位置を指定すると、開始位置と終了位置を対角線とする長方形の選択範囲２３が選択される。ここでは、選択範囲２３内に、文字列Ｔ２０〜Ｔ２９とこれらを繋ぐブランチの記号とが含まれている。なお、ユーザは、カーソル２２ではなく、マウスポインタ等を使用して矩形選択を行うようにしてもよい。
【００４８】
［２−５．ノード選択部］
ノード選択部１４は、制御部２を主として実現される。ノード選択部１４は、編集画面２０で選択範囲２３が指定された場合、当該選択範囲２３の位置に基づいて、木構造データの中から１以上のノードＩＤを選択する。本実施形態では、ノード選択部１４は、位置データに基づいて、選択されたノードＩＤを特定する。例えば、ノード選択部１４は、選択範囲２３のテキストデータ上の位置を特定し、当該選択範囲２３に位置が含まれるノードＩＤを特定する。
【００４９】
図８は、図７のように矩形選択が行われた場合に選択されるノードＩＤを示す図である。ノード選択部１４が位置データを参照して、図７で矩形選択された選択範囲２３内を検索すると、検索結果として、ノードＩＤが「２０」〜「２９」の部分木（図８に破線で示す）のノードＩＤを得る。このため、ノード選択部１４は、ノードＩＤが「２０」〜「２９」の１０個の各ノードＩＤを、矩形選択で選択されたノードとして特定する。
【００５０】
［２−６．貼付操作受付部］
貼付操作受付部１５は、制御部２を主として実現される。貼付操作受付部１５は、操作部５からの入力信号に基づいて、選択範囲２３内のテキストを貼り付けるための貼付操作を受け付ける。図９は、貼付操作が行われる様子を示す図である。図９に示すように、ユーザは、編集画面２０上の任意の位置をカーソル２２で指定することによって、貼付操作を行う。なお、ユーザは、マウスポインタ等を使用して矩形選択を行うようにしてもよい。
【００５１】
［２−７．接続先決定部］
接続先決定部１６は、制御部２を主として実現される。接続先決定部１６は、編集画面２０で選択範囲２３の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、木構造データの中から接続先のノードＩＤを決定する。本実施形態では、接続先決定部１６は、貼り付け先の位置の最も近くにテキストが表示されているノードのノードＩＤを、接続先のノードＩＤとして決定する。
【００５２】
例えば、接続先決定部１６は、位置データに基づいて接続先のノードＩＤを決定する。具体的には、接続先決定部１６は、貼付操作によって指定されたテキストデータ上の位置を特定する。そして、接続先決定部１６は、当該特定した位置に最も近い位置のノードＩＤを探索し、そのノードＩＤを接続先として決定する。例えば、図９に示すように、貼付操作で指定された位置が文字列Ｔ２の付近である場合、接続先決定部１６は、ノードＩＤが「２」のノードを接続先として決定する。
【００５３】
［２−８．木構造データ編集部］
木構造データ編集部１７は、制御部２を主として実現される。木構造データ編集部１７は、ノード選択部１４が特定した１以上のノードＩＤが示すノードが接続先のノードＩＤが示すノードに接続するように、木構造データを編集する。木構造データ編集部１７が、接続先のノードＩＤを親ノードとして、ノード選択部１４が特定した１以上のノードＩＤによる部分木を挿入するようにコンパイルを行い、木構造データを更新する。
【００５４】
図１０及び図１１は、木構造データ編集部１７による編集後の木構造データを示す図である。なお、ここでは、木構造データ編集部１７が木構造データを編集するとノードＩＤを振り直す場合を説明する。図１０及び図１１に示すように、ノードＩＤが「１」〜「１０」のノードは編集前と同じである。ノードＩＤが「１１」〜「２０」のノードは、図８で選択されたノードＩＤが「２０」〜「２９」のノードと同じ内容である。即ち、選択範囲２３内の部分木が、接続先のノードＩＤである「２」の子ノードとして挿入されていることになる。図１１に示すノードＩＤが「２１」〜「４０」のノードは、図８に示すノードＩＤが「１１」〜「３０」と同じ内容である。即ち、図８に示すノードＩＤが「１１」のノードは、ノードＩＤが「２」のノードが親ノードであったが、選択範囲２３内の部分木が挿入されたので、当該部分木の根ノードであるノードＩＤ「２０」（図１１では「１２」）の子ノードとなっている。
【００５５】
木構造データ編集部１７の処理が実行されると、変換部１１は、木構造データ編集部１７により編集された木構造データをテキストデータに変換することになる。例えば、変換部１１は、編集後の木構造データを逆コンパイルすることによってテキストデータに変換する。逆コンパイルの方法は、先述した通りである。また、木構造データ編集部１７は、編集後の木構造データに基づいて位置データを更新する。木構造データ編集部１７は、各ノードＩＤのノードを示す文字列Ｔｎの生成時に、その文字列Ｔｎがテキストデータ上のどの位置になるかを計算することで、位置データを更新すればよい。木構造データ編集部１７の処理が実行されると、表示制御部１２は、変換部１１により変換されたテキストデータに基づいて、編集画面２０の表示を更新する。
【００５６】
図１２は、編集後のテキストデータを示す図であり、図１３は、編集後の木構造データに基づいて生成される位置データを示す図である。図１２に示すように、編集後の木構造データを示すようにテキストデータが生成され、図１３に示すように、編集後の木構造データを示すように位置データも更新される。即ち、図１２に示すように、テキストエディタ上では、文字列Ｔ１１〜Ｔ１９の部分が挿入されているが、それより下のノードを示す文字列Ｔ２０〜Ｔ４０のレイアウトが崩れることなく、木構造を示すように保持されている。即ち、テキストエディタ上でコピーアンドペーストをした場合は、レイアウトが崩れてしまうが、本実施形態では、コピーアンドペースト後にテキストエディタ内のコンパイラと逆コンパイラとで上記説明した処理が行われて、木構造を保持したテキストデータを生成するので、レイアウトを保つことができる。
【００５７】
［３．木構造データ編集装置において実行される処理］
図１４は、木構造データ編集装置１において実行される処理の一例を示すフロー図である。図１４に示す処理は、制御部２が、記憶部３に記憶されたプログラムに従って動作することによって実行される。本実施形態では、下記に説明する処理が実行されることにより、図２に示す機能ブロックが実現される。なお、ここでは、ユーザが、記憶部３に記憶されたテキストデータをテキストエディタで開いて、コード編集作業をする場合の処理を例に挙げて説明する。
【００５８】
図１４に示すように、まず、制御部２は、記憶部３に記憶されたテキストエディタを起動し、記憶部３に記憶されたテキストデータをＲＡＭに展開し、編集画面２０を表示部６に表示させる（Ｓ１）。制御部２は、操作部５からの入力を受け付ける（Ｓ２）。ここでは、ユーザは、編集画面２０へのテキスト入力と、矩形選択をするための選択操作と、選択範囲をコピーするためのコピー操作と、コピー元のテキストを張り付けるための貼付操作と、テキストエディタを終了させる終了操作と、テキストエディタ上で可能な他の操作と、の何れかをすることができるものとする。
【００５９】
ユーザがテキストを入力した場合（Ｓ２；テキスト入力）、制御部２は、記憶部３のＲＡＭに記憶されたテキストデータを更新する（Ｓ３）。制御部２は、Ｓ３で更新されたテキストデータをコンパイルして木構造データを生成する（Ｓ４）。なお、Ｓ４の処理が実行される場合に、制御部２は、生成した木構造データを逆コンパイルしてテキストデータを更新するようにしてもよい。また、Ｓ４では、制御部２は、位置データを生成して記憶部３に記録するものとする。
【００６０】
一方、Ｓ２において、ユーザが選択操作をした場合（Ｓ２；選択操作）、制御部２は、操作部５からの入力に基づいて、編集画面２０上で選択された選択範囲を特定する（Ｓ５）。Ｓ５においては、制御部２は、編集画面２０においてカーソル２２の開始位置と終了位置とを取得し、これらを対角線とする長方形の領域を選択範囲２３として特定し、選択範囲２３の位置を示す情報を記憶部３に一時的に保持する。
【００６１】
一方、Ｓ２において、ユーザがコピー操作をした場合（Ｓ２；コピー操作）、制御部２は、記憶部３に記憶された位置データを参照し、Ｓ５において取得した選択範囲に含まれるノードＩＤを選択する（Ｓ６）。Ｓ６においては、制御部２は、テキストデータを参照して選択範囲２３に含まれる位置を特定する。そして、制御部２は、位置データを参照して選択範囲２３内の位置のノードＩＤを特定することになる。制御部２は、Ｓ６で特定したノードＩＤを記憶部３に一時的に記録する。なお、通常のテキストエディタと同様、制御部２は、選択範囲２３内のテキストを記憶部３の所定領域（クリップボード）に保持するようにしてもよい。
【００６２】
一方、Ｓ２において、ユーザが貼付操作をした場合（Ｓ２；貼付操作）、制御部２は、貼付操作により指示された貼り付け先の位置を取得する（Ｓ７）。Ｓ７においては、制御部２は、貼付操作が行われた場合の編集画面２０におけるカーソル２２の位置に基づいて、テキストデータ上の貼り付け先の位置を取得する。
【００６３】
制御部２は、位置データを参照して、Ｓ７で取得した貼り付け先の位置に最も近いノードＩＤを接続先として決定し（Ｓ８）、Ｓ６で選択したノードＩＤとＳ８で決定した接続先のノードＩＤとをコンパイラに入力して木構造データを編集する（Ｓ９）。Ｓ９においては、制御部２がコンパイルを実行すると、Ｓ６で選択したノードＩＤがＳ８で決定した接続先のノードＩＤの子ノードに挿入される。
【００６４】
制御部２は、編集後の木構造データを逆コンパイラに渡し、テキストデータに変換し（Ｓ１０）、Ｓ１０で変換したテキストデータに基づいて、編集画面２０の表示を更新する（Ｓ１１）。Ｓ１０においては、制御部２が逆コンパイルを実行すると、Ｓ９で編集された木構造データを示すテキストデータが生成される。なお、Ｓ１０においては、制御部２は、新たな位置データを生成することになる。
【００６５】
なお、Ｓ２において、ユーザがその他の操作をした場合（Ｓ２；その他の操作）、制御部２は、当該操作に応じた処理を実行する（Ｓ１２）。例えば、その他の操作は、テキストデータを保存する操作やテキストエディタの設定を変更する操作等である。Ｓ２において、ユーザが終了操作をした場合（Ｓ２；終了操作）、本処理は終了する。
【００６６】
以上説明した木構造データ編集装置１によれば、木構造データに対応するテキストデータをテキストエディタ上で編集する際に、選択範囲２３内のコピーアンドペーストが指示されると、選択範囲２３内のテキストを単純に貼り付けるのではなく、選択範囲２３内のノードＩＤと接続先のノードＩＤをコンパイラに渡してコンパイルした後に木構造データを逆コンパイルするので、部分木の挿入を確実に実行するとともに、テキストデータ上のレイアウトが崩れることを防止することができる。このため、崩れたレイアウトを手作業で修正するようなことがなくなり、木構造データをテキストで編集する際のユーザの手間を軽減することができる。
【００６７】
［４．変形例］
なお、本発明は、以上に説明した実施の形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
【００６８】
例えば、実施形態では、テキストエディタ上でコピーアンドペーストをする場合を例に挙げて説明したが、カットアンドペーストをする場合も同様の処理が実行されるようにしてもよい。図１５は、変形例の機能ブロックを示す図である。図１５に示すように、変形例では、実施形態で説明した機能に加えて、親子特定部１８が実現される。親子特定部１８は、制御部２を主として実現される。親子特定部１８は、ノード選択部１４により選択された１以上のノードＩＤの親ノードＩＤと子ノードＩＤを特定する。
【００６９】
図１６及び図１７は、変形例において指定された選択範囲２３を示す図である。変形例における選択範囲２３は、編集画面２０におけるテキストの切り取り範囲といえる。図１６のように選択範囲２３が指定されると、選択範囲２３内に文字列Ｔ２１，Ｔ２８，Ｔ２９が含まれているので、図１７に示すように、ノード選択部１４は、位置データを参照して、ノードＩＤが「２１」、「２８」、「２９」のノードを選択することになる（図１７に破線で示す）。選択範囲２３内のノードＩＤ選択方法は、実施形態で説明した方法と同じである。
【００７０】
親子特定部１８は、テキストデータ及び位置データを参照し、これら３つのノードからなる部分木の親ノードＩＤと子ノードＩＤを特定する。例えば、親子特定部１８は、選択範囲２３内の部分木の根ノードを示す文字列Ｔ２１の上にある記号「｜」で繋がれた文字列Ｔ２０のノードＩＤ「２１」を親ノードＩＤとして特定する。そして、親子特定部１８は、文字列Ｔ２１の下にある記号「｜」で繋がれた文字列Ｔ２２のノードＩＤ「２２」を子ノードＩＤとして特定する。なお、文字列Ｔ２９の下にはブランチを示す記号が無く、ノードＩＤ「２９」のノードは葉ノードなので、子ノードＩＤは、「２２」のみとなる。
【００７１】
図１８は、変形例において指定された貼り付け先を示す図である。図１８に示す場合、接続先決定部１６は、ノードＩＤ「１２」を接続先として決定する。接続先のノードＩＤの決定方法は、実施形態で説明した方法と同じである。この場合、ユーザは、選択範囲２３で選択したノードＩＤ「２１」「２８」「２９」の部分木を切り取って、ノードＩＤ「１２」の下に挿入することを指示している。
【００７２】
木構造データ編集部１７は、ノード選択部１４により選択された１以上のノードＩＤが示すノードが接続先のノードＩＤが示すノードに接続し、かつ、子ノードＩＤが示すノードが親ノードＩＤが示すノードに接続するように、木構造データを更新する。接続先のノードＩＤへの接続方法は、実施形態と同じである。変形例では、木構造データ編集部１７、実施形態で説明した処理に加えて、親子特定部１８が特定した子ノードＩＤが親ノードＩＤに直接的に接続するようにコンパイルを行い、木構造データを更新することになる。
【００７３】
図１９及び図２０は、変形例において木構造データが更新される様子を示す図である。図１９及び図２０に示すように、ノードＩＤが「１」〜「１２」のノードは編集前と同じである。ノードＩＤが「１３」、「１９」、「２０」のノードは、図８で選択されたノードＩＤが「２１」「２８」「２９」のノードと同じ内容である。即ち、選択範囲２３内の部分木が、接続先のノードＩＤである「１２」の子ノードとして挿入されていることになる。図２０に示すノードＩＤが「１４」〜「１８」のノードは、図８に示すノードＩＤが「１３」〜「１７」と同じ内容である。即ち、図８に示すノードＩＤが「１３」のノードは、ノードＩＤが「１２」のノードが親ノードであったが、選択範囲２３内の部分木が挿入されたので、当該部分木の根ノードであるノードＩＤ「２１」（図２０では「１４」）の子ノードとなっている。また、図２０に示すノードＩＤが「２１」〜「２３」のノードは、図８に示すノードＩＤが「１８」〜「２０」と同じ内容である。ただし、図８に示すノードＩＤが「２１」「２８」「２９」の部分木は切り取られているので、ノードＩＤ「２０」（図２０では、ノードＩＤ「２３」）とノードＩＤ「２２」（図２０では、ノードＩＤ「２４」）が直接結合するようになっている。図２０に示すノードＩＤ「２４」〜「３１」は、図８に示すノードＩＤ「２２」〜「２７」、「３０」「３１」と同じ内容である。
【００７４】
実施形態と同様、木構造データ編集部１７の上記処理が実行されると、変換部１１は、木構造データ編集部１７により編集された木構造データをテキストデータに変換し、木構造データ編集部１７は、編集後の木構造データに基づいて位置データを更新することになる。そして、表示制御部１２は、変換部１１により変換されたテキストデータに基づいて、編集画面２０の表示を更新する。
【００７５】
図２１は、木構造データが更新された後の編集画面２０である。図２１に示すように、編集後の木構造データを示すようにテキストデータが生成される。即ち、図２１に示すように、テキストエディタ上では、切り取られた文字列Ｔ１３，Ｔ１９，Ｔ２０（図１８では、文字列Ｔ２１，Ｔ２８，Ｔ２９）の部分が挿入されているが、実施形態と同様、挿入先の文字列Ｔ１４〜Ｔ１８のレイアウトが崩れることなく、木構造を示すように保持されている。更に、文字列Ｔ２３とＴ２４（図１８では、文字列Ｔ２０，Ｔ２２）が結合しているので、切り取った部分のレイアウトも崩れずに保つことができる。
【００７６】
上記変形例によれば、カットアンドペーストをするときであっても、テキストデータ上のレイアウトが崩れることを防止することができるので、崩れたレイアウトを手作業で修正するようなことがなくなり、木構造データをテキストで編集する際のユーザの手間を軽減することができる。
【００７７】
なお、変換部１１による変換方法は、上記の例に限られない。変換部１１は、予め定められた変換ルールに基づいて、木構造データとテキストデータとを相互に変換すればよい。例えば、これらの変換ルールを定めた変換テーブルを用意しておいてもよい。また、ノード選択部１４がノードＩＤを特定する方法は、上記の例に限られない。例えば、ノード選択部１４は、選択範囲２３内のテキストをコンパイラに渡すことによってノードＩＤを特定してもよい。また、接続先決定部１６による接続先の決定方法は、上記の例に限られない。接続先決定部１６は、接続先として指定された付近のテキストをコンパイラに渡すことによって接続先のノードＩＤを特定してもよい。
【００７８】
また、上記においては、テキストエディタ内にコンパイラと逆コンパイラが含まれる場合を説明したが、テキストエディタ・コンパイラ・逆コンパイラは、それぞれプログラムとして別体であってもよい。また、上記説明した処理は、木構造の分岐が発生しやすいＡＢテストパターンを実装するプログラミング言語に適用してもよいし、他のプログラミング言語に適用してもよい。更に、ソースコードを編集する場合を例に挙げて説明したが、木構造データをテキストエディタ上で編集すればよく、ソースコードの編集に限られない。例えば、データベースの編集時に上記と同様の処理を実行してもよい。また、木構造データを２分木として説明したが、テキストデータ上で木構造を視覚的に分かりやすく編集可能であればよく、３分木以上であってもよい。
【００７９】
また、上記においては、木構造データ編集装置１をユーザが直接操作するパーソナルコンピュータとしたが、木構造データ編集装置１は、サーバコンピュータにより実現されるようにしてもよい。この場合、ユーザは自分が操作するコンピュータと木構造データ編集装置１は、ネットワークを介してデータ送受信可能に接続されており、ユーザは木構造データ編集装置１にアクセスして、上記説明した処理をサーバコンピュータである木構造データ編集装置１に実行させる。この場合、ユーザが操作するコンピュータと木構造データ編集装置１とを合わせて木構造データ編集システムということもできる。上記説明した各機能が、木構造データ編集システム内のコンピュータで分担されてもよい。なお、この場合、データ記憶部１０に記憶されるものとして説明したデータは、他のデータベースサーバに存在してもよい。
【図１】
2017022041.tif 000003
【図２】
2017022041.tif 000004
【図３】
2017022041.tif 000005
【図４】
2017022041.tif 000006
【図５】
2017022041.tif 000007
【図６】
2017022041.tif 000008
【図７】
2017022041.tif 000009
【図８】
2017022041.tif 000010
【図９】
2017022041.tif 000011
【図１０】
2017022041.tif 000012
【図１１】
2017022041.tif 000013
【図１２】
2017022041.tif 000014
【図１３】
2017022041.tif 000015
【図１４】
2017022041.tif 000016
【図１５】
2017022041.tif 000017
【図１６】
2017022041.tif 000018
【図１７】
2017022041.tif 000019
【図１８】
2017022041.tif 000020
【図１９】
2017022041.tif 000021
【図２０】
2017022041.tif 000022
【図２１】
2017022041.tif 000023
【手続補正書】
【提出日】平成28年11月30日(2016.11.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
木構造データと、前記木構造データに対応するテキストデータと、を相互に変換する変換手段と、
前記テキストデータを編集するためのテキストエディタの画面を表示手段に表示させる表示制御手段と、
前記テキストエディタの画面で選択範囲が指定された場合、当該選択範囲の位置に基づいて、前記木構造データの中から１以上のノードＩＤを選択するノード選択手段と、
前記テキストエディタの画面で前記選択範囲の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、前記木構造データの中から接続先のノードＩＤを決定する接続先決定手段と、
前記１以上のノードＩＤが示すノードが前記接続先のノードＩＤが示すノードに接続するように、前記木構造データを編集する木構造データ編集手段と、
を含み、
前記変換手段は、前記木構造データ編集手段により編集された前記木構造データを前記テキストデータに変換し、
前記表示制御手段は、前記変換手段により変換された前記テキストデータに基づいて、前記テキストエディタの画面の表示を更新する、
ことを特徴とする木構造データ編集装置。
【請求項２】
前記木構造データ編集装置は、前記木構造データの各ノードのノードＩＤと、当該ノードを示す文字列のテキストデータ上での位置情報と、が関連付けられた位置データを取得する取得手段を更に含み、
前記ノード選択手段は、前記位置データと前記選択範囲の位置とに基づいて、前記１以上のノードＩＤを選択し、
前記接続先決定手段は、前記位置データと前記貼り付け先の位置とに基づいて、前記接続先のノードＩＤを決定し、
前記木構造データ編集手段は、前記１以上のノードＩＤが示すノードが前記接続先のノードＩＤが示すノードに接続するように、前記木構造データと前記位置データとを編集する、
ことを特徴とする請求項１に記載の木構造データ編集装置。
【請求項３】
前記位置データに格納される前記位置情報は、前記テキストデータの何文字目に各ノードを示す文字列があるかを示す情報である、
ことを特徴とする請求項２に記載の木構造データ編集装置。
【請求項４】
前記選択範囲は、前記テキストエディタの画面におけるテキストの切り取り範囲であり、
前記木構造データ編集装置は、前記１以上のノードＩＤの親ノードＩＤと子ノードＩＤを特定する手段を更に含み、
前記木構造データ編集手段は、前記１以上のノードＩＤが示すノードが前記接続先のノードＩＤが示すノードに接続し、かつ、前記子ノードＩＤが示すノードが前記親ノードＩＤが示すノードに接続するように、前記木構造データを更新する、
ことを特徴とする請求項１〜３の何れかに記載の木構造データ編集装置。
【請求項５】
前記接続先決定手段は、前記貼り付け先の位置の最も近くにテキストが表示されているノードのノードＩＤを、前記接続先のノードＩＤとして決定する、
ことを特徴とする請求項１〜４の何れかに記載の木構造データ編集装置。
【請求項６】
前記テキストエディタの画面は、所与のプログラミング言語のコードを入力するための画面であり、
前記変換手段は、前記テキストデータをコンパイルして前記木構造データに変換し、前記木構造データを逆コンパイルして前記テキストデータに変換する、
ことを特徴とする請求項１〜５の何れかに記載の木構造データ編集装置。
【請求項７】
木構造データと、前記木構造データに対応するテキストデータと、を相互に変換する変換ステップと、
前記テキストデータを編集するためのテキストエディタの画面を表示手段に表示させる表示制御ステップと、
前記テキストエディタの画面で選択範囲が指定された場合、当該選択範囲の位置に基づいて、前記木構造データの中から１以上のノードＩＤを選択するノード選択ステップと、
前記テキストエディタの画面で前記選択範囲の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、前記木構造データの中から接続先のノードＩＤを決定する接続先決定ステップと、
前記１以上のノードＩＤが示すノードが前記接続先のノードＩＤが示すノードに接続するように、前記木構造データを編集する木構造データ編集ステップと、
を含み、
前記変換ステップは、前記木構造データ編集ステップにより編集された前記木構造データを前記テキストデータに変換し、
前記表示制御ステップは、前記変換ステップにより変換された前記テキストデータに基づいて、前記テキストエディタの画面の表示を更新する、
ことを特徴とする木構造データ編集方法。
【請求項８】
木構造データと、前記木構造データに対応するテキストデータと、を相互に変換する変換手段、
前記テキストデータを編集するためのテキストエディタの画面を表示手段に表示させる表示制御手段、
前記テキストエディタの画面で選択範囲が指定された場合、当該選択範囲の位置に基づいて、前記木構造データの中から１以上のノードＩＤを選択するノード選択手段、
前記テキストエディタの画面で前記選択範囲の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、前記木構造データの中から接続先のノードＩＤを決定する接続先決定手段、
前記１以上のノードＩＤが示すノードが前記接続先のノードＩＤが示すノードに接続するように、前記木構造データを編集する木構造データ編集手段、
としてコンピュータを機能させ、
前記変換手段は、前記木構造データ編集手段により編集された前記木構造データを前記テキストデータに変換し、
前記表示制御手段は、前記変換手段により変換された前記テキストデータに基づいて、前記テキストエディタの画面の表示を更新する、
ことを特徴とするプログラム。
【手続補正書】
【提出日】平成29年3月31日(2017.3.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
木構造データと、前記木構造データに対応するテキストデータと、の変換ルールに基づいて、前記木構造データと前記テキストデータを相互に変換する変換手段と、
前記テキストデータを編集するためのテキストエディタの画面を表示手段に表示させる表示制御手段と、
前記テキストエディタの画面で選択範囲が指定された場合、当該選択範囲の位置に基づいて、前記木構造データの中から１以上のノードＩＤを選択するノード選択手段と、
前記テキストエディタの画面で前記選択範囲の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、前記木構造データの中から接続先のノードＩＤを決定する接続先決定手段と、
前記１以上のノードＩＤが示すノードが前記接続先のノードＩＤが示すノードに接続するように、前記木構造データを編集する木構造データ編集手段と、
を含み、
前記変換手段は、前記変換ルールに基づいて、前記木構造データ編集手段により編集された前記木構造データを前記テキストデータに変換し、
前記表示制御手段は、前記変換手段により変換された前記テキストデータに基づいて、前記テキストエディタの画面の表示を更新する、
ことを特徴とする木構造データ編集装置。
【請求項２】
前記木構造データ編集装置は、前記木構造データの各ノードのノードＩＤと、当該ノードを示す文字列のテキストデータ上での位置情報と、が関連付けられた位置データを取得する取得手段を更に含み、
前記ノード選択手段は、前記位置データと前記選択範囲の位置とに基づいて、前記１以上のノードＩＤを選択し、
前記接続先決定手段は、前記位置データと前記貼り付け先の位置とに基づいて、前記接続先のノードＩＤを決定し、
前記木構造データ編集手段は、前記１以上のノードＩＤが示すノードが前記接続先のノードＩＤが示すノードに接続するように、前記木構造データと前記位置データとを編集する、
ことを特徴とする請求項１に記載の木構造データ編集装置。
【請求項３】
前記位置データに格納される前記位置情報は、前記テキストデータの何文字目に各ノードを示す文字列があるかを示す情報である、
ことを特徴とする請求項２に記載の木構造データ編集装置。
【請求項４】
前記選択範囲は、前記テキストエディタの画面におけるテキストの切り取り範囲であり、
前記木構造データ編集装置は、前記１以上のノードＩＤの親ノードＩＤと子ノードＩＤを特定する手段を更に含み、
前記木構造データ編集手段は、前記１以上のノードＩＤが示すノードが前記接続先のノードＩＤが示すノードに接続し、かつ、前記子ノードＩＤが示すノードが前記親ノードＩＤが示すノードに接続するように、前記木構造データを更新する、
ことを特徴とする請求項１〜３の何れかに記載の木構造データ編集装置。
【請求項５】
前記接続先決定手段は、前記貼り付け先の位置の最も近くにテキストが表示されているノードのノードＩＤを、前記接続先のノードＩＤとして決定する、
ことを特徴とする請求項１〜４の何れかに記載の木構造データ編集装置。
【請求項６】
前記テキストエディタの画面は、所与のプログラミング言語のコードを入力するための画面であり、
前記変換手段は、前記テキストデータをコンパイルして前記木構造データに変換し、前記木構造データを逆コンパイルして前記テキストデータに変換する、
ことを特徴とする請求項１〜５の何れかに記載の木構造データ編集装置。
【請求項７】
木構造データと、前記木構造データに対応するテキストデータと、の変換ルールに基づいて、前記木構造データと前記テキストデータを相互に変換する変換ステップと、
前記テキストデータを編集するためのテキストエディタの画面を表示手段に表示させる表示制御ステップと、
前記テキストエディタの画面で選択範囲が指定された場合、当該選択範囲の位置に基づいて、前記木構造データの中から１以上のノードＩＤを選択するノード選択ステップと、
前記テキストエディタの画面で前記選択範囲の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、前記木構造データの中から接続先のノードＩＤを決定する接続先決定ステップと、
前記１以上のノードＩＤが示すノードが前記接続先のノードＩＤが示すノードに接続するように、前記木構造データを編集する木構造データ編集ステップと、
を含み、
前記変換ステップは、前記変換ルールに基づいて、前記木構造データ編集ステップにより編集された前記木構造データを前記テキストデータに変換し、
前記表示制御ステップは、前記変換ステップにより変換された前記テキストデータに基づいて、前記テキストエディタの画面の表示を更新する、
ことを特徴とする木構造データ編集方法。
【請求項８】
木構造データと、前記木構造データに対応するテキストデータと、の変換ルールに基づいて、前記木構造データと前記テキストデータを相互に変換する変換手段、
前記テキストデータを編集するためのテキストエディタの画面を表示手段に表示させる表示制御手段、
前記テキストエディタの画面で選択範囲が指定された場合、当該選択範囲の位置に基づいて、前記木構造データの中から１以上のノードＩＤを選択するノード選択手段、
前記テキストエディタの画面で前記選択範囲の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、前記木構造データの中から接続先のノードＩＤを決定する接続先決定手段、
前記１以上のノードＩＤが示すノードが前記接続先のノードＩＤが示すノードに接続するように、前記木構造データを編集する木構造データ編集手段、
としてコンピュータを機能させ、
前記変換手段は、前記変換ルールに基づいて、前記木構造データ編集手段により編集された前記木構造データを前記テキストデータに変換し、
前記表示制御手段は、前記変換手段により変換された前記テキストデータに基づいて、前記テキストエディタの画面の表示を更新する、
ことを特徴とするプログラム。
【国際調査報告】
2017022041.tif 000024
2017022041.tif 000025
2017022041.tif 000026
2017022041.tif 000027