JP2002082804A - 動的識別子情報を利用するエディタ - Google Patents

動的識別子情報を利用するエディタ

Info

Publication number
JP2002082804A
JP2002082804A JP2000270081A JP2000270081A JP2002082804A JP 2002082804 A JP2002082804 A JP 2002082804A JP 2000270081 A JP2000270081 A JP 2000270081A JP 2000270081 A JP2000270081 A JP 2000270081A JP 2002082804 A JP2002082804 A JP 2002082804A
Authority
JP
Japan
Prior art keywords
identifier
editor
input
identifier information
program
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.)
Pending
Application number
JP2000270081A
Other languages
English (en)
Inventor
Akifumi Watanabe
昭文 渡辺
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to JP2000270081A priority Critical patent/JP2002082804A/ja
Publication of JP2002082804A publication Critical patent/JP2002082804A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】対象とするプログラム言語などのテキスト処理
系でアルファベット以外の識別子名が使えない場合で
も、ディスプレイ画面上ではアルファベット以外の識別
子名を見ながら文書の編集ができるエディタを提供す
る。また多数の識別子の中から限定した選択メニューを
表示して入力補助を行うエディタ及び文字列検索を行わ
ずに文書の部分領域の編集環境に移行する機能を持つエ
ディタを対象とするテキスト処理系の仕様に関わらず実
現する。 【解決手段】文書を静的な文字列の部分と動的識別子情
報から構成する。これによって第1の課題が解決する様
子を図に示す。識別子は画面表示名801とファイル出
力名802の2つの名前を持つことができ、識別子混入
テキストデータ602を作成すると、画面表示603に
は日本語の識別子が現れ、一方英数字しか許さないコン
パイラでコンパイル可能なソースプログラムが、ファイ
ル出力604のように生成される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータのソ
ースプログラム及び、構造をもつ文書の記述に適したエ
ディタに関する。
【0002】
【従来の技術】
【0003】請求項1に関わる従来の技術についてまず
述べる。
【0004】コンピュータのプログラムの要素には、予
約語、演算子、関数または手続き、変数、型などがあ
る。構造化プログラミングや、オブジェクト指向プログ
ラミングではメンバフィールドやメソッド、クラス等が
加わる。
【0005】オブジェクト指向プログラミングの用語は
プログラム言語ごとに違っているので、共通した用語を
ここで定義する。
【0006】オブジェクトにはクラスとインスタンスが
ある。クラスの定義を元に記憶域を実際に占有する実体
がインスタンスである。クラスとインスタンスは非オブ
ジェクト指向プログラミング言語における変数とその型
に対応をつけられる。型にあたるオブジェクトがクラス
であり、変数にあたるオブジェクトがインスタンスであ
る。今後は、クラスと言った時は非オブジェクト指向プ
ログラミング言語での型まで含めることとする。変数と
言ったときはインスタンスのことも含まれるものとす
る。
【0007】クラスの定義中には、メソッドとメンバフ
ィールドという要素が複数含まれていて、それらを総称
してメンバと呼ぶ。メソッドとは、オブジェクトに特定
の動作を要求するときに使われる動作の識別名である。
通常その動作を実現するための処理がプログラム中に記
述されている。C++言語ではメンバ関数がメソッドに該
当する。メンバフィールドとは、変数として記憶領域を
占有したときにその部分領域を指し示すためのC++言語
でメンバ変数と呼ばれるものや、クラス内で定義される
定数等がこれに該当する。
【0008】以上でオブジェクト指向プログラミングで
使用される用語の定義を終わる。構造化プログラミング
における構造体やレコード型はここではメンバフィール
ドのみ許されるクラスとして扱う。
【0009】プログラマーが入力をしなければならない
要素のうち、関数(手続き、メソッドは同類)、クラス
(プログラマーが定義する型も同類)、変数、メンバフ
ィールドなどは、プログラマーが機能にふさわしい名前
を自由に考案できる入力要素である。これらをここでは
識別子と総称し、その名前を識別子名と呼ぶ。
【0010】しかるに、プログラム言語の多くは識別子
名に使用できる文字コードに制限がある。
【0011】コンピュータの文書に使われる文字コード
には、世界共通の1バイトのASCIIコード(アメリカ規格
協会策定)体系と、様々な規格があって、国によって違
うことが多いマルチバイト文字コード体系があり、日本
でかな漢字混じり文を表現するために使われているJIS
コード(日本工業規格策定)、シフトJISコード(Micro
soft社策定)、EUC-JPコード(AT&T社策定)などは2バ
イトまたはそれ以上のバイト数で1つの文字を表すマル
チバイトの文字コードである。
【0012】アメリカ合衆国を始めとする米州、欧州で
開発されたプログラム言語はASCIIコード体系のうち '
A'〜'Z'(コード番号41h〜5Ah),'a'〜'z'(コード番号61
h〜7Ah)というアルファベット文字の領域のみを識別子
名に使うことが許されていて、日本語などアルファベッ
ト以外の名前を与えることができないものが多い。
【0013】一部には日本語などマルチバイト文字コー
ドの識別子名が使えるプログラム言語はある。しかし、
日本語を入力する場合、日本語IME(Input MethodEdito
r)あるいは日本語フロントエンドプロセッサと呼ばれる
かな漢字変換を行うシステムを呼び出す必要がある。プ
ログラムには演算子など日本語IMEを通さずに直接入力
すべきものが多くあり、日本語IMEの起動と終了を繰り
返さなければならない。また、かな漢字変換において、
変換キーを押すとか文節区切りの間違いを修正する、同
音異義語のリストを選択するなど、アルファベットの名
前であれば必要のないキーストロークが余分に必要にな
る。識別子というものはプログラム中で複数回出現する
のが普通であるから、その都度、日本語IMEを起動して
入力するとなるとその手間の冗長さは何倍にも増幅さ
れ、ついには、プログラマーは使えたとしても日本語の
識別子などは敬遠するというのが従来の状況である。
【0014】識別子入力の省力化については特許公開番
号 平9-91126 などがあるが、プログラム言語を選ばず
に日本語の識別子を使えるようなものではない。
【0015】
【0016】次に請求項2に関する従来の技術について
述べる。
【0017】構造化プログラミング言語やオブジェクト
指向プログラミング言語では、変数がどのクラスの属性
を持つかにより、どのメンバフィールド、メソッドが使
えるかは決まる。変数が属さないクラスのメンバフィー
ルド、メソッドは使えず、変数に続けて、変数が属さな
いクラスのメンバフィールド、メソッドを記述すると文
法エラーとなる。(変数に続けるとは、字句どおり識別
子を連続して書き並べることを意味するのでなく、C言
語、C++言語では変数.メンバ、変数->メンバと書く(演
算子を間にはさんで、メンバ識別子を記述する)よう
に、変数に対して修飾を施すような記述を意味する。)
【0018】エディタの中には入力を補助することで、
この種の文法エラーを防止する機能を有するものがあ
る。
【0019】すなわち、識別子の頭の部分を入力する
と、その場所に文法的に入力していい識別子を探して、
残りの文字を補完してくれるという機能で、同じ頭の部
分を持つ識別子が複数あった場合は、リストで候補を示
してくれる。
【0020】この機能により、メンバフィールドやメソ
ッドを誤まって入力してしまうというミスを防ぐことが
できる。
【0021】さらに、請求項3についての従来の技術に
ついて述べる。
【0022】プログラムを記述するソースコードは、1
つまたは複数のテキストファイルから構成され、1つの
テキストファイルは複数の関数(手続き、メソッド等を
代表させる。)等の小要素から成り立っている。
【0023】プログラム編集中、特定の関数の記述内容
を参照したくなった時は、単純なエディタであれば、関
数の名前の文字列でテキストファイルに対して検索を行
う。2つ以上の関数を見比べながら何か作業を行うと
き、同じ文字列の検索を何度も繰り返して、表示を切り
替えるという手間がかかることがある。
【0024】例えば、「func1」「func2」という2つの
関数があったとして、1つしか表示窓がないと、「func
1」の内容を見たいときは「func1」という文字列を検索
し、「func2」の内容を見たくなったら、「func2」とい
う文字列を検索する。ここでまた「func1」の内容で気
になることがあるとまた文字列検索をしなければならな
い。
【0025】一般にはマルチウィンドウの環境であれば
このようなことは少なくすることができる。しかし、1
つのウィンドウが表示する領域はテキストファイルの1
部であり、カーソルを自由に動かして、最初に検索した
関数とは別の表示の場所まで容易に移動できてしまう。
【0026】プログラマーが最初に「func1」を見るた
めにウィンドウを開いたとしても、何かの拍子にそれを
忘れて、そのウィンドウ上で別の関数を覗きに行ってし
まう事はよくある。するとやはり、「func1」を見るた
めにはまた文字列検索をやり直さなければならない。
【0027】マルチウィンドウとは別の解決法にマーキ
ングという手段がある。これは、再び見たくなるであろ
うテキストの場所に印をつけておく機能と表示をその印
の場所に切り替える機能を組み合わせて使うものであ
る。
【0028】しかし、これにも印をつけるのを忘れる、
エディタを起動するたびに印を付け直す必要がある等の
欠点はある。
【0029】またタグジャンプ機能を利用するエディタ
もある。これは、あらかじめ関数の名前と関数が配置さ
れる行番号の対応のテーブルを作っておき、目的の関数
の編集に移りたいときにその行番号を参照する機能であ
る。
【0030】この機能では、行の挿入や削除が行われた
ときに行番号の対応がずれてしまうので、対応のテーブ
ルを作り直す必要があることと、対応のテーブルを自動
的に作るためには、各プログラム言語の文法をテーブル
作成機能が知っている必要があり、新しいプログラム言
語や使用者の少ないプログラム言語には対応していない
とか、途中に文法エラーが含まれていると、対応のテー
ブルを正しく作成できないなどの問題がある。
【0031】
【発明が解決しようとする課題】
【0032】請求項1が解決しようとする課題:
【0033】日本語のみに特化して述べる。(他のアジ
ア系文字についても同様である。)従来の技術に述べた
ように、日本語を識別子に使えるプログラム言語は少な
く、使えたとしても入力に手間がかかり、プログラマー
に敬遠される。
【0034】アルファベットでしか命名しないとした
ら、アルファベットの語彙、例えば英語に親しみの少な
いプログラマーにとって、識別子に命名を行うのは英語
圏のプログラマーに比べて思考力をより消費する工程に
なる。適当な語句を思いつかない場合はローマ字で日本
語表記することになるが、かな漢字混じり文に比べて視
認性が落ちるのは明らかである。
【0035】プログラムは書くときだけでなく、後で修
正したり、利用するときに読みやすいかどうかという観
点も重要である。プログラマーの母国語で表記される方
が、それ以外の言語で表記されるより、プログラムの把
握が容易になる。
【0036】以上により、英語に親しみのない人間がプ
ログラマーとして、英語しか使わないプログラマーと対
等に能力を発揮するためには、母国語での命名がより手
間をかけることなくできることは必須であると考える。
【0037】この課題を実現するにあたって、プログラ
ム言語の1つ1つをアルファベット以外の文字に対応す
るように修正するという方法は放棄する。
【0038】理由その1は、たとえ使用できても入力の
手間のために使用を敬遠するという問題は解決できない
こと。理由その2は日々、世界中で新規に言語は開発さ
れており、修正は追いつかないし、すぐに修正できるよ
うに開発者から情報提供されはしないこと。理由その3
は使用する人数の少ない言語は費用対効果の面からも対
応できないことである。
【0039】よって求める課題は、対象とするプログラ
ム言語の仕様によらず、プログラムの入力時にアルファ
ベットの名前に比べて大幅に手間をかけることなくアル
ファベット以外の名前を持つ識別子を入力することがで
き、かつ、プログラム閲覧時はそのアルファベット以外
の名前の識別子を含んだプログラムであるかのように見
える方法を開発することである。
【0040】請求項2が解決しようとする課題:
【0041】従来の技術で説明した識別子補完機能は特
定のプログラム言語仕様を対象に特定のエディタ上で実
現されている機能である。本発明でも同等の機能を有す
ることが望ましいがそのままの機能を搭載することには
問題がある。
【0042】1つ目の問題は、請求項1の課題によれ
ば、日本語の名前をクラスのメンバフィールド識別子や
メソッド識別子としても使えるようにすることになる
が、日本語識別子の頭部の文字列を入力して残りの部分
を補完するとなれば、日本語IMEの呼び出しを行うとい
うことであり、それは、アルファベットの名前の識別子
に比べて手間をかけないという請求項1の課題に反す
る。
【0043】2つ目の問題は、この識別子補完は、対象
とするプログラム言語が特定され、メンバフィールドや
メソッドの定義文部を解釈することが可能でなければで
きない。これは、対象とするプログラム言語の仕様によ
らず、使用できるという請求項1の課題からして、特定
のプログラム言語の文法だけを頼りにしない補完方法が
望ましい。
【0044】この点に関連して、従来の識別子補完で
は、作成中のプログラムなどで、文法的な誤りが識別子
の定義部にあると、定義文の解釈に失敗し、補完機能が
働かないということがあった。本発明により特定のプロ
グラム言語仕様の定義文部を解釈することなしに識別子
入力を補助する方法が考案できれば、文法的に誤りがあ
るような、定義が完成していない段階でも使えることに
なる。これは頭部の入力から補完する方法にない利点で
ある。
【0045】よって請求項2が解決しようとする課題
は、対象とするプログラム言語の仕様によらず、多数の
識別子の中から限定した選択メニューを表示して入力を
補助する手段を提供すること、特にある変数に続けて、
その変数が属するクラスのメンバフィールド識別子、メ
ソッド識別子の入力を補助する手段を提供することとす
る。
【0046】請求項3が解決しようとする課題:
【0047】関数の内容を編集できるウィンドウを文字
列検索なしに開くようにする。その際にそのウィンドウ
内の入力カーソルの可動範囲は関数の記述範囲とし、そ
のウィンドウを開いた時はいつでも決まった関数の内容
を編集できるようにする。これをもって、2つ以上の関
数を見比べながら編集を行うときの、文字列検索の繰り
返しをなくす。これをプログラム言語の仕様によらず行
う。
【0048】章などの構造を持った一般文書も、プログ
ラム全体=文書全体、関数=章と対応させれば、章だけ
の編集にすぐ移行したり、2つ以上の章を見比べながら
文書編集をしたいといった場面に応用できる。
【0049】よって、請求項3の課題は一般化して、対
象とする文書構造の仕様によらず、文字列検索なしに、
目的の小要素だけに限定した編集環境に移行できるよう
にすることとする。文書構造の仕様とはプログラム言語
の仕様に加えて、”第1章”など章区切りのパターン
や、TeXやHTMLなどマークアップ言語と呼ばれるテキス
ト処理系における段落区切りや章、節区切りの決まった
文字列の文法などを指す。
【0050】
【課題を解決するための手段】
【0051】請求項1に係わるエディタについて、図1
で概要を説明する。
【0052】プログラム言語は実行の形態によりインタ
ープリタ言語(301)とコンパイラ言語(302)に分類でき
る。コンパイラ言語は純粋なテキストファイル(202)を
コンパイルして機械語の実行コードを作成した上でプロ
グラムを実行する。インタープリタ言語は実行前に純粋
なテキストファイル(202)を読み込む方法が存在し、そ
の上で、読み込んだソースプログラムを解釈しつつ実行
する。プログラム言語が違っても、純粋テキストファイ
ル(202)を用意することがプログラムを作成するという
ことになる。
【0053】本発明では実際にプログラムを実行すると
きに必要な純粋テキストファイル(202)を作成するの
は、最終段階であって、プログラム編集中は「識別子情
報混入ファイル」(201)と名づける中間形式に対して入
力を行うことにする。
【0054】オペレーター(プログラムを編集するプロ
グラマーなど)が入力手段(101)で入力を行うと識別子
情報混入ファイル(201)を書き換える。その識別子情報
混入ファイル(201)の内容は画面表示(203)用の内容に変
換されオペレーターはそれを見ながら入力を行う。
【0055】一方で、識別子情報混入ファイル(201)の
内容を基にして純粋テキストファイル(202)が作成され
るが、これは実際にプログラムを実行したり、コンパイ
ルする段階までは必要ない。
【0056】図2のように識別子情報混入ファイル(20
1)は識別子情報定義データベース(211)と識別子混入テ
キストデータ(212)から成っている。識別子情報混入フ
ァイル(201)は”ファイル”という言葉が入っているも
のの、実際に固定ディスクなどの記憶装置に保存される
のは、文書の編集を終えるときや保存を意識的に行うと
きのみでよく、文書編集の途中では、保存すべきデータ
と同等の情報がメモリ上に存在していればよい。そのメ
モリ上の形も含めて識別子情報混入ファイル(201)と呼
ぶ。
【0057】図3に示すように識別子情報定義データベ
ース(211)は識別子を一意に識別できる識別子識別番号
(以後、識別子IDコード)毎に画面表示用の名前と、フ
ァイル出力用の2つの名前を持つことができる。ここで
言うファイル出力とは純粋テキストファイルの出力を意
味する。
【0058】オペレーターは識別子を定義する時、ファ
イル出力用の名前としては、対象とするプログラム言語
の文字使用制限に適応した名前を入力する。画面表示用
の名前は、日本語のかな漢字混じりでも、特殊記号で
も、文字の種類の制限なしに、定義できる。
【0059】図4に示すように、プログラムを記述する
識別子混入テキストデータ(212)の中で識別子が登場す
る箇所では、識別子IDコードの形で格納され、それが画
面表示では日本語など文字制限のない名前の識別子が使
ってあるように見える。一方で純粋テキストファイル(2
02)の形で出力されるとき識別子は、対象とするプログ
ラム言語の仕様に応じた文字だけで書かれるため、目的
のプログラム言語でコンパイルまたは実行をすることが
できる。
【0060】図2における識別子情報混入ファイル(20
1)全体が、従来のエディタでの編集対象である純粋テキ
ストファイルに取って代わる、本発明エディタの編集対
象である。そのうち、識別子混入テキストデータ(212)
の単純テキスト部を静的な部分とすると、識別子混入テ
キストデータ(212)中に格納された識別子IDコードの部
分と識別子情報定義データベース(211)が動的識別子情
報になる。全体が完成した後でも識別子情報定義データ
ベース(211)の画面名、ファイル出力名は修正すること
ができ、他の目的のため(例:請求項2、請求項3)の
情報なども所有し、入力環境の動作を変更することがで
きる。
【0061】定義時のみ、日本語名を入力する時には日
本語IMEを起動しての入力が必要になるが、その識別子
を使用する箇所では、識別子情報定義データベース(21
1)から選択メニューを形成し、マウスか簡易なアルファ
ベット1文字程度の入力で識別子を選ばせるので、アル
ファベットだけで命名された識別子に比べて入力の手間
がかかることはない。
【0062】1つの識別子につき定義は1プログラムで
1回だけなのに対し、その識別子を使用する箇所は複数
あり、1度の日本語IME起動の手間は無視できる。よっ
て可読性の高さという利点を妨げるものがなくなり、日
本語を使用した識別子名の使用が促進されることにな
る。
【0063】ここに述べてきたことは、日本語以外の文
字入力IMEが搭載されている環境においてそれらの文字
を使用した識別子名を使おうとした場合でも同様であ
る。
【0064】なお、図1中テキスト処理言語(303)とあ
るのは、上記2種類のプログラム実行を除いた、純粋テ
キストファイルを入力に用いるその他の処理系を示して
おり、本発明はプログラム作成以外の純粋テキストファ
イル(202)の作成にも用いることができる。つまり、本
発明は純粋テキストファイルを必要とするもののために
それ(純粋テキストファイル)を作成するシステムであ
り、その用途の主なものにプログラム作成があるという
位置付けで請求項1の課題を解決したものである。
【0065】請求項2の課題の解決は請求項1記載の動
的識別子情報を利用することが前提であって、識別子の
間に階層を設けて、識別子情報定義データベース(211)
を分割して管理することで解決する。識別子情報定義デ
ータベース(211)は実際には、図5のような3種類のデ
ータベースに分類される。
【0066】表1は識別子の分類で、A分類、B分類、C
分類、D分類の4つに分け、以降は全ての識別子をその
グループを代表する識別子で表す。図6が各識別子グル
ープの支配関係を示したものである。なお、本発明はプ
ログラム言語仕様に依存しないことを課題にしており、
全てのプログラム言語で使われている構成要素を列挙で
きないので、以下の識別子分類の仲間として挙げたもの
は例に過ぎず、対象とする言語ごとに特殊なものは似た
構造をとるものをあてはめて使用することとする。
【0067】
【表1】
【0068】A.クラス識別子のグループには変数の型属
性にあたるものがある。Pascal言語等でレコード型、C
言語で構造体と呼ばれるものなどが含まれる。また、プ
ログラム全体や一般の文書全体を便宜上この仲間に入れ
る。本発明エディタは、ただ1つのクラス識別子定義デ
ータベース(401)を持ってこのグループの識別子を管理
し、これが、最も上位の識別子情報定義データベース(2
11)となる。
【0069】B.メンバフィールド識別子のグループには
クラスに所属する部分格納領域の名前に当たるものがあ
る。C++言語におけるメンバ変数などである。プログラ
ム全体をA.クラス識別子のグループに分類したため、プ
ログラム全体で使えるグローバル変数や、関数の外でも
使用できる変数であるstatic変数等もこのB分類に入れ
る。A.クラス識別子1つ1つがそれぞれ持つことのでき
るメンバ識別子定義データベース(402)がこのグループ
の識別子を管理する。
【0070】C.メソッド識別子のグループにはプログラ
ムのコードのまとまりに対して名前をつけたものがあ
る。関数や、手続き、C++言語のメンバ関数などであ
る。一般の文書の章などの小要素管理もこのグループに
入る。B.メンバフィールド識別子と同様、メンバ識別子
定義データベース(402)で、このグループの識別子を管
理するが、この下にD.変数識別子を支配すること、メソ
ッドの処理が記述されているテキストの部分範囲と関係
を持つこと(請求項3の課題解決)等がB分類との違い
である。
【0071】D.変数識別子のグループには1つの関数の
中でしか通用しないローカル変数や引数変数識別子があ
る。C.メソッド識別子1つ1つがそれぞれ持つことので
きる変数識別子定義データベース(403)がこのグループ
の識別子を管理する。
【0072】請求項2の課題を解決するためにB.メンバ
フィールド識別子や、C.メソッド識別子、D.変数識別子
を管理する識別子情報定義データベース(211)(すなわち
メンバ識別子定義データベース(402)と変数識別子定義
データベース(403))では、識別子が所属するクラス(ま
たは型)の識別コード(以下IDと呼ぶ)を情報として持つ
ことができるようにした。
【0073】所属するクラスのIDが識別子の情報に加え
られたことにより、プログラム入力中に、識別子が特定
されれば、型またはクラスのIDからクラス識別子定義デ
ータベース(401)を検索し、その識別子の所属するクラ
スが支配するメンバ識別子定義データベース(402)を得
られるので、そのメンバ一覧を表示して、入力を促すこ
とができるようにした。
【0074】請求項3の課題を解決するために図7のよ
うに、テキストを双方向リスト(502)で構成する。行の
挿入や削除を行うときに、元のデータを移動せずに、次
に続く行、前に存在する行との関係をつなぎ替えるだけ
で挿入や削除ができるという特徴を双方向リスト(502)
というデータ構造は持つ。
【0075】本発明では、1行ごとの記事内容(503)を
持つ記事ノード(504)と、行としての内容を持たない区
切り専門ノード(505)の2種類のノードをリストの要素
として考える。
【0076】以降の説明は請求項1記載の動的識別子情
報を利用することが前提である。メソッドの識別子情報
は、メソッド管理体(501)と連絡しており、ソースプロ
グラム中の対象となるメソッドの処理が記述された行の
範囲を挟む2つの区切り専門ノード(505)と連絡する。
【0077】行番号ではなく、固定したノードで区切り
を表すため、行が挿入されて行数が増えたり、行が削除
されて行数が減っても、メソッド(関数、文章小要素)
として決めた範囲がずれることはない。
【0078】請求項1の課題を解決する手段に説明した
ように、識別子を入力するときは選択メニューを表示
し、マウスかキーボードを使って入力する識別子を選
ぶ。それと同様に、メソッド識別子の選択メニューを表
示し、マウスかキーボードで選べば、メソッド識別子情
報はメソッド管理体(501)と連絡しているので、メソッ
ドの処理が書かれた範囲だけに対象を限定した編集ウィ
ンドウを開くことができる。この間、文字列検索は全く
行う必要がない。
【0079】プログラム言語に係わりのない一般の、構
造をもつ文章であっても、1つの文章を擬似的にクラス
としてみなせば、章や、段落などオペレーターの好みの
範囲を擬似的なメソッドの処理が書かれている範囲とし
て設定しておくことで、特定の範囲のみの編集に即座に
移れるという利益を享受してテキスト文書作成ができ
る。
【0080】
【発明の実施の形態】以下、本発明の実施の形態を詳述
する。課題を解決するための手段でも説明した図2及び
図4における識別子混入テキストデータ(212)を図9の
ように構成する。これは図8のような文字列を格納する
だけの単純な方式とは違い、テキストの1行ごとに記事
の種類(506)という情報を持たせており、単純なテキス
ト以外のデータを管理できる。
【0081】表2のように単純テキストという文字列を
格納する種類、識別コードという識別子情報定義データ
ベース(211)を検索するための識別コードを格納する種
類、そして複合記事という両者を混合して格納するもの
などを用意してそれぞれにコード値を決め、記事の種類
(506)に数値として格納する。
【0082】
【表2】
【0083】記事の種類(506)によりデータ内容(507)は
形式も格納領域の大きさも違う。行は図7の双方向リス
ト(502)によって管理し、図7の記事内容(503)は図9の
記事の種類(506)とデータ内容(507)の結合したもので、
可変長のデータになる。
【0084】図10は、データの例である。識別子情報
定義データベースの例(601)のように2つの識別子が定
義されて、識別子混入テキストデータの1行の例(602)
のような行があると画面上には画面表示の例(603)のよ
うに日本語の変数があるかのように表示され、一方でテ
キストファイルに出力されるときにはファイル出力の例
(604)のようにアルファベットの変数になっているの
で、Cコンパイラなどで問題なく処理ができる。
【0085】識別子情報定義データベース(211)は図6
のように階層構造を組む。その例が図11である。この
ような識別子の階層構造の上でC++言語のメンバ関数
「時間::時間差計算」(画面上の表示)を入力していく
時の例を次に説明する。この関数は純粋テキストファイ
ル上では「Time::CalcTimeDifference」と表現される。
なお、C++言語の文法ではメンバ関数というが、これま
で、メンバ関数等の識別子はメソッド識別子で代表して
きたため以下でもメソッドと記述する。
【0086】図12はプログラム入力中の画面表示で、
これから入力されるカーソル位置(701)で引数変数入力
機能を呼び出したとする。すると図11のメンバ識別子
定義データベース(402)の識別子ID10 画面名"時間差計
算"というメソッド識別子は変数識別子定義データベー
ス(403)と連絡がついているので、図13のような変数
選択画面を表示することができる。
【0087】ここではマウスで入力したい変数を選択し
て、変数を入力することもできるし、”やめ”というボ
タンを選択して変数の入力をやめることもできる。また
画面上の識別子に"F"とか"S"とかアルファベットの文字
がついており、マウスを使わなくてもキーボードからこ
のアルファベットを入力すれば該当する変数識別子が選
択されたことになり、変数の入力ができる。いずれにし
ても日本語IMEを呼び出して、日本語を入力するのに比
べてはるかに入力の手間がかからない。アルファベット
の変数を入力するよりも場合によっては速い。
【0088】図13の画面で"F"をキーボードから入力
すれば、引数変数"基準時間"が選択され、画面上では日
本語名の変数が表示される。その後、図14のようなカ
ーソル位置(702)でメンバ識別子入力機能を呼び出す
と、カーソル位置から前のほうにさかのぼって、最初に
見つけた識別子の型のメンバ選択画面が表示される。こ
の例の場合、最初に見つかる識別子は"基準時間"であ
り、その型は図11の変数識別子定義データベース(40
3)によればクラスID=CID1であり、クラス識別子定義デ
ータベース(401)を探すとそれはクラス”時間”である
ことがわかる。
【0089】クラス”時間”はメンバ識別子定義データ
ベース(402)と連絡がついており、その結果図15のよ
うなメンバ識別子の選択画面が表示される。ここではク
ラス"時間"のメンバフィールド識別子あるいはメソッド
識別子を選択することができる。ここで"F"をキーボー
ドから入力するとメンバフィールド識別子"年"が選択さ
れ、画面上に日本語でメンバフィールド識別子名が表示
される。その後入力を進めた画面が図16である。
【0090】今度はカーソル位置(703)において所属ク
ラスメンバ識別子入力機能を呼び出すと、現在編集中の
メソッド”時間差計算”はクラス”時間”に所属してい
ることがわかるので、再び図15のようなメンバ識別子
の選択画面が表示される。ここで"F"とキーボード入力
するとメンバフィールド識別子"年"が選択され、図17
のように画面表示される。
【0091】最初に入力した”年”は変数”基準時間”
のメンバフィールドであり、後で入力した”年”のほう
は、このメソッドが実行時に関数コールされる場合のイ
ンスタンスのメンバフィールドであり、明示的に書け
ば”this -> 年”と表記されるものである。これはC++
の文法的には”this -> ”の部分を省いて記述してよい
とされているものであり、本発明はこのような場合にも
対応している。多くのオブジェクト指向言語でこのよう
な文法が採用されている。
【0092】このメソッド”時間差計算”の編集中、別
のメソッド”時間設定”の内容をを覗いたり、編集した
りしたい場合、図19のような画面を表示して編集する
メソッドを切り替えることができる。同様にして、すぐ
にメソッド”時間差計算”の編集に戻ることができる。
【0093】本エディタを起動してすぐの場面や全く関
係のないクラスの編集を行った後等では、クラス”時
間”の選択画面は表示されていないので、まず図18の
ようなクラス選択の画面を呼び出して、その中でクラ
ス”時間”を選択し、やはり図19の画面で編集するメ
ソッドを選択する。
【0094】
【発明の効果】以上により、本発明は対象とするプログ
ラム言語を限定することなく、アルファベット以外の文
字で命名された識別子を画面上に見ながらプログラムを
編集することを可能にし、入力の容易さのためにそれを
促進する。
【0095】識別子の名前には、依然としてアルファベ
ットの名前も必要とされるが、これは、編集中にプログ
ラマーが見るためのものではなく、機械(コンパイラ、
インタプリタ)に読み取らせるためだけのもので、他の
識別子との違いを持たせて識別可能という条件さえ満た
せば、変数の意味などとの関係で正しい英語の語彙など
を考え出す必要はない。よってプログラマーが今までに
使っていた労力を軽減できる。
【0096】このように、欧米圏の語彙知識が十分では
ないプログラマーにとって、本発明は本来のプログラミ
ングの論理構成に集中できることでの生産性の向上や、
作成されたプログラムの可読性の向上等の利益がある。
【0097】別の使い道もある。あまり馴染みのないプ
ログラム言語の予約語や、ライブラリの関数を識別子と
して登録して、ファイル出力名は予約語や関数のオリジ
ナルのままとする一方、画面出力名として日本語のわか
りやすい名前を与えて使えば、言語やライブラリを早く
習得し、導入することができる。
【0098】さらに、メンバ識別子の一覧表示と簡易な
選択入力は、従来の識別子名補完機能の役割を肩代わり
し、補完機能の恩恵を受けられなかった、使用者の少な
いプログラム言語に強力な入力補助機能を提供し、新た
なプログラム言語を試すことを促進する。
【0099】また、構造のある一般の文書にまで対象を
広げて、小要素の編集を切り替える機能はオペレーター
(プログラマーを含む)を繰り返されていた無駄な操作
から解放してくれる。
【図面の簡単な説明】
【図1】本発明エディタにおける情報の流れの概要説明
図である。
【図2】本発明エディタの識別子情報混入ファイルの構
成説明図である。
【図3】本発明エディタの識別子情報定義データベース
の構成概念図である。
【図4】本発明エディタにおける識別子の格納、画面上
の表示、テキストファイル上の表現の対照を説明した図
である。
【図5】本発明エディタの識別子情報定義データベース
の内訳説明図である。
【図6】本発明エディタの識別子情報定義データベース
の階層図である。
【図7】本発明エディタにおける1文書を複数の小要素
で管理する構造の説明図である。
【図8】比較のための通常テキストエディタの行管理構
造の説明図である。
【図9】本発明エディタにおける行管理構造の説明図で
ある。(実施例)
【図10】本発明エディタにおける識別子を含んだテキ
ストの格納、表示、ファイル上の表現の実施例である。
【図11】本発明エディタにおける識別子情報定義デー
タベースの階層構成実施例である。
【図12】本発明エディタにおけるプログラムコード入
力画面の実施例その1である。その1からその4まで番
号の順に入力が進んで行く。
【図13】本発明エディタにおける変数識別子選択画面
の実施例である。
【図14】本発明エディタにおけるプログラムコード入
力画面の実施例その2である。
【図15】本発明エディタにおけるメンバ識別子選択画
面の実施例である。
【図16】本発明エディタにおけるプログラムコード入
力画面の実施例その3である。
【図17】本発明エディタにおけるプログラムコード入
力画面の実施例その4である。
【図18】本発明エディタにおけるクラス選択画面の実
施例である。
【図19】本発明エディタにおけるメソッド編集の選択
画面の実施例である。
【符号の説明】
101 入力手段 201 識別子情報混入ファイル 202 純粋テキストファイル 203 画面表示 301 インタープリタ言語 302 コンパイラ言語 211 識別子情報定義データベース 212 識別子混入テキストデータ 401 クラス識別子定義データベース 402 メンバ識別子定義データベース 403 変数識別子定義データベース 501 メソッド管理体 502 双方向リスト 503 記事内容 504 記事ノード 505 区切り専門ノード 506 記事の種類 507 データ内容 601 識別子情報定義データベースの例 602 識別子混入テキストデータの1行の例 603 画面表示の例 604 ファイル出力の例 701 カーソル位置その1 702 カーソル位置その2 703 カーソル位置その3 801 画面表示名 802 ファイル出力名

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】コンピュータプログラムのような純粋なテ
    キストファイルの作成が要求される場合に、文書(ソー
    スコードなど)を静的な部分と、全体が完成した後から
    も、持つ情報の内容を変えられ、表示や編集作業時の動
    作を変えられる動的な部分(以下、動的識別子情報と呼
    ぶ)から構成し、対象とするプログラム言語などテキス
    トファイル処理系の仕様に関わらず、アルファベット文
    字以外(日本語など)の文字を自由に用いた名前を持つ
    識別子を、文書中に含むように見せかけながら、結果的
    には目的のテキストファイル処理系の使用文字制限に違
    反しない純粋テキストファイルを作成することができる
    エディタ。
  2. 【請求項2】請求項1記載の動的識別子情報を用いて、
    対象とするプログラム言語の仕様に関わらず、ソースプ
    ログラム作成の際に、構造化プログラミングやオブジェ
    クト指向プログラミングで使うメンバ識別子の選択メニ
    ューを表示して入力を補助することができるエディタ。
  3. 【請求項3】請求項1記載の動的識別子情報を用いて、
    対象とする文書構造の仕様に関わらず、1つの文章ファ
    イルが複数の小要素(章立て、関数、手続きなど)を含
    んでいる中で、文字列検索なしに、目的の小要素だけに
    限定した編集環境に移行する手段を備えたエディタ。
JP2000270081A 2000-09-06 2000-09-06 動的識別子情報を利用するエディタ Pending JP2002082804A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000270081A JP2002082804A (ja) 2000-09-06 2000-09-06 動的識別子情報を利用するエディタ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000270081A JP2002082804A (ja) 2000-09-06 2000-09-06 動的識別子情報を利用するエディタ

Publications (1)

Publication Number Publication Date
JP2002082804A true JP2002082804A (ja) 2002-03-22

Family

ID=18756585

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000270081A Pending JP2002082804A (ja) 2000-09-06 2000-09-06 動的識別子情報を利用するエディタ

Country Status (1)

Country Link
JP (1) JP2002082804A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005267644A (ja) * 2004-03-17 2005-09-29 Microsoft Corp 共通言語ランタイム言語におけるリソースのアドレスサポート
JP2006155250A (ja) * 2004-11-30 2006-06-15 Meidensha Corp Uml分析設計ツール

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005267644A (ja) * 2004-03-17 2005-09-29 Microsoft Corp 共通言語ランタイム言語におけるリソースのアドレスサポート
JP2006155250A (ja) * 2004-11-30 2006-06-15 Meidensha Corp Uml分析設計ツール

Similar Documents

Publication Publication Date Title
EP0686286B1 (en) Text input transliteration system
CN101694603B (zh) 基于Unicode的跨平台蒙古文显示及智能输入方法
JP4448881B2 (ja) コンピュータプログラムを発生する方法及びシステム
US6182062B1 (en) Knowledge based information retrieval system
US20030090473A1 (en) Multiple screen automatic programming interface
US7251667B2 (en) Unicode input method editor
JPH0630066B2 (ja) テーブル型言語翻訳方法
US5982365A (en) System and methods for interactively generating and testing help systems
KR20080043792A (ko) 데이터베이스로의 질의를 통한 자동 완성
EP2162833A1 (en) A method, system and computer program for intelligent text annotation
US20150134321A1 (en) System and method for translating text
US7401016B2 (en) Communication support system, communication support method, and computer program
US11080024B2 (en) In-line code adornments
US5283737A (en) Mechanism for generating linguistic expressions based on synonyms and rules derived from examples
EP0118187A1 (en) Menu-based natural language understanding system
JP2002082804A (ja) 動的識別子情報を利用するエディタ
Correll Graphite: an extensible rendering engine for complex writing systems
Corbolante et al. 7.2· 5 Software Terminology and Localization
JPH0683594A (ja) ウィズィウィグ式エディターとコンパイラーとを統合したグラフィカル・ユーザ・インターフェース
KR100315631B1 (ko) 여러 형태의 데이터를 지원하는 상용구 장치 및 방법
JPS6366663A (ja) 文書構造管理方式
Davis et al. Creating global software: Text handling and localization in Taligent's CommonPoint application system
JP3316884B2 (ja) 言語翻訳装置
KR20010003037A (ko) 다국어 입력기
JPH06124157A (ja) 語句入力装置およびその方法