JPH10254688A - プログラム作成支援装置 - Google Patents

プログラム作成支援装置

Info

Publication number
JPH10254688A
JPH10254688A JP9053502A JP5350297A JPH10254688A JP H10254688 A JPH10254688 A JP H10254688A JP 9053502 A JP9053502 A JP 9053502A JP 5350297 A JP5350297 A JP 5350297A JP H10254688 A JPH10254688 A JP H10254688A
Authority
JP
Japan
Prior art keywords
unit
name
editing
function
variable
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
JP9053502A
Other languages
English (en)
Inventor
Bunjiro Takashima
文次郎 高島
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP9053502A priority Critical patent/JPH10254688A/ja
Publication of JPH10254688A publication Critical patent/JPH10254688A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 プログラムの作成中に発生する入力誤り、変
更、宣言不備、文法誤り等に対する自動的訂正、利用者
への提示、部分的補完を含むプログラム作成支援処理を
行い、プログラム作成における作業効率の向上を図り得
るプログラム作成支援装置を提供する。 【解決手段】 プログラム作成作業中にステップ毎や関
数の定義毎にソースコードの部分的なブロックに対する
文法チェックを行い、文法誤りがあると、機械的な操作
で誤りが取り除けるものはその誤りを自動的に修正し、
また宣言されていない変数や関数が入力されると、新た
にその変数や関数の宣言をソースコード内に作成し、変
数や関数の変更時には同一のオブジェクトという意味で
変更対象と同じ変数や関数の名称を全て変更する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プログラムの作成
中においてソースコードに入り込む入力エラー、文法エ
ラー等の自動的訂正や利用者への提示を行ってプログラ
ムの作成を支援するプログラム作成支援装置に関する。
【0002】
【従来の技術】電子計算機のプログラム言語の実行方式
にはインタプリタ型とコンパイラ型がある。インタプリ
タ型のプログラム言語はプログラムのソースコードを直
接実行するものであり、コンパイラ型のプログラム言語
はプログラムのソースコードを一旦、オブジェクトと呼
ばれる機械語に翻訳(コンパイル)したものに変換した
後実行するものである。
【0003】プログラム言語の多くはサブルーチン、関
数、手続きというように機能単位のブロックを記述する
ことが可能であり、プログラム内で使用する変数や関数
の一部あるいは全てを使用前に宣言しなければならな
い。
【0004】作成されたソースコードにプログラム言語
の文法誤りが含まれている場合、インタプリタ型のプロ
グラム言語の場合は実行時に、コンパイラ型のプログラ
ム言語の場合は翻訳時に誤りの種類と場所がわかるもの
が多い。
【0005】プログラムの開発者は実行あるいは翻訳で
指摘されるプログラム言語の文法誤りを修正した後、再
度、実行あるいは翻訳を行うということを繰り返してソ
ースコードからプログラム言語の文法誤りを取り除いて
いく。プログラム作成およびプログラム言語の文法誤り
の取り除き作業は、全てソースコードの編集作業であ
る。
【0006】従来のプログラム作成支援装置としては、
ソースコードの編集時に開き括弧が入力された場合に対
応する閉じ括弧を自動的に挿入するものがある。また、
一旦、実行あるいは翻訳を行って文法誤り箇所を特定し
た後、ソースコードの編集時にすでに特定された文法誤
り箇所への移動が簡単に行うことができる機能のあるも
のがある。また、編集バッファ内における文字列を別の
文字列に一括変換したり、ひとつずつ利用者に確認を取
りながら変換を行う機能をもったものがある。
【0007】これらの技術はプログラムの作成およびす
でに作成されたソースコードにおける文法誤り箇所の修
正の支援を行うものである。
【0008】
【発明が解決しようとする課題】ところがこのような従
来のプログラム作成支援装置では、プログラム言語の文
法誤りはプログラム作成者がソースコードを入力した時
点で含まれるものであり、ソースコードの最初の作成段
階では支援を行うことができないという根本的な問題を
含んでいる。
【0009】ソースコードの作成段階で入り込む文法誤
りは、変数名や関数名の入力誤りであったり、プログラ
ム言語の文の終了記号の書き忘れという単純なものや、
使用する変数や関数の宣言を記述していないとか、変数
や関数を使用する場合に本来の型ではない型で使用する
などというものが多く、従来のプログラム作成支援装置
ではこれらの誤りを防止する機能がないという問題があ
った。
【0010】また、ソースコードが一通り完成してから
文法的な誤りの有無を調べ、誤りがある場合には再びソ
ースコードの編集作業に戻るということを繰り返してい
るので、使用するコンパイラやインタプリタによっては
プログラムの文法誤りがなくなるまでに多大な時間を必
要とすることがあるという問題があった。
【0011】また、従来のプログラム開発支援装置で
は、変数名や関数名を変換する場合に、変数や関数の同
一性を調べず、単なる文字列の比較だけで変換する文字
列を特定しているので、変更すべきでない文字列も変換
されてしまうという問題があった。
【0012】本発明は、上記に鑑みてなされたもので、
その目的とするところは、プログラムの作成中に発生す
る入力誤り、変更、宣言不備、文法誤り等に対する自動
的訂正、利用者への提示、部分的補完を含むプログラム
作成支援処理を行い、プログラム作成における作業効率
の向上を図り得るプログラム作成支援装置を提供するこ
とにある。
【0013】
【課題を解決するための手段】上記目的を達成するた
め、請求項1記載の本発明は、入出力装置とプログラム
編集内容を格納する編集バッファを有し、複数のプログ
ラムのソースコードを同時に編集することができるプロ
グラム作成支援装置において、すでに宣言された変数名
や関数名とそれらの型、出現場所およびその有効範囲を
管理する名称管理部と、変数名や関数名の一部分とその
位置からすでに宣言されておりその位置で有効な変数名
や関数名を前記名称管理部が管理する内容から検索する
名称補完部と、前記入出力装置と前記編集バッファ部と
の編集作業中に発生するデータのやり取りを制御し、さ
らに利用者からの要求により変数名や関数名の補完候補
を前記名称補完部に問い合わせを行い、前記入出力装置
を通して利用者に提示および確認し、前記編集バッファ
部の内容を更新する編集制御部とを有することを要旨と
する。
【0014】請求項1記載の本発明にあっては、現在編
集を行っている場所において有効である変数および関数
を管理しており、変数名または関数名の一部分が入力さ
れると有効な変数名または関数名への補完を行う。
【0015】また、請求項2記載の本発明は、入出力装
置とプログラム編集内容を格納する編集バッファを有
し、複数のプログラムのソースコードを同時に編集する
ことができるプログラム作成支援装置において、編集対
象のプログラム言語の文法規則を保持し編集中のプログ
ラムの一部分に対してプログラム言語の局所的な文法判
定を行う文法判定部と、前記文法判定部により発見され
た文法誤りに対する修正候補を作成する修正候補作成部
と、前記入出力装置と前記編集バッファ部との編集作業
中に発生するデータのやり取りを制御し、さらに利用者
からの要求により前記文法判定部に要求して局所的な文
法判定を行い、文法誤りがある場合には前記修正候補作
成部から修正候補を獲得して前記入出力装置を通して利
用者に提示および確認し、前記編集バッファ部の内容を
更新する編集制御部とを有することを要旨とする。
【0016】請求項2記載の本発明にあっては、プログ
ラム作成作業中に、ステップごとや関数の定義ごとなど
のソースコードの部分的なブロックに対する文法チェッ
クを行う。また文法誤りが含まれている場合、機械的な
操作で誤りが取り除けるものに関しては、この誤りを修
正する。
【0017】さらに、請求項3記載の本発明は、入出力
装置とプログラム編集内容を格納する編集バッファを有
し、複数のプログラムのソースコードを同時に編集する
ことができるプログラム作成支援装置において、すでに
宣言された変数名や関数名とそれらの型、出現場所およ
びその有効範囲を管理する名称管理部と、プログラム編
集中に使用された変数や関数がすでに宣言されているか
どうかを前記名称管理部に問い合わせ、新しく使用され
た変数や関数があればその宣言を作成してプログラムに
埋め込み、前記名称管理部に登録する宣言作成部と、前
記入出力装置と前記編集バッファ部との編集作業中に発
生するデータのやり取りを制御し、さらに利用者からの
要求により前記宣言作成部に要求して未宣言の変数や関
数の宣言を獲得して前記入出力装置を通して利用者に提
示および確認し、前記編集バッファ部の内容を更新する
編集制御部とを有することを要旨とする。
【0018】請求項3記載の本発明にあっては、現在編
集を行っている場所において有効である変数および関数
を管理しており、宣言されていない変数または関数が入
力された場合に、新たにその変数または関数の宣言をソ
ースコード内に作成する。
【0019】請求項4記載の本発明は、入出力装置とプ
ログラム編集内容を格納する編集バッファを有し、複数
のプログラムのソースコードを同時に編集することがで
きるプログラム作成支援装置において、すでに宣言され
た変数名や関数名とそれらの型、出現場所およびその有
効範囲を管理する名称管理部と、前記編集バッファ部に
おける変数名または関数名およびその位置が与えられた
ときに前記名称管理部に問い合わせて変数または関数の
有効範囲を獲得し、前記編集バッファ部から同一の変数
または関数を検索する検索部と、前記検索部により検索
された変数または関数の名称を変換する名称置換部と、
前記入出力装置と前記編集バッファ部との編集作業中に
発生するデータのやり取りを制御し、さらに利用者から
の要求により前記検索部に要求して名称変換対象の変数
または関数の使用場所を獲得し、前記入出力装置を通し
て利用者に提示および確認し、前記名称置換部に依頼し
て前記編集バッファ部の内容を更新する編集制御部とを
有することを要旨とする。
【0020】請求項4記載の本発明にあっては、現在編
集を行っている場所において有効である変数および関数
を管理しており、ある変数または関数の名称を変更する
時に、単に名称が同じという意味ではなく同一のオブジ
ェクトという意味で変更対象と同じ変数または関数の名
称全てを変更する。
【0021】また、請求項5記載の本発明は、入出力装
置とプログラム編集内容を格納する編集バッファを有
し、複数のプログラムのソースコードを同時に編集する
ことができるプログラム作成支援装置において、すでに
宣言された変数名や関数名とそれらの型、出現場所およ
びその有効範囲を管理する名称管理部と、変数名や関数
名の一部分とその位置からすでに宣言されておりその位
置で有効な変数名や関数名を前記名称管理部が管理する
内容から検索する名称補完部と、編集対象のプログラム
の言語の文法規則を保持し、編集中のプログラムの一部
分に対してプログラム言語の局所的な文法判定を行う文
法判定部と、前記文法判定部により発見された文法誤り
に対する修正候補を作成する修正候補作成部と、プログ
ラム編集中に使用された変数や関数がすでに宣言されて
いるかどうかを前記名称管理部に問い合わせ、新しく使
用された変数や関数があればその宣言を作成してプログ
ラムに埋め込み、前記名称管理部に登録する宣言作成部
と、前記編集バッファ部における変数名または関数名お
よびその位置が与えられたときに前記名称管理部に問い
合わせて変数または関数の有効範囲を獲得し、前記編集
バッファ部から同一の変数または関数を検索する検索部
と、前記検索部により検索された変数または関数の名称
を変換する名称置換部と、前記入出力装置と前記編集バ
ッファ部との編集作業中に発生するデータのやり取りを
制御し、さらに利用者からの要求により変数名や関数名
の補完候補を前記名称補完部に問い合わせを行い、前記
入出力装置を通して利用者に提示および確認して前記編
集バッファ部の内容を更新し、さらに利用者からの要求
により前記文法判定部に要求して局所的な文法判定を行
い、文法誤りがある場合には前記修正候補作成部から修
正候補を獲得して前記入出力装置を通して利用者に提示
および確認して前記編集バッファ部の内容を更新し、さ
らに利用者からの要求により前記宣言作成部に要求して
未宣言の変数や関数の宣言を獲得して前記入出力装置を
通して利用者に提示および確認して前記編集バッファ部
の内容を更新し、さらに利用者からの要求により前記検
索部に要求して名称変換対象の変数または関数の使用場
所を獲得し、前記入出力装置を通して利用者に提示およ
び確認して前記名称置換部に依頼して前記編集バッファ
部の内容を更新する編集制御部とを有することを特徴と
する。
【0022】請求項5記載の本発明にあっては、現在編
集を行っている場所において有効である変数および関数
を管理しており、変数名または関数名の一部分が入力さ
れると有効な変数名または関数名への補完を行う。ま
た、プログラム作成作業中に、ステップごとや関数の定
義ごとなどのソースコードの部分的なブロックに対する
文法チェックを行う。また文法誤りが含まれている場
合、機械的な操作で誤りが取り除けるものに関しては、
その誤りを修正する。また、宣言されていない変数また
は関数が入力された場合に、新たにその変数または関数
の宣言をソースコード内に作成する。また、ある変数ま
たは関数の名称を変更する時に、単に名称が同じという
意味ではなく同一のオブジェクトという意味で変更対象
と同じ変数または関数の名称全てを変更する。
【0023】
【発明の実施の形態】以下、図面を用いて本発明の実施
の形態について説明する。
【0024】図1は、本発明の一実施形態に係わるプロ
グラム作成支援装置の機能構成を示すブロック図であ
る。同図に示すプログラム作成支援装置は、入出力装置
1と、プログラムの編集内容を格納する編集バッファ部
3と、すでに宣言された変数名や関数名とそれらの型、
出現場所およびその有効範囲を管理する名称管理部4
と、変数名や関数名の一部分とその位置からすでに宣言
されており、その位置で有効な変数名や関数名を名称管
理部4が管理する内容から検索する名称補完部5と、編
集対象のプログラム言語の文法規則を保持し、編集中の
プログラムの一部分に対してプログラム言語の局所的な
文法判定を行う文法判定部6と、文法判定部6により発
見された文法誤りに対する修正候補を作成する修正候補
作成部7と、プログラム編集中に使用された変数や関数
がすでに宣言されているかどうかを名称管理部4に問い
合わせ、新しく使用された変数や関数があればその宣言
を作成してプログラムに埋め込み、名称管理部4に登録
する宣言作成部8と、編集バッファ部3における変数名
または関数名およびその位置が与えられたときに名称管
理部4に問い合わせて変数または関数の有効範囲を獲得
し、編集バッファ部3から同一の変数または関数を検索
する検索部9と、検索部9により検索された変数または
関数の名称を変換する名称置換部10と、入出力装置1
と編集バッファ部3との編集作業中に発生するデータの
やり取りを制御し、さらに利用者からの要求により変数
名や関数名の補完候補を名称補完部5に問い合わせを行
い、入出力装置1を通して利用者に提示および確認して
編集バッファ部3の内容を更新し、さらに利用者からの
要求により文法判定部6に要求して局所的な文法判定を
行い、文法誤りがある場合には修正候補作成部7から修
正候補を獲得して入出力装置1を通して利用者に提示お
よび確認して編集バッファ部3の内容を更新し、さらに
利用者からの要求により宣言作成部8に要求して未宣言
の変数や関数の宣言を獲得して入出力装置1を通して利
用者に提示および確認して編集バッファ部3の内容を更
新し、さらに利用者からの要求により検索部9に要求し
て名称変換対象の変数または関数の使用場所を獲得し、
入出力装置1を通して利用者に提示および確認し、名称
置換部10に依頼して編集バッファ部3の内容を更新す
る編集制御部2とを備えている。
【0025】次に、上記構成のプログラム作成支援装置
の動作について説明する。
【0026】編集バッファ部3はプログラムのソースコ
ードを編集するためのバッファであり、ソースコードの
内容と各行の位置を管理する。ソースコードは通常、補
助記憶装置にファイルという形式で格納されている。プ
ログラム作成支援装置でソースコードを編集する場合、
まず補助記憶装置から編集するファイルが読み込まれて
編集バッファ部3にコピーされる。ソースコード入力や
変更などの編集はこの編集バッファ部3に読み込まれた
コピーに対して行われる。編集された内容は利用者の指
示があると補助記憶装置に書き込まれる。
【0027】編集制御部2は入出力装置1を通して利用
者との対話を行い、ソースコードの編集処理を制御す
る。編集制御部2は、ソースコードへの入力や削除など
の直接的な編集の場合は、利用者が入出力装置1を通し
て行う操作を、編集バッファ部3の編集バッファの内容
にそのまま反映する。
【0028】また、編集制御部2は、直接的な編集以外
の操作の場合には、それぞれ担当の機能ブロックに対し
て処理を依頼し、その機能ブロックから得た回答を入出
力装置1を通して利用者に提示し、利用者が確認を行う
と編集バッファ部3の編集バッファの内容を書き換え
る。
【0029】これらの編集処理の切り替えは、利用者が
入出力装置1を通して行う。例えば入出力装置1の表示
がテキスト形態であれば、ある定められたキーを押すこ
とにより編集処理が切り替わるようにできるし、GUI
(グラフィカル・ユーザ・インタフェース)が使用でき
るのであれば、キー以外にマウスのあるボタンにより編
集処理が切り替わるとか、編集処理の切り替え用のメニ
ューボタンを表示しておいて、そのメニューにより編集
処理を切り替えるということもできる。
【0030】図2は浮動小数点型の数を1行ごとに入力
し、入力がなくなったら、それらの平均値を表示するプ
ログラムのC言語のソースコードの一例である。図2の
左側の数字はソースコードの行番号を表しており、ソー
スコードの内容とは関係はないが、説明の便宜上表記し
た。なお、本実施形態では説明のためのプログラム言語
にANCI(American National Standards Institute
:アメリカ国内標準協会)規格準拠のC言語を使用す
るが、これはあくまで一例であり、本発明は手続き型の
プログラム言語のほとんどを扱うことができる。
【0031】名称管理部4はソースコードで使用される
変数や関数の名称、型、有効範囲を管理する。本実施形
態ではテーブルを用いてこの使用される変数や関数の名
称、型、有効範囲を管理し、このテーブルを名称管理テ
ーブルと呼ぶ。なお、変数や関数の名称、型の管理はテ
ーブルで管理する必要はなく、それらの関係が管理でき
る方式であれば、オブジェクト指向データベースなどの
形式を用いてもよい。名称管理部4は、編集バッファ部
3に新しいソースコードが読み込まれたり、内容が変更
されるごとに名称管理テーブルの内容を更新する。
【0032】図3は図2のソースコードに対応する名称
管理テーブルである。名称の欄には図2のソースコード
中に出現する変数名や関数名が書かれている。型の欄に
はその変数や関数の型が書かれている。また、有効範囲
の欄にはその変数または関数がソースコード内で有効で
ある範囲が書かれている。例えば図3で、fpという変
数は2つ存在し、どちらもFILE* 型であり、一方は
関数main内で有効であり、もう一方は関数aver
ageで有効であることを示している。
【0033】名称管理部4が名称管理テーブルを作成す
るときに参照するソースコードは、普通は文法的に正し
いものであることは少ない。例えば関数の作成中の場合
は関数の閉じ括弧”}”が入力されておらず、途中で宣
言された変数や関数の有効範囲を正しく認識することは
できない。そこで名称管理部4は、名称管理テーブルを
作成するとき、作成時点で認識できる範囲の名称管理テ
ーブルを作成し、編集バッファ部3の内容が変更される
ごとに、名称管理テーブルの内容を訂正していく。
【0034】図4は名称管理部4が編集バッファ部3に
初めてソースコードが読み込まれた段階で名称管理テー
ブルを作成するときのフローチャートである。
【0035】名称管理部4は編集バッファ部3から1行
ずつ読み込み(ステップS11)、入力行がある場合に
はそれが関数の定義の始まりかどうかを調べる(ステッ
プS12)。入力行が関数の定義の始まりでない場合
は、入力行が関数の定義の終わりかどうかを調べる(ス
テップS15)。入力行が関数の定義の始まりまたは終
わりの場合は、ローカル変数用スタックか空かどうかを
調べる(ステップS13)。ローカル変数用スタックが
空でなければ、ローカル変数用スタックの変数および関
数を名称管理テーブルに登録してローカル変数用スタッ
クをクリアし(ステップS14)。ステップS11に戻
る。ローカル変数用スタックが空であれば、何もせずス
テップS11に戻る。
【0036】ステップS15で入力行が関数の定義の終
わりでない場合には、それが変数か関数の宣言であるか
どうかを調べ(ステップS16)、変数か関数の宣言で
ない場合にはステップS11に戻る。入力行が変数か関
数の宣言である場合には、その場所が関数定義の内部か
どうかを調べる(ステップS17)。入力行の場所が関
数定義の内部である場合は、入力行に宣言されている変
数または関数をローカル変数用スタックに入れ(ステッ
プS18)、そうでない場合は、入力行に宣言されてい
る変数または関数を大域変数用スタックに入れ(ステッ
プS19)、ともにステップS11に戻る。ステップS
11で入力行がない場合は、大域変数用スタックの変数
および関数を名詞管理テーブルに登録して(ステップS
110)、処理を終了する。
【0037】名称管理部4は編集バッファ部3の編集バ
ッファの内容が一定量更新されたり、あるいは改行など
の区切りが新たに入力されると図4のフローの処理を再
び行い、名称管理テーブルの内容を編集バッファの内容
との相違がなくなるように更新していく。
【0038】ただし、このように編集バッファの内容が
更新されるたびに図4の処理を行っていたのでは効率が
悪いので、名称管理部4が一旦、名称管理テーブルを作
成してしまうと、その後は編集バッファ部3の編集バッ
ファの内容を監視し、変数や関数の宣言が入力された場
合には、その場所を特定して、新たに名称管理テーブル
に登録するようにすることも可能である。その場合、名
称管理部4は、変数や関数の宣言が削除されたことを検
知したら、名称管理テーブルからその変数または関数に
関する記述を削除し、新しい変数や関数の宣言が入力さ
れたことを検知したら、名称管理テーブルにその変数ま
たは関数の記述を追加すればよい。
【0039】名称補完部5は本装置の使用者がプログラ
ムコードの入力中に、現在の編集位置で有効である変数
名や関数名の一部分を入力すると、その完全な名称に変
換するものである。利用者が変数または関数名の一部分
を入力して名称補完を指示すると、編集制御部2は名称
補完部5に処理を移す。
【0040】図5は名称補完部5の動作を示すフローチ
ャートである。
【0041】名称補完部5は編集バッファ部3の編集バ
ッファの現在編集中の部分から補完する変数または関数
の名称と有効範囲を得る(ステップS21)。補完する
変数または関数の名称と有効範囲を得たら、対応する変
数または関数を名称管理部4に問い合わせる(ステップ
S22)。名称管理部4で補完する変数または関数が見
つかったかどうかを判定し、見つかった場合にはステッ
プS24に進み、見つからなかった場合は処理を終了す
る(ステップS23)。見つかった補完する変数または
関数を候補に入れる(ステップS24)。候補が残って
いるかどうかを判定し、残っている場合にはステップS
26に進み、残っていない場合には処理を終了する(ス
テップS25)。候補からひとつ取り出し、利用者に提
示する(ステップS26)。利用者が補完したい名称で
あるかを判定し、利用者の望む候補である場合にはステ
ップS28に進み、そうでない場合にはステップS25
に戻る(ステップS27)。利用者の望む候補であった
場合には、編集バッファ部3の編集バッファの現在編集
中の部分を候補に置き換え、処理を終了する(ステップ
S28)。
【0042】例えば図2のソースコードの22行目まで
が完成していて23行目の入力中である場合、23行目
のav=aveと入力した段階で利用者が関数名の補完
を要求したとする。すると名称補完部5は名称管理部4
に関数main内で有効なaveで始まる変数または関
数名の候補を問い合わせる。名称管理部4は図3の名称
管理テーブルを検索し、float()型の関数ave
rageという名称を見つける。名称管理部4は見つけ
た名称を名称補完部5に返す。名称補完部5は名称管理
部4から得た関数名を編集バッファ部3の編集バッファ
上に書き込み、23行目をav=average()と
いう内容に変更し、入出力装置1を通して利用者に提示
する。利用者は提示された内容を確認し、変更がある場
合は訂正する。この場合、関数averageの引数が
必要であるので、それを利用者が記入し、最終的には図
2の23行目の内容となる。
【0043】文法判定部6は1ステップごと、1ブロッ
クごとなど、ソースコードの一部分に対する局所的な文
法判定を行う。C言語ではセミコロン”;”がステップ
の区切りであり、中括弧の組”{“と”}”がブロック
の区切りである。文法判定部6は使用するプログラム言
語固有の文法規則を保持しており、1ステップや1ブロ
ックなどのソースコードの一部分に適用できる文法規則
を適用する。
【0044】ソースコードの一部分に適用できる文法規
則とは、例えばC言語では変数の代入では両辺の変数の
型が等しくなければならないし、開き括弧があれば必ず
対応する閉じ括弧がなければならないし、変数の代入で
右辺が記入されていない場合も文法的には誤っていると
いうことである。文法判定部6はこれらの文法規則を保
持している。
【0045】修正候補作成部7は文法判定部6により検
出された文法エラーから、対応するソースコードの修正
候補を作成して、利用者に提示し、編集バッファ部3の
編集バッファの内容を変更するものである。
【0046】修正候補作成部7は文法判定部6から文法
エラー箇所とエラー内容を受け取ると、そのエラーをな
くすためにどのようにソースコードを変更すればよいの
かの候補をいくつか作成する。候補の作成は開き括弧が
あるのに閉じ括弧がない場合は閉じ括弧をある部分に挿
入するという機械的に修正できるものである。修正候補
作成部7が適切な修正候補を作成できない場合には、利
用者が直接ソースコードの修正を行う。
【0047】利用者が文法判定を指示すると、編集制御
部2は文法判定部6に処理を移す。文法判定部6が文法
エラーを検出した場合には、編集制御部2はさらに修正
候補作成部7に処理を移す。
【0048】図6は文法判定部6が文法チェックをする
際の動作を示すフローチャートである。
【0049】文法判定部6は文法チェックを行うブロッ
クを編集バッファ部3の編集バッファから切り出し(ス
テップS31)、切り出したブロックに対して文法チェ
ックを行う(ステップS32)。文法エラーがあるかど
うかを判定し、エラーがある場合はステップS34に進
み、エラーがない場合は処理を終了する(ステップS3
3)。エラー内容を修正候補作成部7に通知して、処理
を終了する(ステップS34)。
【0050】図7は修正候補作成部7の動作を示すフロ
ーチャートである。
【0051】修正候補作成部7は文法判定部6のエラー
内容から修正候補を作成する(ステップS41)。修正
候補が残っているかどうかを判定し、残っている場合は
ステップS43に進み、残っていない場合は終了する
(ステップS42)。修正候補をひとつ取り出して利用
者に提示する(ステップS43)。望む内容かどうかを
利用者に問い合わせ、よい場合はステップS45に進
み、そうでない場合にはステップS42に戻る。編集バ
ッファ部3の編集バッファの内容を修正候補で書き換
え、処理を終る(ステップS45)。
【0052】図11は図2のソースコードの何箇所かに
誤りを含んだソースコードである。
【0053】例えば図11のソースコードは17行目が
誤っていて、下のように閉じ括弧”)”がない。
【0054】 fp=fopen(argv[1],”r”; このような場合、通常はこの場所での文法エラーが表示
されるだけであるが、本発明の場合、文法判定部6が局
所的な文法判定を行い、括弧の対応が取れていないとい
う文法エラーを検出し、それを修正候補作成部7に通知
する。
【0055】修正候補作成部7は括弧の対応を取るため
に閉じ括弧の挿入を試みる。閉じ括弧”)”を挿入する
場所を機械的に挙げると”(“の後、”argv
[1]”の後、”;”の前が候補になる。修正候補作成
部7はこれらの候補を作成して利用者に提示するが、正
しいのは”;”の前に閉じ括弧が入るものであり、利用
者がそれを選択することにより編集バッファ部3の編集
バッファの内容が書き換えられ、この部分は正しいソー
スコードとなる。
【0056】宣言作成部8は利用者が編集中の箇所に宣
言されていない変数や関数があれば、その宣言を追加す
るものである。利用者が宣言作成を指示すると、編集制
御部2は宣言作成部8に処理を移す。
【0057】図8は宣言作成部8の動作を示すフローチ
ャートである。
【0058】宣言作成部8は編集バッファ部3の編集バ
ッファの現在位置のステップから、変数および関数のプ
リミティブをひとつずつ取り出し、それらのおのおのに
関して名称管理部4に型を問い合わせ、宣言されている
ものについてはその型を記憶する(ステップS51)。
次に、型が不明の変数または関数で、ステップに記述さ
れている他の変数または関数との依存関係から型が判別
できるものがあれば、その型を記憶し、新規変数集合に
入れる(ステップS52)。依然、型が不明の変数また
は関数があれば、その型を利用者に問い合わせて型を記
憶して新規変数集合に入れ、さらにその変数または関数
の依存関係から型が判別できるものがあれば型を記憶し
て新規変数集合に入れる(ステップS53)。新規変数
集合の各要素に対して宣言を作成して編集バッファ部3
の編集バッファに書き込み、名称管理部4にその変数ま
たは関数を登録する(ステップS54)。
【0059】例えば図11のソースコードのように、6
行目の記述float av;が書かれていなかったと
する。その場合、名称管理部4が作成する名称管理テー
ブルは図12のようになり、図3の名称管理テーブルの
34で示される変数avに関する部分がないものとな
る。宣言作成部8がステップS51で図11のソースコ
ードを上から順に処理して行くと、ソースコードの23
行目でavという変数が名称管理テーブルにない、すな
わち宣言されていないことがわかる。ステップS52で
は図11の23行目の関数average()の値を変
数avに代入しているという関係から、変数avと関数
average()が返す型が同じであると判断し、関
数average()が返す型を調べる。関数aver
age()が返す型は図12の35よりfloat型で
あるとわかるので、変数avの型もfloat型である
と判断し、それを新規変数集合に入れる。さらにステッ
プS54で新規変数集合から変数avを取り出し、 float av; という宣言を作成して編集バッファ部3の編集バッファ
に書き込み、名称管理部4に変数avを登録することに
より、図2の6行目と同じように変数avの宣言が記述
されたソースコードと図3の名称管理テーブルが作成さ
れる。
【0060】従来の文字列変換ではある変数または関数
の名称を変更しようとすると、ソースコードでの別のブ
ロックに記述されている同名の変数または関数や、その
文字列を含んだ変数の名称までもが変換されてしまう。
本発明では検索部9はソースコード内のある変数または
関数の名称変更により影響を受ける全ての箇所を検索
し、名称置換部10は同一の変数または関数の名称変更
を行うことにより、この問題を解決している。
【0061】利用者が変数または関数の名称の変更を指
示すると、編集制御部2は処理を検索部9に移し、その
後、名称置換部10に処理を移す。
【0062】図9は検索部9の動作を示すフローチャー
トである。
【0063】検索部9は名称変更する変数または関数の
型と有効範囲を名称管理部4に問い合わせる(ステップ
S61)。名称変更する変数または関数の有効範囲が不
明かどうかの判定を行い、不明の場合は処理を終了し、
そうでない場合にはステップS63に進む(ステップS
62)。有効範囲で同名の変数または関数を編集バッフ
ァ部3の編集バッファから検索し(ステップS63)、
見つかった変数または関数の場所を変更波及集合に入れ
る(ステップS64)。変更波及集合の全ての変数また
は関数を名称置換部10に渡し、処理を終了する(ステ
ップS65)。
【0064】図10は名称置換部10の動作を示すフロ
ーチャートである。
【0065】名称置換部10は変更波及集合が空である
かどうかの判定を行い、空である場合は処理を終了し、
そうでない場合はステップS72に進む(ステップS7
1)。変更波及集合から変更場所をひとつ取り出し(ス
テップS72)、編集バッファ部3の編集バッファの変
更場所の変数または関数の名称を変更し、ステップS7
1に戻る(ステップS73)。
【0066】例えば図2のソースコードの6行目に宣言
されている変数avの名称をheikinに変更すると
する。この結果、図9のステップS61に示すようう
に、検索部9が図2の6行目の変数avの型と有効範囲
を名称管理部4に問い合わせると、名称管理部4は図3
の名称管理テーブルの34から型がfloat型で有効
範囲がmain内であることを知らせる。ステップS6
3では図2の関数main内でのavだけ(この場合は
図2の6行目と23行目と24行目のav)が検索さ
れ、ステップS64で変更波及集合に入れられ、ステッ
プS65で名称置換部10に渡される。名称置換部10
はステップS71およびステップS73により図2の6
行目、23行目、24行目のavという変数名をhei
kinに変更し、編集バッファ部3の編集バッファの内
容は図13に示すようになる。
【0067】以上の説明では利用者にプログラム編集作
業中にプログラム作成支援装置が着目している箇所をユ
ーザに提示する方法を具体的には示さなかったが、その
方法は、表示プログラムの着目部分の表示色を変更して
もよいし、下線を引いてもよいし、字体を変更してもよ
い。また、必要であればプログラムの表示で着目部分が
画面内に含まれない場合には、表示を切り替えたり画面
を分割して、その場所を表示することもある。なお、こ
こでのプログラム作成支援装置が着目している箇所と
は、文法誤り箇所であったり、変数や関数の宣言であっ
たり、名称の自動変換の対象であったり、名称の自動変
換の変換後の名称のことである。
【0068】
【発明の効果】以上説明したように、請求項1記載の発
明によれば、編集中のソースコードで宣言された変数や
関数の名称、型、有効範囲を管理しており、編集作業で
すでに宣言してある変数または関数名を入力するときに
その変数名または関数名の一部分を入力すると、管理さ
れている変数名または関数名に補完するようにしたの
で、ソースコード編集中に発生する入力誤りを減らすこ
とができ、プログラム作成の負荷軽減を行うことができ
る。
【0069】また、請求項2記載の発明によれば、プロ
グラムの作成中に、一定の入力に対して文法チェックを
行い、文法に誤りがある場合はその誤りと修正候補とを
利用者に提示し、利用者の指示に従って修正、あるいは
利用者が直接修正を行うようにしたので、プログラムを
一旦、実行したりコンパイルすることなしに、単純なエ
ラーを検出、修正することができ、プログラム作成にか
かる時間を短縮することができる。
【0070】また、請求項3記載の発明によれば、プロ
グラムの作成中に、単位入力ごとに未入力変数、関数の
チェックを行い、宣言やプロトタイプを自動作成するよ
うにしたので、未使用の関数や変数の宣言忘れを防ぐこ
とができ、さらに宣言の入力をしなくても済み、プログ
ラム作成にかかる負荷軽減を行うことができる。
【0071】また、請求項4記載の発明によれば、編集
中のソースコードで宣言された変数や関数の名称、型、
有効範囲を管理しており、ソースコード上で変数や関数
の名称変更を行うときに、単なる文字列の変更ではなく
同名でも別物である変数は区別し、ソースコードの他の
部分で同一の変数または関数の名称を変更するようにし
たので、ソースコードの編集中の誤りの混入を防ぐこと
ができ、プログラム作成の作業効率の向上ができる。
【0072】また、請求項5記載の発明によれば、編集
中のソースコードで宣言された変数や関数の名称、型、
有効範囲を管理しており、編集作業ですでに宣言してあ
る変数または関数名を入力するときにその変数名または
関数名の一部分を入力すると、管理されている変数名ま
たは関数名に補完するようにし、一定の入力に対して文
法チェックを行い、文法に誤りがある場合はその誤りと
修正候補とを利用者に提示し、利用者の指示に従って修
正、あるいは利用者が直接修正を行うようにし、単位入
力ごとに未入力変数、関数のチェックを行い、宣言やプ
ロトタイプを自動作成するようにし、ソースコード上で
変数や関数の名称変更を行うときに、単なる文字列の変
更ではなく同名でも別物である変数は区別し、ソースコ
ードの他の部分で同一の変数または関数の名称を変更す
るようにしたので、ソースコード編集中に発生する入力
誤りを減らすことができ、また未使用の関数や変数の宣
言忘れを防ぐことができ、さらに宣言の入力をしなくて
も済み、また未使用の関数や変数の宣言忘れを防ぐこと
ができ、プログラム作成にかかる負荷軽減を行うことが
できる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係わるプログラム作成支
援装置の構成を示す機能ブロック図である。
【図2】ソースコードの一例を示す図である。
【図3】名称管理部が管理する名称管理テーブルの一例
を示す図である。
【図4】名称管理部が名称管理テーブルを作成する際の
動作を示すフローチャートである。
【図5】名称補完部の動作を示すフローチャートであ
る。
【図6】文法判定部が文法チェックをする際の動作を示
すフローチャートである。
【図7】修正候補作成部の動作を示すフローチャートで
ある。
【図8】宣言作成部の動作を示すフローチャートであ
る。
【図9】検索部の動作を示すフローチャートである。
【図10】名称置換部の動作を示すフローチャートであ
る。
【図11】誤りのあるソースコードの一例を示す図であ
る。
【図12】一部の変数が宣言されていないソースコード
から作成された名称管理テーブルの一例を示す図であ
る。
【図13】ある変数の名称変更後のソースコードの一例
を示す図である。
【符号の説明】
1 入出力装置 2 編集制御部 3 編集バッファ部 4 名称管理部 5 名称補完部 6 文法判定部 7 修正候補作成部 8 宣言作成部 9 検索部 10 名称置換部

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 入出力装置とプログラムの編集内容を格
    納する編集バッファ部を有し、複数のプログラムのソー
    スコードを同時に編集することのできるプログラム作成
    支援装置において、 すでに宣言された変数名や関数名とそれらの型、出現場
    所およびその有効範囲を管理する名称管理部と、 変数名や関数名の一部分とその位置からすでに宣言され
    ておりその位置で有効な変数名や関数名を前記名称管理
    部が管理する内容から検索する名称補完部と、 前記入出力装置と前記編集バッファ部との編集作業中に
    発生するデータのやり取りを制御し、さらに利用者から
    の要求により変数名や関数名の補完候補を前記名称補完
    部に問い合わせを行い、前記入出力装置を通して利用者
    に提示および確認し、前記編集バッファ部の内容を更新
    する編集制御部とを備えたことを特徴とするプログラム
    作成支援装置。
  2. 【請求項2】 入出力装置とプログラム編集内容を格納
    する編集バッファ部を有し、複数のプログラムのソース
    コードを同時に編集することのできるプログラム作成支
    援装置において、 編集対象のプログラム言語の文法規則を保持し、編集中
    のプログラムの一部分に対してプログラム言語の局所的
    な文法判定を行う文法判定部と、 前記文法判定部により発見された文法誤りに対する修正
    候補を作成する修正候補作成部と、 前記入出力装置と前記編集バッファ部との編集作業中に
    発生するデータのやり取りを制御し、さらに利用者から
    の要求により前記文法判定部に要求して局所的な文法判
    定を行い、文法誤りがある場合には前記修正候補作成部
    から修正候補を獲得して前記入出力装置を通して利用者
    に提示および確認し、前記編集バッファ部の内容を更新
    する編集制御部とを備えたことを特徴とするプログラム
    作成支援装置。
  3. 【請求項3】 入出力装置とプログラムの編集内容を格
    納する編集バッファ部を有し、複数のプログラムのソー
    スコードを同時に編集することのできるプログラム作成
    支援装置において、 すでに宣言された変数名や関数名とそれらの型、出現場
    所およびその有効範囲を管理する名称管理部と、 プログラム編集中に使用された変数や関数がすでに宣言
    されているかどうかを前記名称管理部に問い合わせ、新
    しく使用された変数や関数があればその宣言を作成して
    プログラムに埋め込み、前記名称管理部に登録する宣言
    作成部と、 前記入出力装置と前記編集バッファ部との編集作業中に
    発生するデータのやり取りを制御し、さらに利用者から
    の要求により前記宣言作成部に要求して未宣言の変数や
    関数の宣言を獲得して前記入出力装置を通して利用者に
    提示および確認し、前記編集バッファ部の内容を更新す
    る編集制御部とを備えたことを特徴とするプログラム作
    成支援装置。
  4. 【請求項4】 入出力装置とプログラムの編集内容を格
    納する編集バッファ部を有し、複数のプログラムのソー
    スコードを同時に編集することのできるプログラム作成
    支援装置において、 すでに宣言された変数名や関数名とそれらの型、出現場
    所およびその有効範囲を管理する名称管理部と、 前記編集バッファ部における変数名または関数名および
    その位置が与えられたときに前記名称管理部に問い合わ
    せて変数または関数の有効範囲を獲得し、前記編集バッ
    ファ部から同一の変数または関数を検索する検索部と、 前記検索部により検索された変数または関数の名称を変
    換する名称置換部と、 前記入出力装置と前記編集バッファ部との編集作業中に
    発生するデータのやり取りを制御し、さらに利用者から
    の要求により前記検索部に要求して名称変換対象の変数
    または関数の使用場所を獲得し、前記入出力装置を通し
    て利用者に提示および確認し、前記名称置換部に依頼し
    て前記編集バッファ部の内容を更新する編集制御部とを
    備えたことを特徴とするプログラム作成支援装置。
  5. 【請求項5】 入出力装置とプログラムの編集内容を格
    納する編集バッファ部を有し、複数のプログラムのソー
    スコードを同時に編集することのできるプログラム作成
    支援装置において、 すでに宣言された変数名や関数名とそれらの型、出現場
    所およびその有効範囲を管理する名称管理部と、 変数名や関数名の一部分とその位置からすでに宣言され
    ておりその位置で有効な変数名や関数名を前記名称管理
    部が管理する内容から検索する名称補完部と、 編集対象のプログラム言語の文法規則を保持し、編集中
    のプログラムの一部分に対してプログラム言語の局所的
    な文法判定を行う文法判定部と、 前記文法判定部により発見された文法誤りに対する修正
    候補を作成する修正候補作成部と、 プログラム編集中に使用された変数や関数がすでに宣言
    されているかどうかを前記名称管理部に問い合わせ、新
    しく使用された変数や関数があればその宣言を作成して
    プログラムに埋め込み、前記名称管理部に登録する宣言
    作成部と、 前記編集バッファ部における変数名または関数名および
    その位置が与えられたときに前記名称管理部に問い合わ
    せて変数または関数の有効範囲を獲得し、前記編集バッ
    ファ部から同一の変数または関数を検索する検索部と、 前記検索部により検索された変数または関数の名称を変
    換する名称置換部と、 前記入出力装置と前記編集バッファ部との編集作業中に
    発生するデータのやり取りを制御し、さらに利用者から
    の要求により変数名や関数名の補完候補を前記名称補完
    部に問い合わせを行い、前記入出力装置を通して利用者
    に提示および確認して前記編集バッファ部の内容を更新
    し、利用者からの要求により前記文法判定部に要求して
    局所的な文法判定を行い、文法誤りがある場合には前記
    修正候補作成部から修正候補を獲得して前記入出力装置
    を通して利用者に提示および確認して前記編集バッファ
    部の内容を更新し、利用者からの要求により前記宣言作
    成部に要求して未宣言の変数や関数の宣言を獲得して前
    記入出力装置を通して利用者に提示および確認して前記
    編集バッファ部の内容を更新し、利用者からの要求によ
    り前記検索部に要求して名称変換対象の変数または関数
    の使用場所を獲得し、前記入出力装置を通して利用者に
    提示および確認し、前記名称置換部に依頼して前記編集
    バッファ部の内容を更新する編集制御部とを備えたこと
    を特徴とするプログラム作成支援装置。
JP9053502A 1997-03-07 1997-03-07 プログラム作成支援装置 Pending JPH10254688A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9053502A JPH10254688A (ja) 1997-03-07 1997-03-07 プログラム作成支援装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9053502A JPH10254688A (ja) 1997-03-07 1997-03-07 プログラム作成支援装置

Publications (1)

Publication Number Publication Date
JPH10254688A true JPH10254688A (ja) 1998-09-25

Family

ID=12944610

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9053502A Pending JPH10254688A (ja) 1997-03-07 1997-03-07 プログラム作成支援装置

Country Status (1)

Country Link
JP (1) JPH10254688A (ja)

Cited By (5)

* 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 共通言語ランタイム言語におけるリソースのアドレスサポート
CN100368994C (zh) * 2006-02-15 2008-02-13 大连大有吴涛易语言软件开发有限公司 计算机编程中名称自动管理的方法
JP2009245456A (ja) * 2009-07-27 2009-10-22 Omron Corp プログラム開発支援装置および処理方法
CN112256266A (zh) * 2020-11-11 2021-01-22 平安普惠企业管理有限公司 语法提示方法、语法提示装置、计算机设备及存储介质
WO2023007791A1 (ja) * 2021-07-28 2023-02-02 SOPPRA Digital transformation株式会社 プログラムコード自動生成システム

Cited By (6)

* 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 共通言語ランタイム言語におけるリソースのアドレスサポート
CN100368994C (zh) * 2006-02-15 2008-02-13 大连大有吴涛易语言软件开发有限公司 计算机编程中名称自动管理的方法
JP2009245456A (ja) * 2009-07-27 2009-10-22 Omron Corp プログラム開発支援装置および処理方法
CN112256266A (zh) * 2020-11-11 2021-01-22 平安普惠企业管理有限公司 语法提示方法、语法提示装置、计算机设备及存储介质
WO2023007791A1 (ja) * 2021-07-28 2023-02-02 SOPPRA Digital transformation株式会社 プログラムコード自動生成システム
JP2023018851A (ja) * 2021-07-28 2023-02-09 SOPPRA Digital transformation株式会社 プログラムコード自動生成システム

Similar Documents

Publication Publication Date Title
US6954747B1 (en) Methods for comparing versions of a program
JP3220134B2 (ja) 自然言語テキスト編集装置
JPH0310133B2 (ja)
CN119759480A (zh) 面向嵌入式系统的多语言支持框架及其实现方法
JPH07200587A (ja) 文書編集装置
JPWO2009038209A1 (ja) 機械翻訳システム、機械翻訳方法及び機械翻訳プログラム
JP2006277519A (ja) 対話装置、対話シナリオ編集装置、対話方法及びプログラム
JPH1185536A (ja) 原始プログラムのエラー自動修正装置及び方法
JP3034295B2 (ja) 機械翻訳方法及び機械翻訳装置
Bainbridge et al. Managing change in a digital library system with many interface languages
JP4616603B2 (ja) ソースコード検索プログラム及び検索用テーブル作成プログラム
JPH07146785A (ja) プログラム自動生成方法および装置
JPH11259460A (ja) 文書処理装置
JP2000020296A (ja) プログラム変更支援装置
JP2626174B2 (ja) 翻訳支援装置
JP2000112722A (ja) 版数管理システム、管理方法及び記憶媒体
JP3294966B2 (ja) 機械翻訳装置
JP2000322295A (ja) データベースストアドサブプログラム用プログラミング支援方法ならびに装置
JPH05298081A (ja) 仕様抽出装置
JP3051747B2 (ja) 機械翻訳方法及び機械翻訳システム
JP2607975B2 (ja) デバック方式
JP2946509B2 (ja) 対話型マニュアルの制御方法
JPH11282844A (ja) 文書作成方法および情報処理装置および記録媒体
CN119166117A (zh) 在idea开发环境下的元模型处理方法、装置及介质
JPH10293761A (ja) 機械翻訳装置および機械翻訳方法ならびに機械翻訳プログラムを記録した記録媒体