JPH07160490A - コーディング支援装置 - Google Patents

コーディング支援装置

Info

Publication number
JPH07160490A
JPH07160490A JP5302087A JP30208793A JPH07160490A JP H07160490 A JPH07160490 A JP H07160490A JP 5302087 A JP5302087 A JP 5302087A JP 30208793 A JP30208793 A JP 30208793A JP H07160490 A JPH07160490 A JP H07160490A
Authority
JP
Japan
Prior art keywords
source program
coding
procedure
analysis
synonymous
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
JP5302087A
Other languages
English (en)
Inventor
Hidehiko Kawakami
英彦 川上
Mitsuo Okumura
光雄 奥村
Masahiro Suzuki
巨裕 鈴木
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.)
Denso Corp
Original Assignee
NipponDenso Co Ltd
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 NipponDenso Co Ltd filed Critical NipponDenso Co Ltd
Priority to JP5302087A priority Critical patent/JPH07160490A/ja
Publication of JPH07160490A publication Critical patent/JPH07160490A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 任意のプログラム言語によるソースプログラ
ムの記述を支援し、しかもより効率のよいオブジェクト
コードの生成を可能ならしめるコーディング支援装置を
提供する。 【構成】 入力されたソースプログラムの字句、構文、
及び意味の解析を通じて明らかにされたソースプログラ
ムの制御構造をもとに同義異文を生成する。この生成し
た同義異文は入力ソースプログラムと共に同一条件にて
コンパイルするとともに、それら生成された各オブジェ
クトコードについてはこれをニーモニック表示してユー
ザの選択を求める。そして、ユーザによる選択のあった
オブジェクトコードに対応するソースプログラムの記述
手法をコーディング規則としてデータベースに記憶し、
出力操作があった場合には、この記憶したコーディング
規則を一覧表として印字若しくは表示する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、任意のプログラム言
語によるソースプログラムの記述を支援するコーディン
グ支援装置に関する。
【0002】
【従来の技術】プログラム言語とは周知のように、コン
ピュータによる各種の処理手続を記述するための言語で
ある。また、それらプログラム言語として、C(シー)
言語をはじめ、C++(シー・プラス・プラス)、Pa
scal(パスカル)、COBOL(コボル)、アセン
ブラ等々、いわゆる高級言語と称されるものから低級言
語と称されるものまで、数多くの言語があることもよく
知られている。
【0003】ところで、これらのプログラム言語には通
常、同一の処理手続を定義するための複数の記述方法が
存在する。そして、それら記述方法の何れを採用するか
は、その言語ユーザであるプログラマに任されているの
が普通である。
【0004】一方、ある任意のプログラム言語におい
て、たとえ同一の処理手続として記述される場合であ
れ、その記述方法が異なれば、その後のコンパイルによ
って得られるオブジェクトコードの内容やコードサイズ
も微妙に異なったものとなる。
【0005】このように、プログラム言語は一般に、あ
る処理手続を記述するのに如何なる記述方法を採用する
かはプログラマの意思に任されているとはいえ、その記
述方法によっては、可読性はもとより、オブジェクトコ
ードのコードサイズ、或いはその実行速度等に違いが来
たすようになる。
【0006】勿論、熟練したプログラマであれば、コン
パイルによって生成されるオブジェクトコードを予測し
つつ、そのコードサイズ等をより効率的なものとし得る
記述方法をその記述しようとする処理内容に応じてその
都度経験的に選択することはできる。
【0007】しかし、経験の少ないプログラマにとって
は、生成されたオブジェクトコードを見てみなければそ
うした判断を下せないのが実情である。このように、生
成されたオブジェクトコードを確認しつつ、それらソー
スプログラムの記述を書き代えていたのでは、プログラ
ムの生産能率も低下せざるを得ない。
【0008】また、一連の関連したプログラムを複数の
プログラマが協同して作成するような場合には、それら
各プログラマによる記述方法の違いに基づく可読性の悪
化やオブジェクトコードのばらつき、更にはそれら記述
方法の修正によって引き起こされる生産能率の低下等も
より一層深刻なものとなる。
【0009】そこで従来は、プログラム言語の記述方
法、すなわちコーディング方法にある一定の規則を設け
ることで、こうした不都合に対処するようにしている。
例えば特開平3−5837号公報に記載の装置では、こ
うしたコーディング規則をファイルとして予め記憶手段
に登録しておき、記述されたソースプログラムがこのコ
ーディング規則に合致しているか否かを自動的に検査す
るようにしている。
【0010】
【発明が解決しようとする課題】このように、予め登録
したコーディング規則に基づいてソースプログラムの記
述を検査するようにすれば、少なくともこれを利用する
ユーザ(プログラマ)にとって、それら複数のユーザ間
で統一され且つ可読性の高いソースプログラムを得るこ
とは確かにできる。
【0011】しかし、上記従来の装置では、例えばコー
ドサイズの小さいより効率的なオブジェクトコードを得
るために、ソースプログラムとしてどのような記述をす
ればよいか等、より望ましいコーディング規則を得るた
めの手法については何等言及されていない。
【0012】したがって、上記登録されたコーディング
規則を修正するにしろ、どのような基準に基づき、どの
ような修正を行えばよいか、等々については不明であ
り、結局は、熟練したプログラマの経験と勘に頼らざる
を得なかった。
【0013】この発明は、こうした実情に鑑みてなされ
たものであり、任意のプログラム言語によるソースプロ
グラムの記述を汎用的に支援し、しかもより効率のよい
オブジェクトコードの生成を可能ならしめるコーディン
グ支援装置を提供することを目的とする。
【0014】
【課題を解決するための手段】こうした目的を達成する
ため、この発明では、( a)任意の手続が記述されたソー
スプログラムが入力される入力手段と、( b)この入力さ
れたソースプログラムの字句を解析して同ソースプログ
ラムを当該記述言語としての一連のトークンに分解する
字句解析手段と、( c)この分解されたトークンに基づき
当該ソースプログラムの構文を解析する構文解析手段
と、( d)この解析された構文の論理構造や文の内容に基
づき当該ソースプログラムに記述された手続の意味を解
析する意味解析手段と、( e)これら各解析結果に基づ
き、当該記述言語において当該ソースプログラムに記述
された手続と意味的に同一の手続からなる異なるソース
プログラムを生成する同義異文生成手段と、( f)前記入
力されたソースプログラム及び前記同義異文として生成
されたソースプログラムを同一条件にてコンパイルする
コンパイル手段と、( g)これらコンパイルによって生成
されたオブジェクトコードを、認識し得る所定の表現に
て可視表示する表示制御手段と、( h)これら表示された
オブジェクトコードに対する適宜の選択操作に基づき、
その選択されたオブジェクトコードに対応するソースプ
ログラムの記述手法を所望のコーディング規則としてこ
れを適宜の記憶手段に格納するコーディング規則格納手
段と、を具えてコーディング支援装置を構成する。
【0015】
【作用】ソースプログラムとして入力されたユーザ(プ
ログラマ)による記述は、上記字句解析手段、構文解析
手段、及び意味解析手段を通じて、トークン(綴り)と
共に、その構文並びに意味が解析され、その所定の制御
構造が明らかにされる。上記同義異文生成手段は、こう
して明らかにされた当該ソースプログラムの制御構造を
もとに、意味的に同一の手続からなる異なるソースプロ
グラム、すなわち同義異文を生成する部分である。例え
ば、明らかにされた当該ソースプログラムの制御構造が
ループ制御として定義されたものであれば、この同義異
文生成手段では、同じループ制御を実現する他の構文構
造のテンプレート(ひな型)をデータベース等から検索
し、同明らかにされた当該ソースプログラムの具体的な
処理内容や値をこのテンプレートに埋め込むことで同義
異文を自動生成する。
【0016】上記構成によればこのように、ユーザによ
って記述されたソースプログラムの他に、該プログラム
と実質的に同一の手続が記述されたいわば他の候補とし
てのソースプログラムが同義異文として自動生成され
る。
【0017】一方、これら候補としての両プログラム
は、上記コンパイル手段を通じて同一条件にてコンパイ
ルされ且つ、上記表示制御手段を通じてそのコンパイル
結果が例えばニーモニック表現にて可視表示される。こ
れにより、オブジェクトコードとして見たそれら両ソー
スプログラムの違い、優劣等は瞭然となる。
【0018】したがってその後、これらオブジェクトコ
ードについての選択操作が行われ、上記コーディング規
則格納手段を通じて記憶手段に格納されるソースプログ
ラムの記述手法とは自ずと、ユーザが所望した手続につ
いてのより好ましいコーディング規則を示すものとな
る。ここに、熟練したプログラマによる経験や勘などは
一切必要とされない。
【0019】なお、こうして格納されたコーディング規
則の用途は任意であり、例えばこれを従来の装置におい
て記憶手段に登録するコーディング規則ファイルとして
用いたり、或いは印字したり、表示装置に表示させるな
どして、いわばガイド的に用いることもできる。
【0020】特に、上記の構成に加えて、( i)適宜の出
力操作に基づき、前記記憶手段に記憶されたコーディン
グ規則についての情報を所定の形式にて出力する出力制
御手段、を更に具え、上記生成された各種手続別の好ま
しいコーディング規則を、例えば表として一覧するもの
とすれば、各ユーザ(プログラマ)共、以後、この出力
されたコーディング規則をもとにソースプログラムを記
述するようにすることで、前述した可読性の悪化やオブ
ジェクトコードのばらつき、更にはそれら記述方法の修
正等によって引き起こされる生産能率の低下などといっ
た問題も良好に解消されるようになる。
【0021】また、上記の構成では、比較表示されるオ
ブジェクトコードに基づき、ユーザがその選択を行うも
のとしたが、オブジェクトコードのコードサイズであれ
ば、上記コンパイルの結果に基づき、同支援装置自身
で、その大小を認識することができる。すなわちこの場
合、上記( g)の表示制御手段、及び( h)のコーディング
規則格納手段に代えて、(g')前記コンパイルによって生
成されたオブジェクトコードのコードサイズを比較する
比較手段と、(h')この比較の結果、よりコードサイズの
小さいオブジェクトコードに対応するソースプログラム
の記述手法を所望のコーディング規則としてこれを適宜
の記憶手段に格納するコーディング規則格納手段と、を
具えるようにすることで、各種手続別の好ましいコーデ
ィング規則についてこれを全て自動的に作成することも
できるようになる。
【0022】また、同コーディング支援装置の上記構成
によれば、ユーザによっては知らない記述方法が上記同
義異文として自動生成されることも有り得る。したがっ
て、上記( a)の入力手段、( b)の字句解析手段、( c)の
構文解析手段、( d)の意味解析手段、及び( e)の同義異
文生成手段に加えて、( j)適宜の出力操作に基づき、前
記同義異文として生成されたソースプログラムを所定の
形式にて出力する出力手段、を具える構成であっても、
コーディング支援装置としての必要最小限の機能は満た
されるようになる。こうして出力される同義異文は、特
に経験の少ないユーザ(プログラマ)にとって、当該記
述言語の言語仕様を理解する上での大きな助けとなる。
勿論、この構成に対して、上記( f)のコンパイル手段を
はじめ、( g)の表示制御手段や( h)のコーディング規則
格納手段、或いは(g')の比較手段や(h')のコーディング
規則格納手段を付加した構成として同コーディング支援
装置を実現することもできる。
【0023】
【実施例】図1に、この発明にかかるコーディング支援
装置の一実施例を示す。この実施例の装置は、ユーザ
(プログラマ)の所望するコーディング規則を、いわゆ
るコンピュータ支援によって作成する装置として構成さ
れている。
【0024】すなわち同装置において、入力装置1は、
例えばキーボードやマウス等からなって、ソースプログ
ラムSPの入力などに用いられる周知の装置である。な
お、この入力されるソースプログラムSPは、一旦入力
されて図示しないディスク装置等に保管されているもの
であってもよい。その場合であっても、この入力装置1
を用いての適宜の入力操作を通じて、ディスク装置等に
あるソースプログラムSPが同実施例の装置に読み込ま
れるようになる。
【0025】また、表示装置2は、例えばCRTディス
プレイや液晶ディスプレイ等からなって、上記入力され
るソースプログラムSPの内容をユーザにエコーバック
したり、後述するオブジェクトコードのニーモニックや
操作案内等を可視表示するこれも周知の出力装置であ
る。
【0026】また、同じく出力装置である印字装置3も
周知であり、この実施例の装置では特に、同装置を通じ
て作成されるコーディング規則の印字出力に用いられる
ものとする。
【0027】また、入出力制御部4は、これら入力装置
1、表示装置2、及び印字装置3とコンピュータ本体と
のインターフェースとして、 ・入力装置1による入力内容や操作内容を解読し、該解
読した内容をコンピュータ本体に取り込む。 ・コンピュータ本体から表示指令のあった情報について
はこれを、表示装置2を通じて表示制御する。 ・コンピュータ本体から印字指令のあった情報について
はこれを、印字装置2を通じて印字制御する。 といった機能を実現する部分である。
【0028】一方、同実施例の装置において、支援制御
部5、データベース6、字句解析部7、構文解析部8、
意味解析部9、同義異文生成部10、及びコンパイル部
11は何れも、コンピュータ本体にその制御プログラム
を通じて仮想的に構成された部分である。
【0029】まず、支援制御部5は、上記入出力制御部
4との間での各種情報の授受を行いつつ、以下に説明す
る各部を統括的に管理且つ制御して、上記入力されるソ
ースプログラムSPに基づくコーディング規則の作成を
行う部分である。なお、この支援制御部5は、その内部
に作業領域を有し、この作業領域にソースプログラムS
Pを読み込んでこれを所要に内部処理する。
【0030】また、データベース6は、同図1に付記す
るように、対象となるプログラム言語についての単語辞
書、構文規則、内部表現(論理構造や文情報等)、及び
コーディング規則が格納されている部分である。以下に
説明する各解析部では、これら格納されている情報をそ
の都度参照して、入力されたソースプログラムSPにつ
いてのそれぞれ該当する解析を実行するようになる。
【0031】字句解析部7、構文解析部8、及び意味解
析部9の各解析部は、データベース6に格納されている
上記情報に基づき、それぞれ次のような解析を実行する
部分である。
【0032】字句解析部7は、上記作業領域(支援制御
部5)に読み込まれているソースプログラムSPの字句
を解析して、同ソースプログラムSPを当該記述言語と
しての一連のトークン(綴り)に分解する部分である。
この字句の解析には、データベース6に格納されている
単語辞書が参照される。
【0033】例えば、対象となるプログラム言語がC言
語であり、ソースプログラムSPには、図2に例示する
ような記述があったとする。参考までにその意味を解説
すると次のようである。 main(){ int x, i; /* 整数型の変数x及びiを定義 */ for(i=0; i<=10; ++i){ /* iを0に初期化し、これが10以下である間、 iをインクリメント */ x = x + i; /* 変数xに(x+i)を代入 */ } } このようなソースプログラムSPの記述に対し、この字
句解析部7では、以下の態様で、これをトークンに分解
する。 因みにC言語の場合、トークンとしては、「識別子」、
「キーワード」、「定数」、「文字列リテラル」、「演
算子」、及び「他の区切子」の6種がある。
【0034】構文解析部8は、こうして分解されたトー
クンに基づいて、ソースプログラムSPの構文構造を明
らかにする部分である。この構文の解析には、データベ
ース6に格納されている構文規則が参照される。
【0035】例えばここでの例の場合、構文解析部8で
は、上記一連のトークンから、このソースプログラムS
Pの構文構造が、「for文からなるループ制御」であ
る旨を解析する。
【0036】そして、意味解析部9は、上記分解された
一連のトークン、並びに上記明らかにされた構文構造に
基づいて、当該ソースプログラムSPによる処理内容
(手続)の全てを明らかにする部分である。この意味の
解析には、データベース6に内部表現として格納されて
いる論理構造や文情報等が参照される。
【0037】例えばここでの例の場合、意味解析部9で
は、上記記述からなるソースプログラムSPに対し、図
3に例示する態様にて、その処理内容を明らかにする。
この図3は、支援制御部5内の作業領域に実際には内部
表現として展開される同解析結果を模式的に示したもの
である。同図3に示されるように、この段階で「処理項
目」が「for文からなるループ制御」であること、ま
た「具体的処理」として、 ・「初期値の設定」は「i=0;」 ・「式の評価」は「i<=10;」 ・「付加実行文」は「++i;」 ・「実行単位」は「x=x+i;」 であることが全て明らかにされる。
【0038】こうして明らかにされた当該ソースプログ
ラムSPの処理内容は、上記支援制御部5を通じて同義
異文生成部10に引き渡される。同義異文生成部10
は、こうしたソースプログラムSPについての解析結果
に基づいて、当該記述言語による同義異文、すなわちソ
ースプログラムSPと同じ処理内容を有していて記述方
法の異なるプログラム(ソースプログラム)を生成する
部分である。
【0039】例えばここでの例の場合、同義異文生成部
10では、上記解析結果(図3)に基づいて、まず「f
or文」以外のループ制御の手段としての「while
文」をデータベース6から検索し、図4に示される態様
にて、この「while文」による構文テンプレートを
作成する。そしてその後、この作成したテンプレート
に、同解析の結果明らかになった具体的処理内容、すな
わち上記「初期値の設定(i=0;)」、「式の評価
(i<=10;)」、「付加実行文(++i;)」、及
び「実行単位(x=x+i;)」をそれぞれ埋め込ん
で、図5に示されるような同義異文を完成する。この図
5に示されるプログラムの処理内容が、先の図2に示し
たソースプログラムSPの処理内容と意味的に同一のも
のであることはいうまでもない。
【0040】こうして同義異文として生成されたプログ
ラムは次に、先の入力されたソースプログラムSPと共
に、コンパイル部11に渡される。コンパイル部11
は、これら2種類のプログラムを各別にコンパイルして
それぞれのオブジェクトコードを生成する部分である。
なおこのコンパイルは、双方のプログラムに対し同一の
条件で実行される。すなわちソースプログラムSPの入
力に際して何らかのコンパイルオプションが指定されて
いれば、上記同義異文として生成されたプログラムに対
しても同一のコンパイルオプションが指定されるように
なっている。コンパイルオプションとは周知のように、
「コードサイズの優先」とか「実行速度の優先」とかを
コンパイル部11に対して指定するための所定の情報で
ある。
【0041】そして、このコンパイルによって生成され
たオブジェクトコードは、支援制御部5によって、いわ
ゆるアセンブラ展開形に変換(逆アセンブル)され、そ
の変換結果が、例えば図6に示される態様にて、表示装
置2に表示制御される。
【0042】すなわち図6は、表示装置2の表示画面の
一例として、入力されたソースプログラムSPを「ソー
スプログラム1」とし、生成された同義異文を「ソース
プログラム2」として、それらの各コンパイル結果を対
比表示している様子を模式的に示したものである。この
ように、コンパイル結果である各オブジェクトコードに
ついては、アセンブラ展開形としてのニーモニック表現
を用いて表示することで、オブジェクトコードとして見
た場合のそれら両プログラムの違い、優劣等はユーザに
とっても瞭然となる。参考までに、図6に例示した「オ
ブジェクトコード1」及び「オブジェクトコード2」の
内容を解説するとそれぞれ以下のようである。 ・オブジェクトコード1 1: LD (i),10 ;(i)に10をロード 2: LABEL1 JZE LABEL2 ;(i)=0であればLABEL2にジャンプ 3: ADD (x),(i) ;(x)に(i)加える 4: SUB (i),1 ;(i)から1を減ずる 5: JMP LABEL1 ;LABEL1にジャンプ 6: LABEL2 ;終了 ・オブジェクトコード2 1: LD (i),0 ;(i)に0をロード 2: JMP LABEL2 ;LABEL2にジャンプ 3: LABEL1 ADD (x),(i) ;(x)に(i)加える 4: ADD (i),1 ;(i)に1を加える 5: LABEL2 CMP (i),10 ;(i)と10とを比較する 6: JLE LABEL1 ;10以下であればLABEL1にジャンプ また、同図6に併せ示すように、この表示画面には、こ
れら「オブジェクトコード1」及び「オブジェクトコー
ド2」の何れがサイズ的に効率のよいコードであるかを
ユーザに対して選択要求する表示が含まれる。因みに上
記の例の場合には、「オブジェクトコード1」の方がよ
り効率のよいコードとして生成されており、ユーザとし
ても、この選択要求に対しては「1」を選択することと
なる。該選択操作は、入力装置1(キーボードやマウス
等)を通じて行われる。
【0043】こうして、ユーザによる選択操作がある
と、その旨を入出力制御部4を介して認知した支援制御
部5は、その選択されたオブジェクトコードに対応する
ソースプログラムの記述方法を、採用すべきコーディン
グ規則として、データベース6に格納する。因みに上記
の例の場合には、 ・「ループ制御」として「for文」と「while
文」とを比較した結果、「for文」を採用すべきコー
ディング規則とする。旨の情報が、データベース6に格
納されることとなる。
【0044】この実施例のコーディング支援装置では、
その都度入力される各種ソースプログラムSPに対し、
全て上記に準じたかたちで、その解析、同義異文生成、
コンパイル、並びにユーザ選択に基づくコーディング規
則の格納処理を繰り返すようになる。
【0045】そしてその後、ユーザによるコーディング
規則の出力要求があれば、これを受けた支援制御部5で
は、データベース6に格納されているコーディング規則
が、例えば図7に示されるような一覧表形式にて出力さ
れるよう、その必要とされる情報を入出力制御部4に渡
す。該出力要求が印字要求であれば、印字装置3を通じ
たプリントアウトPRTとしてこのコーディング規則が
出力され、同出力要求が表示要求であれば、表示装置2
を通じた画面出力として同コーディング規則が出力され
るようになる。
【0046】図8は、同実施例の装置によるコーディン
グ支援手順(コーディング規則作成手順)を総括して示
したものであり、以下、この図8を併せ参照して、装置
全体としての動作、並びにその処理手順を更に説明す
る。
【0047】すなわちいま、入力装置1を通じてソース
プログラムSPの入力があった旨を判断すると(ステッ
プ100)、支援制御部5は、この入力されたソースプ
ログラムSPを前記作業領域に読み込み、字句解析部7
を起動して、その字句解析を開始する(ステップ10
1)。こうした字句解析によって、同ソースプログラム
SPの記述が当該記述言語としての一連のトークンに分
解されるようになることは上述した通りである。
【0048】こうして、当該ソースプログラムSPにつ
いての字句解析を終えた支援制御5は次に、構文解析部
8を起動し、該構文解析部8を通じて、上記分解された
トークンに基づく構文解析を実行する(ステップ10
2)。この構文解析の実行によって、当該ソースプログ
ラムSPの構文構造が明らかになる。例えば図2に例示
したソースプログラムSPにおいて、そこに「for文
によるループ制御」が記述されていることもこの段階で
明らかになる。
【0049】こうして構文解析を終えると、支援制御部
5は更に、意味解析部9を起動し、該意味解析部9を通
じて、上記分解された一連のトークン、並びに上記明ら
かにされた構文構造に基づく意味解析を実行する(ステ
ップ103)。この意味解析の実行によって、当該ソー
スプログラムSPの処理内容の全てが明らかになる。例
えば図2に例示したソースプログラムSPに対しては、
図3に示される態様でその処理内容の全てが評価される
ようになることも上述した。
【0050】こうして、当該ソースプログラムSPにつ
いての全ての解析を終えると、支援制御部5は次に、同
義異文生成部10を起動し、該同義異文生成部10を通
じてソースプログラムSPの同義異文を生成する(ステ
ップ104)。これについても既に詳述したように、例
えば図2に例示されるソースプログラムSPに対して
は、その解析結果に基づき、例えば図5に示される態様
で、その同義異文が生成されるようになる。
【0051】こうして同義異文を得た支援制御部5は更
に、コンパイル部11を起動し、該コンパイル部11を
通じて、この同義異文とソースプログラムSPとを各々
コンパイルする(ステップ105)。なお、ソースプロ
グラムSPの入力の際、これに何らかのコンパイルオプ
ションが指定されていた場合には、同義異文に対しても
同一のコンパイルオプションを指定してこれをコンパイ
ルする。
【0052】コンパイルの結果、オブジェクトコードが
生成されると、支援制御部5はこれを受け取り、それら
オブジェクトコードをアセンブラ展開形に変換(逆アセ
ンブル)した後、図6に例示した態様で、それらニーモ
ニック表現したオブジェクトコードを表示装置2に対比
表示する(ステップ106)。なお、この表示画面に
は、ユーザに対するそれらオブジェクトコードの選択要
求も併せ表示される。
【0053】この選択要求に対して、ユーザによる選択
操作があれば(ステップ107)、その旨判断した支援
制御部5は、その選択されたオブジェクトコードに対応
するソースプログラムの記述方法を、採用すべきコーデ
ィング規則として、データベース6に格納する(ステッ
プ108)。
【0054】そしてその後、ユーザによる終了操作があ
れば(ステップ109)、当該支援処理を終了し、ユー
ザによる印字要求を示す操作があれば(ステップ11
0)、図7に例示したようなコーディング規則を印字装
置3を通じて印字出力した後(ステップ111)、当該
支援処理を終了する。なお、この図8では割愛したが、
ユーザによる表示要求を示す操作があった場合には、同
コーディング規則は表示装置2を通じて画面出力される
ようになる。
【0055】以上のように、この実施例のコーディング
支援装置によれば、ユーザによって記述されたソースプ
ログラムの他に同義異文が自動生成されるようになる。
また、同実施例のコーディング支援装置によれば、これ
ら元のソースプログラムと生成された同義異文とは同一
条件にてコンパイルされた後、その各オブジェクトコー
ドがニーモニックとして対比表示されるようになる。
【0056】このため、オブジェクトコードとして見た
場合のそれら両プログラムの違い、優劣等はユーザにと
っても瞭然となり、ソースプログラムとして何れの記述
方法が効率のよいオブジェクトコードを生成し得る記述
方法であるかが容易に判断できるようになる。
【0057】そして、これらオブジェクトコードについ
ての選択操作が行われ、上記データベースに格納される
ソースプログラムの記述手法とは自ずと、ユーザが要求
する処理内容についてのより好ましいコーディング規則
を示すものとなる。
【0058】また、この実施例のコーディング支援装置
によれば、こうしてデータベースに蓄積されるコーディ
ング規則についての情報が、ユーザによる出力要求操作
に応じて一覧表として出力されるようになる。
【0059】したがって、各ユーザが全て、以後、この
出力されたコーディング規則をもとにソースプログラム
を記述するようにすれば、可読性の悪化やオブジェクト
コードのばらつき、更にはそれら記述方法の修正等によ
って引き起こされる生産能率の低下などといった問題も
自ずと解消されるようになる。
【0060】ところで、上記実施例の装置では、サイズ
的により効率のよいオブジェクトコードの選択をユーザ
に委ねる構成をとっているが、こうしたコードサイズの
比較であれば、上記支援制御装置5自身がその大小を判
断することも可能である。
【0061】そこで次に、この発明にかかるコーディン
グ支援装置の第2の実施例として、支援制御装置5自身
が各オブジェクトコードのコードサイズを比較して、サ
イズ的により効率のよいオブジェクトコードを選択する
装置について説明する。
【0062】ただし、この第2の実施例の装置におい
て、その基本的な構成は、図1に示した先の実施例の構
成に準ずるものであり、ここでの改めての図示、並びに
それら構成についての重複する説明は割愛する。
【0063】図9は、この第2の実施例の装置によるコ
ーディング支援手順(コーディング規則作成手順)につ
いて示したものであり、以下では、この図9に基づい
て、同第2の実施例の装置の動作、並びにその処理手順
を説明する。ただしこの図9において、そのステップ2
00〜ステップ205にかかる処理は、先の実施例の装
置の図8におけるステップ100〜ステップ105にか
かる処理と同一であり、これらの各処理についてもその
重複する説明は割愛する。
【0064】さて、この第2の実施例の装置にあって、
支援制御部5は、コンパイルの実行(ステップ205)
によって得られた各オブジェクトコードのコードサイズ
を自ら比較する(ステップ206)。いわゆる複数ファ
イルのファイルサイズを比較する手法自体は周知であ
り、支援制御部5によるこうした比較も、それら周知の
手法を用いて容易に実現することができる。
【0065】こうしてコードサイズの比較を実行した支
援制御部5は引き続き、よりコードサイズの小さいオブ
ジェクトコードに対応するソースプログラムの記述方法
を選択し(ステップ207)、該選択したソースプログ
ラムの記述方法を、採用すべきコーディング規則として
データベース6に格納する(ステップ208)。
【0066】そしてその後は、先の実施例の装置の場合
と同様、ユーザによる終了操作があれば(ステップ20
9)、当該支援処理を終了する。また、ユーザによる印
字要求を示す操作があれば(ステップ210)、図7に
例示したようなコーディング規則を印字装置3を通じて
印字出力した後(ステップ211)、当該支援処理を終
了する。
【0067】このように、この第2の実施例の装置によ
れば、効率的なオブジェクトコードを生成し得るコーデ
ィング規則について、これを全て自動的に作成すること
ができるようになる。
【0068】また、これら各実施例の装置の上記構成に
よれば、ユーザによっては知らない記述方法が前述した
同義異文として自動生成されることも有り得る。したが
って、同装置のこうした機能を積極的に利用すれば、す
なわちユーザによる出力要求に応じてそれら同義異文も
可視出力されるようにすれば、特に経験の少ないユーザ
にとっては、その出力される同義異文が当該記述言語の
言語仕様を理解する上での大きな助けとなる。
【0069】そこで更に、この発明にかかるコーディン
グ支援装置の第3の実施例として、同義異文が生成され
た時点でユーザによる出力要求があれば、その生成され
た同義異文を、例えばユーザが入力したソースプログラ
ムと対比して出力することのできる装置について説明す
る。
【0070】ただし、この第3の実施例の装置において
も、その基本的な構成は、図1に示した実施例の構成に
準ずるものであり、ここでの改めての図示、並びにそれ
ら構成についての重複する説明は割愛する。
【0071】図10は、この第3の実施例の装置による
コーディング支援手順について示したものであり、以下
では、この図10に基づいて、同第3の実施例の装置の
動作、並びにその処理手順を説明する。なお、この図1
0においても、そのステップ300〜ステップ304に
かかる処理は、先の実施例の装置の図8におけるステッ
プ100〜ステップ104にかかる処理と同一である。
したがって、これらの各処理についてもその重複する説
明は割愛する。
【0072】さて、この第3の実施例の装置にあって、
支援制御部5は、同義異文が自動生成された時点(ステ
ップ304)でユーザによる出力要求(出力指令)の有
無を確認する(ステップ305)。
【0073】そして、出力要求があった旨判断した支援
制御部5は、該生成された同義異文が、例えばユーザが
入力したソースプログラムSPと対比されるよう、表示
装置2或いは印字装置3を通じてこれを出力する(ステ
ップ306)。
【0074】支援制御部5はその後、ユーザによる終了
操作があれば(ステップ307)、当該支援処理を終了
し、同終了操作がなかった場合、或いは上記出力要求が
なかった場合は、先の実施例と同様、それらプログラム
(ソースプログラム及びその同義異文)についてのコン
パイルを実行する(図8ステップ105、または図9ス
テップ205)。
【0075】このように、この第3の実施例によれば、
自動生成された同義異文がユーザによる出力要求に応じ
て可視出力されるようになる。なお、特にこの第3の実
施例にあっては、コンパイル部11を削除し、図10の
ステップ307或いはステップ305までの処理に対応
した機能しか具えない小規模な装置として同コーディン
グ支援装置を構成することもできる。このような構成で
あっても、コーディング支援装置としてのこうした必要
最小限の機能は満たされ、しかもこうした構成によれ
ば、例えばBASIC(ベーシック)等のインタプリタ
型のプログラム言語についても、同コーディング支援装
置の適用が可能となる。
【0076】ところで、上記何れの実施例であれ、同義
異文生成部10を通じて自動生成される同義異文の数は
1文だけとは限らない。この同義異文は、ソースプログ
ラムSPの構文構造等に応じてその同義の構文が検索さ
れるものであり、同義の構文が更に複数存在する場合に
は、この同義異文としても自ずと複数の文が生成される
ようになる。
【0077】また、データベース6に格納されたコーデ
ィング規則については、必ずしもこれを表示装置2や印
字装置3を通じて出力する必要はない。例えば、こうし
てデータベース6に格納された状態であっても、従来の
コーディング規則検査装置において記憶手段に登録され
るコーディング規則ファイルとして用いることはできる
ようになる。
【0078】また、図7に例示したコーディング規則の
出力例も一例にすぎない。例えば、「多方向分岐」の項
目についていえば、 ・3方向迄の分岐であれば、採用記述方法として「if
−else文」を用い、4方向以上の分岐となるとき
に、同採用記述方法として「switch文」を用い
る。などといった態様で、更に木目細かい規則としてこ
れを作成し、または出力するようにしてもよい。
【0079】
【発明の効果】以上説明したように、この発明によれ
ば、より効率のよいオブジェクトコードを生成する上で
望ましいコーディング規則を容易に得ることができ、ユ
ーザ(プログラマ)によるその後のソースプログラムの
記述をより強力に支援することができるようになる。
【0080】またこの発明によれば、ユーザによって記
述されたソースプログラムと実質的に同一の手続が記述
された同義異文が自動生成されるため、経験の少ないユ
ーザも安心して利用することができるようになる。特に
経験の少ないユーザにとって、こうして自動生成される
同義異文は、当該記述言語の言語仕様を理解する上での
大きな助けとなる。
【図面の簡単な説明】
【図1】この発明にかかるコーディング支援装置につい
てその一実施例構成を示すブロック図である。
【図2】同実施例のコーディング支援装置に入力される
ソースプログラムの一例を模式的に示す略図である。
【図3】図2に例示したソースプログラムについてその
解析結果の一例を模式的に示す略図である。
【図4】図3に例示した解析結果に基づいて生成される
同義異文の構文構造についてその一例を模式的に示す略
図である。
【図5】図4に例示した構文構造に図3に例示した解析
結果を埋め込んで生成される図2に例示したソースプロ
グラムの同義異文の一例を模式的に示す略図である。
【図6】図1に示される表示装置の表示画面の一例とし
て、入力されたソースプログラムと生成された同義異文
との各コンパイル結果についてのニーモニック表現、並
びにユーザに対する選択要求の画面表示例を示す略図で
ある。
【図7】図1に示される印字装置による出力例として、
同実施例のコーディング支援装置によって作成されたコ
ーディング規則の一例を示す略図である。
【図8】同実施例のコーディング支援装置によるコーデ
ィング支援手順(コーディング規則作成手順)について
その一例を示すフローチャートである。
【図9】この発明にかかるコーディング支援装置の第2
の実施例によるコーディング支援手順(コーディング規
則作成手順)を示すフローチャートである。
【図10】この発明にかかるコーディング支援装置の第
3の実施例によるコーディング支援手順を示すフローチ
ャートである。
【符号の説明】
1…入力装置、2…表示装置、3…印字装置、4…入出
力制御部、5…支援制御部、6…データベース、7…字
句解析部、8…構文解析部、9…意味解析部、10…同
義異文生成部、11…コンパイル部。

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】任意の手続が記述されたソースプログラム
    が入力される入力手段と、 この入力されたソースプログラムの字句を解析して同ソ
    ースプログラムを当該記述言語としての一連のトークン
    に分解する字句解析手段と、 この分解されたトークンに基づき当該ソースプログラム
    の構文を解析する構文解析手段と、 この解析された構文の論理構造や文の内容に基づき当該
    ソースプログラムに記述された手続の意味を解析する意
    味解析手段と、 これら各解析結果に基づき、当該記述言語において当該
    ソースプログラムに記述された手続と意味的に同一の手
    続からなる異なるソースプログラムを生成する同義異文
    生成手段と、 前記入力されたソースプログラム及び前記同義異文とし
    て生成されたソースプログラムを同一条件にてコンパイ
    ルするコンパイル手段と、 これらコンパイルによって生成されたオブジェクトコー
    ドを、認識し得る所定の表現にて可視表示する表示制御
    手段と、 これら表示されたオブジェクトコードに対する適宜の選
    択操作に基づき、その選択されたオブジェクトコードに
    対応するソースプログラムの記述手法を所望のコーディ
    ング規則としてこれを適宜の記憶手段に格納するコーデ
    ィング規則格納手段と、 を具えることを特徴とするコーディング支援装置。
  2. 【請求項2】請求項1に記載のコーディング支援装置に
    おいて、 適宜の出力操作に基づき、前記記憶手段に記憶されたコ
    ーディング規則についての情報を所定の形式にて出力す
    る出力制御手段、 を更に具えることを特徴とするコーディング支援装置。
  3. 【請求項3】任意の手続が記述されたソースプログラム
    が入力される入力手段と、 この入力されたソースプログラムの字句を解析して同ソ
    ースプログラムを当該記述言語としての一連のトークン
    に分解する字句解析手段と、 この分解されたトークンに基づき当該ソースプログラム
    の構文を解析する構文解析手段と、 この解析された構文の論理構造や文の内容に基づき当該
    ソースプログラムに記述された手続の意味を解析する意
    味解析手段と、 これら各解析結果に基づき、当該記述言語において当該
    ソースプログラムに記述された手続と意味的に同一の手
    続からなる異なるソースプログラムを生成する同義異文
    生成手段と、 前記入力されたソースプログラム及び前記同義異文とし
    て生成されたソースプログラムを同一条件にてコンパイ
    ルするコンパイル手段と、 これらコンパイルによって生成されたオブジェクトコー
    ドのコードサイズを比較する比較手段と、 この比較の結果、よりコードサイズの小さいオブジェク
    トコードに対応するソースプログラムの記述手法を所望
    のコーディング規則としてこれを適宜の記憶手段に格納
    するコーディング規則格納手段と、 を具えることを特徴とするコーディング支援装置。
  4. 【請求項4】請求項3に記載のコーディング支援装置に
    おいて、 適宜の出力操作に基づき、前記記憶手段に記憶されたコ
    ーディング規則についての情報を所定の形式にて出力す
    る出力制御手段、 を更に具えることを特徴とするコーディング支援装置。
  5. 【請求項5】任意の手続が記述されたソースプログラム
    が入力される入力手段と、 この入力されたソースプログラムの字句を解析して同ソ
    ースプログラムを当該記述言語としての一連のトークン
    に分解する字句解析手段と、 この分解されたトークンに基づき当該ソースプログラム
    の構文を解析する構文解析手段と、 この解析された構文の論理構造や文の内容に基づき当該
    ソースプログラムに記述された手続の意味を解析する意
    味解析手段と、 これら各解析結果に基づき、当該記述言語において当該
    ソースプログラムに記述された手続と意味的に同一の手
    続からなる異なるソースプログラムを生成する同義異文
    生成手段と、 適宜の出力操作に基づき、この同義異文として生成され
    たソースプログラムを所定の形式にて出力する出力手段
    と、 を具えることを特徴とするコーディング支援装置。
JP5302087A 1993-12-01 1993-12-01 コーディング支援装置 Pending JPH07160490A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5302087A JPH07160490A (ja) 1993-12-01 1993-12-01 コーディング支援装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5302087A JPH07160490A (ja) 1993-12-01 1993-12-01 コーディング支援装置

Publications (1)

Publication Number Publication Date
JPH07160490A true JPH07160490A (ja) 1995-06-23

Family

ID=17904773

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5302087A Pending JPH07160490A (ja) 1993-12-01 1993-12-01 コーディング支援装置

Country Status (1)

Country Link
JP (1) JPH07160490A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7343443B1 (en) 2003-07-08 2008-03-11 Hewlett-Packard Development Company, L.P. Updated package generation based on analysis of bank dependency
US7886093B1 (en) 2003-07-31 2011-02-08 Hewlett-Packard Development Company, L.P. Electronic device network supporting compression and decompression in electronic devices
WO2014132668A1 (ja) * 2013-03-01 2014-09-04 株式会社 東芝 多分岐判断構文の最適化処理装置
US8893110B2 (en) 2006-06-08 2014-11-18 Qualcomm Incorporated Device management in a network
US9081638B2 (en) 2006-07-27 2015-07-14 Qualcomm Incorporated User experience and dependency management in a mobile device

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7343443B1 (en) 2003-07-08 2008-03-11 Hewlett-Packard Development Company, L.P. Updated package generation based on analysis of bank dependency
US7886093B1 (en) 2003-07-31 2011-02-08 Hewlett-Packard Development Company, L.P. Electronic device network supporting compression and decompression in electronic devices
US8893110B2 (en) 2006-06-08 2014-11-18 Qualcomm Incorporated Device management in a network
US9081638B2 (en) 2006-07-27 2015-07-14 Qualcomm Incorporated User experience and dependency management in a mobile device
WO2014132668A1 (ja) * 2013-03-01 2014-09-04 株式会社 東芝 多分岐判断構文の最適化処理装置
JP2014194759A (ja) * 2013-03-01 2014-10-09 Toshiba Corp 多分岐判断構文の最適化処理装置
US9715374B2 (en) 2013-03-01 2017-07-25 Kabushiki Kaisha Toshiba Multi-branch determination syntax optimization apparatus

Similar Documents

Publication Publication Date Title
JP3009215B2 (ja) 自然語処理方法および自然語処理システム
Pierce Types and programming languages
Briscoe et al. A Formalism and Environment for the Development of a Large Grammar of English.
EP0370778A2 (en) Method for manipulating digital text data
JPH08202545A (ja) ターゲット言語コードを生成するためのオブジェクト指向システム及びその方法
JPH06110701A (ja) コンピユータ・プログラム言語変換装置及びその方法
Spinellis et al. Lightweight Languages as Software Engineering Tools.
US20040237036A1 (en) Methods and systems for generating supporting files for commands
JPH07160490A (ja) コーディング支援装置
Andrews et al. The formal definition of Modula-2 and its associated interpreter
JP2002288004A (ja) プログラムソース処理装置、プログラムソース処理方法、およびプログラムソース処理プログラム
JP3003459B2 (ja) プログラム作成支援装置
JP4310401B2 (ja) 知識コードの生成方法およびその装置
JPH0689166A (ja) 部品処理記述展開方式
Meyer Cepage: Toward computer-aided design of software
Eeg-Olofsson Software Systems for Computational Morphology—An Overview
Boitet Current projects at GETA on or about Machine Translation
Babich et al. An approach to compiler construction for a general-purpose simulation language
Ramalho et al. Document Semantics: two approaches
JPH04340130A (ja) プログラム情報のドキュメント化方式
Johnstone et al. A tutorial guide to rdp for new users
CN116737161A (zh) 一种多语言编译方法、系统、装置及计算机存储介质
Almufti A SYSTEM FOR THE MANIPULATION
Bird et al. A practical approach to software engineering by using an interaction handler and skeleton code generator
Guruprasad Lightweight Languages as Software Engineering Tools

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees