JPH05108332A - エデイター - Google Patents

エデイター

Info

Publication number
JPH05108332A
JPH05108332A JP27248491A JP27248491A JPH05108332A JP H05108332 A JPH05108332 A JP H05108332A JP 27248491 A JP27248491 A JP 27248491A JP 27248491 A JP27248491 A JP 27248491A JP H05108332 A JPH05108332 A JP H05108332A
Authority
JP
Japan
Prior art keywords
function
routine
child
parent
designated
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
JP27248491A
Other languages
English (en)
Inventor
Yasuhiro Okabe
泰裕 岡部
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP27248491A priority Critical patent/JPH05108332A/ja
Publication of JPH05108332A publication Critical patent/JPH05108332A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 【目的】 関数分割・結合の作業を支援し、比較的不具
合の出やすい変数宣言ミスの発生を少なくするエディタ
ーを得る。 【構成】 親関数1内の一部分を指定すると、指定部分
の変数名を変数名格納バッファ3へ、実行文を実行文格
納バッファ4に格納し、合わせて対話メニュー5で子関
数名を入力する事により、子関数2生成のための情報を
作成し、親関数1と子関数2間の引数等を作成する事に
よりプログラムの動作自体には変化のないようにする。 【効果】 変数の重なりや宣言分の抜けがなくなり、関
数作成を含むソースコードの編集が容易になる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、たとえば、コンピュ
ータのソフトウェア開発におけるソースコードエディタ
ーに関するものである。
【0002】
【従来の技術】従来のC言語用ソースコードエディター
においては、ソースコード内の関数から別の関数を作成
する機能は特になく、ファイルや特定指定範囲のコピー
等を利用して別の関数を作成している。
【0003】
【発明が解決しようとする課題】従来の別関数作成方法
では、関数を独立・分割・結合した際に、各々の関数の
呼出し関係や引数・変数の記述を手作業でしなければな
らないという手間がかかり、それらの設定を忘れたり、
間違えてしまう等の問題点があった。
【0004】この発明は上記のような問題点を解消する
ためになされたものであり、C言語等で記述されたソー
スコードにおいて、関数等のルーチンの一部分を指定す
る事で、その部分を別の関数等の別のルーチンとして独
立させるエディターを得る事を目的とする。
【0005】また、2つ以上の関数(ルーチン)をまと
めて一つの関数(ルーチン)を作成したい場合、結合の
際重なる変数名を自動的に異なる変数名に置換した後に
結合後の関数(ルーチン)を作成するエディターを得る
事を目的とする。
【0006】また、ソースコード内の関数(ルーチン)
を単に複数の関数(ルーチン)に分割したい場合、分割
点を指定する事により、その分割点を境に複数の関数
(ルーチン)を生成するエディターを得る事を目的とす
る。
【0007】
【課題を解決するための手段】第1の発明に係るエディ
ターは、たとえば、親関数において選択された部分内の
変数を抽出し、子関数の関数名、引数並び、そして引数
宣言文等の子関数作成に必要な情報を生成した後に子関
数を作成し、親関数においては、子関数呼び出し文を自
動生成する事で関数間の関係付けを行うものであり、以
下の要素を有するものである。 (a)ソースコードの一部を親ルーチンとして指定する
指定手段、(b)指定された親ルーチンの所定の情報を
抽出する抽出手段、(c)抽出された情報に基づいて子
ルーチンを作成する作成手段、(d)親ルーチンを削除
し、かわりに子ルーチンを実行できるようなコードに置
換する置換手段。
【0008】また、第2の発明に係るエディターは、た
とえば、複数の関数を結合する場合、各々の関数間で重
なった変数名がないか検索し、重なった場合は自動的に
異なる変数名を割り付けるものであり、以下の要素を有
するものである。 (a)ソースコードの一部を2以上指定する指定手段、
(b)指定手段で指定された複数のソースコード内で重
複した変数がある場合、重複した変数の一方に他の変数
を割り当てる割当手段、(c)割当手段により割り当て
られた変数でソースコードを変更する変更手段、(d)
指定手段で指定された複数のソースコードを結合して新
しいソースコードを作成する作成手段。
【0009】また、第3の発明に係るエディターは、た
とえば、一つの関数を複数の関数として分割する場合、
指定された分割点を境にして複数の関数を自動生成する
ものであり、以下の要素を有するものである。 (a)ソースコードの一部を親ルーチンとして指定し、
指定された親ルーチンの分割すべき場所を指定する指定
手段、(b)指定された親ルーチンの所定の情報を抽出
する抽出手段、(c)親ルーチンを指定された分割すべ
き場所で分割し、抽出された情報に基づいて、複数の子
ルーチンを作成する作成手段。
【0010】
【作用】第1の発明におけるエディターは、指定手段に
より指定された親関数(親ルーチン)から抽出手段が必
要な情報を抽出し、作成手段が子関数(子ルーチン)生
成時に必要となる変数の引き渡しや宣言の記載等の比較
的ミスの起こりやすい手続きを自動的に生成して子関数
(子ルーチン)を作成するので、ソースコード中の特定
のルーチンを他のルーチンとして切り取りやすくなる。
【0011】また、第2の発明におけるエディターは、
割当手段と変更手段が複数の関数(ルーチン)をまとめ
る際に必要となる変数名の重なりチェック、及び変数名
宣言を自動的に行った後に、作成手段が複数の関数を結
合するので、複数の関数(ルーチン)から新規の関数
(ルーチン)生成が容易になる。
【0012】また、第3の発明におけるエディターは、
指定手段が親関数(親ルーチン)の範囲と分割点を指定
し、この親関数(親ルーチン)の分割点を境に作成手段
が複数の関数(ルーチン)に分割するので、ライン数の
大きくなった関数の編集作業が容易になる。
【0013】
【実施例】
実施例1.以下、第1の発明の一実施例を図について説
明する。図1はこの発明におけるエディターのプログラ
ム構成図であり、図において、1はソースコード内に記
述されている親関数、2はエディターにより生成される
子関数、3は変数名格納バッファ、4は実行文格納バッ
ファ、5は対話型メニュー、50はソースコードであ
る。また、51はソースコード50の一部を親関数1と
して指定する指定手段、52は指定された親関数1から
各種宣言や変数名、実行文を抽出する抽出手段、53は
抽出された情報に基づいて子関数2を作成する作成手
段、54は親関数1をソースコード50から削除し、か
わりに、子関数2を実行する呼出文を挿入する置換手段
である。
【0014】図2は、この発明におけるエディターが動
作するミステム構成図であり、図において、6はディス
プレイ装置、7はキーボード装置、8はマウス装置、9
はCPUである。図3は、標準的なC言語プログラムの
構造を表す図である。図4は、この発明における処理を
表すフローチャート図であり、親関数1指定部分から子
関数2を作成する処理を示すものである。図5〜図12
は実施例1における各工程のイメージ図である。
【0015】次に動作について図4をもとに説明する。
まずこの実施例におけるC言語用関数エディターによ
り、以下、親関数1となるC言語のソースコードをディ
スプレイ装置6の画面上に表示する(ステップ10)。
次にキーボード装置7やマウス装置8により、子関数と
して独立させたい部分を、親関数として、通常のエディ
ターにおけるコピーや削除の範囲選択時と同様の方法で
指定する(ステップ11、図5参照)。ここで、本エデ
ィターは、指定部分を実行文格納バッファ4に格納し
(ステップ12)、さらに指定部分内の変数を変数名格
納バッファ3に格納する(ステップ13)。なお、ここ
で変数名認識機能については、コンパイラの機能と同様
である。各バッファへの格納が終了すると本エディター
は、対話型メニュー5(図6参照)を出力して、子関数
の関数名を問いかけてくるので、これを入力し(ステッ
プ14)、入力された関数名に「.C]のファイル拡張
子をつけた形で子関数ファイル2をオープンし(ステッ
プ15)、ここから子関数の作成を開始する。通常C言
語の関数は図3のように構成されており、順に各々の情
報を生成する事により子関数の作成が可能になる。ま
ず、親関数の外部変数の宣言部分をそのまま関数にも記
述する(ステップ16、図7参照)。次にステップ14
で入力した子関数の関数名を記述し(ステップ17、図
8参照)続いてステップ13で格納した変数を引数並び
として記述する(ステップ18、図9参照)。さらにそ
の引数の宣言文を、親関数中の内部変数宣言部分からコ
ピーして記述する(ステップ19、図10参照)。この
子関数においては、内部変数は発生しないので、内部変
数の宣言文は不要であり、最後にステップ12で格納し
た実行文を記述して(ステップ20、図11参照)、子
関数の作成を完了する。一方、親関数中の指定部分は、
ステップ14で入力した子関数名と、ステップ13で格
納した変数を子関数への引数として、子関数呼出し文に
置換する(ステップ21、図12参照)。
【0016】以上のように、この実施例では、C言語用
のソースコードエディターにおいて、ソースコード中の
指定されたルーチン(親関数)を、別のルーチン(子関
数)として作成する際に、子関数の関数名を対話的に入
力する機能、指定されたルーチン内に使用されている変
数を抽出し子関数への引数とする機能、さらにその引数
を子関数内で使用するために必要な宣言文を親関数から
コピーして子関数に記述する機能、親関数中の指定され
た範囲を削除し、子関数呼出し文に置換する機能を備え
たことを特徴とするC言語用関数エディターを説明し
た。
【0017】実施例2.以下、第2の発明の一実施例を
図について説明する。図13は第2の発明におけるエデ
ィターのプログラム構成図であり、図において、1はも
ともとソースコード内に記述されている親関数、2はエ
ディターにより生成される子関数、3は変数名格納バッ
ファ、4は実行文格納バッファ、5は対話型メニュー、
22は結合する関数、23は結合後関数である。また、
51はソースコード50の一部を結合する関数22とし
て2以上指定する指定手段、55は、結合する関数22
から変数名を抽出し、変数名が重複していないかをチェ
ックし、重複していたら新しい変数名を割り当てる割当
手段、56は割当手段により割り当てられた新しい変数
名を用いて結合する関数22の変数名を変更する変更手
段、53は結合する関数22を結合して結合後関数23
を作成する作成手段である。図14はこの発明における
処理を表すフローチャート図であり、複数の関数22を
まとめて結合後関数23を作成する処理を示すものであ
る。図15〜図20は実施例2における各工程のイメー
ジ図である。
【0018】次に、第2の発明に係るエディターの動作
について図14をもとに説明する。複数の関数をまとめ
て一つの関数を作成する場合、まず結合したい関数22
を、結合後に記述する順番にキーボード装置7より、コ
マンドラインから指定(ステップ24、図15参照)す
ると、各々の関数内の変数が別々の変数名格納バッファ
3に格納される(ステップ25)。次に本エディター
は、ステップ24で指定した順番により2番目以降の関
数の変数名格納バッファ3について、それより上位の変
数名格納バッファ3に同じ変数名がないか比較し(ステ
ップ26)、もし見つかった場合は、下位の変数名格納
バッファ3の変数名を書き換える(ステップ27)。た
とえば、図16に示すように、アルファベットのaから
順番に割り当てる。そして、それに対応する関数内の変
数名を書き換え(ステップ28、図16参照)、これを
最下位の関数までくり返す。次に本エディターは、結合
後の関数名を対話型メニュー5(図6参照)を出力して
問いかけてくるので、これを入力し(ステップ29)
し、この関数名に「.C]というファイル拡張子をつけ
た形でファイル23をオープンし(ステップ30)、結
合後の関数の作成を開始する。まず、ステップ24で指
定した最初の関数の外部変数の宣言部分を記述し、以後
順に2番目以降のものを記述するのであるが、既に同じ
宣言分が記述されている場合は、これを重ねて記述しな
い(ステップ31、図17参照)。次にステップ29で
入力した関数名を記述し(ステップ32、図18参
照)、この結合の際には引数は発生しないので、引数並
び及び引数の宣言部分は不要である。続いて、ステップ
24で指定した順に内部変数の宣言部分を記述して(ス
テップ33、図19参照)、最後に同じく指定順に実行
文部分を記述し(ステップ24、図20参照)、結合後
の関数の作成を完了する。
【0019】以上、この実施例では、2以上の関数を順
番に指定して、指定された順番に1つの関数にまとめる
際に、各々の関数内で使用されている変数名が重なって
いないか検索する機能、同じ変数名が見つかった場合、
変数名が重ならないように新しい変数名を割り当てる機
能、割り当てられた変数名でソースコード中の変数を書
き換える機能を備えたことを特徴とするC言語用関数エ
ディターを説明した。
【0020】実施例3.次に、第3の発明の一実施例に
ついて説明する。図21は、第3の発明におけるエディ
ターのプログラム構成図であり、51はソースコード5
0の一部を親関数1として指定するとともに、分割点を
指定する指定手段、52は、親関数1から各種の宣言や
変数名を抽出する抽出手段、53は、親関数1を分割点
で分割するとともに、抽出手段52で抽出された各種の
宣言や変数名を用いて、複数の子関数2を作成する作成
手段である。図22はこの発明における処理を表すフロ
ーチャート図であり、親関数1を分割して複数の子関数
2を作成する処理を示すものである。
【0021】次に、動作について説明する。ソースコー
ド内の関数を単に複数の関数に分割したい場合、まずC
言語のソースコード(以下、親関数となる)を、ディス
プレイ装置6の画面上に表示する(ステップ36)。次
にマウス装置8により、分割する境界点となる箇所を指
定する(ステップ37)と、そこを境にした各領域内に
存在する変数名を変数名格納バッファ3に格納する(ス
テップ38)。指定した数に1を加えた数の子関数ファ
イル2が発生するので、本エディターは、その各々の関
数名を対話型メニュー5(図6参照)を出力して問いか
けてくるので、これを順に入力し(ステップ35)、そ
の各々の関数名に「.C]という拡張子をつけた形で子
関数ファイル36をオープンし(ステップ40)、各子
関数の作成を開発する。最初に各々の子関数ファイル2
に、親関数での外部変数の宣言部分をそのままコピーし
て記述し(ステップ41、図7参照)、続いてステップ
39で入力した関数名を記述する(ステップ42、図8
参照)。引数並び、引数の宣言については前述ステップ
18〜19と同様に行い(ステップ43)、ここでも内
部変数は不要となる。最後に、ステップ37で指定した
箇所を境に、実行文部分を各々の子関数に分割して記述
し(ステップ44)、各々の子関数作成を完了する。一
方、親関数を各々の子関数呼出し文に置換する(ステッ
プ45)。
【0022】以上、この実施例では、ソースコード内に
記述されている関数において、分割したい箇所を指定す
る機能、指定された箇所を境に子関数ファイルを作成す
る機能を備えたことを特徴とするC言語用関数エディタ
ーを説明した。
【0023】実施例4.なお、上記実施例1〜3では親
関数から子関数を作成する際、まず空の子関数ファイル
をオープンしてから、必要な情報のみを記述している
が、最初に親関数をそのままコピーして子関数ファイル
を用意し、それから不要なものを削除してもよい。
【0024】実施例5.また、上記実施例1〜3では新
しく生成される関数名を、対話型メニューで問いかけて
くるが、自動的に関数名を割り付けるようにしてもよ
い。
【0025】実施例6.また、上記実施例1〜3ではC
言語用関数エディターの場合を示したが、フォートラ
ン、コボル、アセンブリ言語、その他の言語のエディタ
ーであってもかまわない。また、関数のエディターに限
ることもなく、メインルーチンからサブルーチンを作成
したりするように、あるルーチンから他のルーチンを生
成、結合、分割する場合でもかまわない。
【0026】
【発明の効果】以上のように、第1の発明によれば親ル
ーチンから子ルーチンを自動的に生成するように構成し
たので、不具合の少ないモジュールの部品化が可能とな
る。
【0027】また、第2の発明によれば、ルーチンの結
合時に問題となる変数の重なりをなくすように構成した
ので、複数のルーチンをまとめて多機能のルーチンが作
成しやすくなる効果がある。
【0028】また、第3の発明によれば、親ルーチン内
の分割点を指定する事により、一つのルーチンから複数
のルーチンを生成するように構成したので、ライン数の
大きくなりすぎたルーチンの編集や、複数の機能を持た
せたルーチンを単機能ルーチンで構成したい場合等に役
立つ。
【図面の簡単な説明】
【図1】この発明の実施例1を示すプログラム構成図で
ある。
【図2】この発明の実施例1を示すシステム構成図であ
る。
【図3】標準的なC言語プログラムの構造図である。
【図4】この発明の実施例1を示すフローチャート図で
ある。
【図5】この発明の実施例1における範囲指定例を示す
図である。
【図6】この発明の実施例1における対話型メニューの
画面出力図である。
【図7】この発明の実施例1における外部変数宣言部分
記述時の子関数作成例を示す図である。
【図8】この発明の実施例1における関数名記述時の子
関数作成例を示す図である。
【図9】この発明の実施例1における引数並び記述時の
子関数作成例を示す図である。
【図10】この発明の実施例1における引数宣言部分記
述時の子関数作成例を示す図である。
【図11】この発明の実施例1における実行文部分記述
時の子関数作成例を示す図である。
【図12】この発明の実施例1における親関数内の子関
数呼出し文置換例を示す図である。
【図13】この発明の実施例1を示すプログラム構成図
である。
【図14】この発明の実施例1を示すフローチャート図
である。
【図15】この発明の実施例におけるコマンドライン入
力例を示す図である。
【図16】この発明の実施例1における変数名格納バッ
ファ内の変数名割り付け例を示す図である。
【図17】この発明の実施例1における外部変数宣言部
分記述時の関数作成例を示す図である。
【図18】この発明の実施例1における関数名記述時の
関数作成例を示す図である。
【図19】この発明の実施例1における内部宣言部分記
述時の関数作成例を示す図である。
【図20】この発明の実施例1における実行文部分記述
時の関数作成例を示す図である。
【図21】この発明の実施例1を示すプログラム構成図
である。
【図22】この発明の実施例1を示すフローチャート図
である。
【符号の説明】
1 親関数(親ルーチンの一例) 2 子関数(子ルーチンの一例) 3 変数名格納バッファ 4 実行文格納バッファ 5 対話型メニュー 6 ディスプレイ装置 7 キーボード装置 8 マウス装置 9 CPU 22 結合する関数 23 結合後関数 50 ソースコード 51 指定手段 52 抽出手段 53 作成手段 54 置換手段 55 割当手段 56 変更手段

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 以下の要素を有するエディター (a)ソースコードの一部を親ルーチンとして指定する
    指定手段、 (b)指定された親ルーチンの所定の情報を抽出する抽
    出手段、 (c)抽出された情報に基づいて子ルーチンを作成する
    作成手段、 (d)親ルーチンを削除し、かわりに子ルーチンを実行
    できるようなコードに置換する置換手段。
  2. 【請求項2】 以下の要素を有するエディター (a)ソースコードの一部を2以上指定する指定手段、 (b)指定手段で指定された複数のソースコード内で重
    複した変数がある場合、重複した変数の一方に他の変数
    を割り当てる割当手段、 (c)割当手段により割り当てられた変数でソースコー
    ドを変更する変更手段、 (d)指定手段で指定された複数のソースコードを結合
    して新しいソースコードを作成する作成手段。
  3. 【請求項3】 以下の要素を有するエディター (a)ソースコードの一部を親ルーチンとして指定し、
    指定された親ルーチンの分割すべき場所を指定する指定
    手段、 (b)指定された親ルーチンの所定の情報を抽出する抽
    出手段、 (c)親ルーチンを指定された分割すべき場所で分割
    し、抽出された情報に基づいて、複数の子ルーチンを作
    成する作成手段。
JP27248491A 1991-10-21 1991-10-21 エデイター Pending JPH05108332A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP27248491A JPH05108332A (ja) 1991-10-21 1991-10-21 エデイター

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP27248491A JPH05108332A (ja) 1991-10-21 1991-10-21 エデイター

Publications (1)

Publication Number Publication Date
JPH05108332A true JPH05108332A (ja) 1993-04-30

Family

ID=17514571

Family Applications (1)

Application Number Title Priority Date Filing Date
JP27248491A Pending JPH05108332A (ja) 1991-10-21 1991-10-21 エデイター

Country Status (1)

Country Link
JP (1) JPH05108332A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009282788A (ja) * 2008-05-22 2009-12-03 Fuji Electric Systems Co Ltd ソフトウェア作成支援装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009282788A (ja) * 2008-05-22 2009-12-03 Fuji Electric Systems Co Ltd ソフトウェア作成支援装置

Similar Documents

Publication Publication Date Title
WO1990011569A1 (en) Computer-aided engineering
JP5147240B2 (ja) リバーシブルなデザイン・ツリーの変換のための方法とシステム
US5130932A (en) Generating device for production system simulator
US7203925B1 (en) Graphical compiler
JP2001296996A (ja) コンポーネントの自動生成装置および表現方法
JP2538630B2 (ja) テスト項目自動選択システム
JPH05108332A (ja) エデイター
JP2000284815A (ja) プログラム作成装置
JPH06110733A (ja) プログラムのテストケース生成装置
JPH05189274A (ja) 履歴情報管理システム
JPH0528088A (ja) ハードウエア構成情報の自動作成方法
JPS62197826A (ja) システムフロ−仕様生成方式
JPH0444176A (ja) ソフトウエア開発支援ツール
JP2000132295A (ja) Gui動作仕様記述装置及びgui制御装置及びguiシステム
JP4601144B2 (ja) プログラム開発システム、記録媒体および方法
JPH07160536A (ja) 対話型システムのプログラムテスト支援装置
JPH04294424A (ja) コンピュータシステムの対話的画面制御装置
TW552557B (en) Automatic program generating system and the method thereof
JP3019874B2 (ja) プログラム生成/合成装置および方法
JP2701781B2 (ja) 文書編集装置
JPH07121358A (ja) プログラムカストマイズ装置
JPH06309159A (ja) プログラム自動生成装置
JPH06110750A (ja) 関係データベースをアクセス可能なアプリケーションプログラムのメイクファイルの自動生成方法
JPH02100129A (ja) 設計仕様処理方法
JPH11327996A (ja) データベースパッケージオブジェクトの編集装置