JP2000076056A - 入力仕様が拡張可能であるコード自動生成システム - Google Patents

入力仕様が拡張可能であるコード自動生成システム

Info

Publication number
JP2000076056A
JP2000076056A JP10244995A JP24499598A JP2000076056A JP 2000076056 A JP2000076056 A JP 2000076056A JP 10244995 A JP10244995 A JP 10244995A JP 24499598 A JP24499598 A JP 24499598A JP 2000076056 A JP2000076056 A JP 2000076056A
Authority
JP
Japan
Prior art keywords
data structure
access function
input specification
code generation
input
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
JP10244995A
Other languages
English (en)
Inventor
Natsuko Noda
夏子 野田
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP10244995A priority Critical patent/JP2000076056A/ja
Publication of JP2000076056A publication Critical patent/JP2000076056A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 ユーザ自身が入力仕様の形式を定義できる入
力仕様が拡張可能であるコード自動生成システムを提供
すること。 【解決手段】 入力装置1から処理装置2に入力された
入力仕様はデータ構造定義手段23により定義された入
力仕様のデータ構造表現231をアクセス関数ジェネレ
ータ22に入力して、データ構造を解析し、データ構造
中の要素間に関連がある要素に対して関連する要素を取
り出すためのアクセス関数を生成するとともに、データ
構造中の要素で再帰的な関連がある場合に、関連の深さ
を求めるアクセス関数を生成し、コード生成部21はス
クリプト24にアクセス関数を呼ぶ記述があると、イン
タプリタ212がアクセス関数を実行して入力仕様中の
データを取得してスクリプト24に展開して、スクリプ
トがインタプリタ212によって実行され、コードが生
成される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、入力仕様からプ
ログラムなどの、コードを生成するジェネレータにおい
て、ユーザ自身が入力の形式を定義し、それに応じたコ
ードを生成することができるようにした入力仕様が拡張
可能であるコード自動生成システムに関する。
【0002】
【従来の技術】入力仕様からコードを自動生成する方法
としては、入力仕様から出力コードへの変換方法を表現
する変換規則集合を内部に持つことにより実現する方法
が知られている。例えば、特開平5−250174号公
報には、入力プログラムを構文解析したものを、構文木
の対の集合で表現される変換規則集合を用いて変換して
出力プログラムを生成するプログラム変換方式が記載さ
れている。
【0003】また、生成の方法を示す変換規則に相当す
るものを簡単なスクリプトで記述することにより、さら
に簡便にコード生成を実現する方法も従来から知られて
いる。
【0004】
【発明が解決しようとする課題】しかし、このような従
来技術には、次に列挙するような課題がある。第1の課
題は、記述しなければならないスクリプトの量が多く、
現実的にはユーザが自由にスクリプトを記述することが
できないことである。その理由は、入力仕様のデータの
構造を解析し、そこから生成に必要な個々のデータを取
り出す処理は数が多く、その処理をすべてスクリプトで
記述するのは難しいためである。
【0005】また、第2の課題は、ユーザがスクリプト
を記述するためには入力仕様の形式を予め限定しておか
なければならないということである。その理由は、入力
仕様のデータの構造を解析し、必要なデータを取り出す
処理をユーザが記述しなくても良いように予め提供する
ためには、入力仕様の形式を知っておかなければならな
いためである。加えて、上記の理由から、ジェネレータ
は入力仕様の形式が固定されたものでならなければなら
ず、ユーザがカスタマイズすることが困難であるという
課題があった。
【0006】この発明は、上記従来の課題を解決するた
めになされたもので、ユーザ自身が入力仕様の形式を定
義することができる入力仕様が拡張可能であるコード自
動生成システムを提供することを目的とする。
【0007】
【課題を解決するための手段】上記目的を達成するため
に、この発明の入力仕様が拡張可能であるコード自動生
成システムは、入力仕様を入力する入力装置と、ユーザ
が定義した入力仕様のデータ構造からデータ構造アクセ
ス関数を生成し、このデータ構造アクセス関数を参照し
てスクリプトにアクセス関数を呼ぶ記述が存在するとイ
ンタプリタはアクセス関数を実行して入力仕様中のデー
タを取得してスクリプトに展開するとともに前記インタ
プリタによって実行されるコードを生成する処理装置
と、前記処理装置で生成されたコードを出力する出力装
置とを備えることを特徴とする。
【0008】この発明によれば、入力装置により入力仕
様を処理装置に入力する。処理装置において定義された
データ構造表現からデータ構造の各要素にアクセスする
データ構造アクセス関数を生成する。この生成されたデ
ータ構造アクセス関数を参照しながら、スクリプト中に
アクセス関数を呼ぶ記述の存在の有無を調べ、アクセス
関数を呼ぶ記述があると、インタプリタはアクセス関数
を実行して入力仕様中のデータを取得してスクリプトを
展開し、スプリクトがインタプリタによって実行され、
入力装置から入力された入力仕様からコードを生成し、
出力装置にこのコードを出力する。
【0009】したがって、この発明では、ユーザ自身が
入力仕様の形式を定義することができ、かつ定義した入
力仕様形式に基づいて入力仕様のデータ構造にアクセス
する関数が生成されるので、ユーザは生成されたアクセ
ス関数を用いてスクリプトを記述することができ、コー
ドの生成方法をユーザがカスタマイズすることができ
る。
【0010】
【発明の実施の形態】以下、この発明の入力仕様が拡張
可能であるコード自動生成システムの実施の形態につい
て図面に基づき説明する。図1はこの発明による第1実
施の形態の構成を示すブロック図である。まず、第1実
施の形態の概要から説明すると、この図1に示す第1実
施の形態では、入力装置1と、処理装置2と、出力装置
3とで構成されている。入力装置1は入力仕様を入力す
るための装置であり、処理装置2はこの入力装置1から
の入力仕様を受け取り、コードを生成し、このコードを
出力装置3に出力するようにしている。
【0011】前記処理装置2は、コード生成部21、ア
クセス関数ジェネレータ22、データ構造定義手段23
を備えている。データ構造定義手段23はユーザが入力
仕様のデータ構造表現231を定義して、前記アクセス
関数ジェネレータ22に出力する。データ構造表現23
1にアクセスするためのデータ構造アクセス関数211
をアクセス関数ジェネレータ22で生成し、コ−ド生成
部21において、インタプリタ212がデータ構造アク
セス関数211を参照しながらスクリプト24を実行す
ることによりコードを生成する。
【0012】コード生成部21で生成されたコードを出
力装置3に出力するようにしている。このようにして、
コード生成部21が扱える入力仕様の形式をユーザが自
由に定義することを可能にする。
【0013】次に、この第1実施の形態についてさらに
詳述する。図1を参照すると、入力装置1から入力仕様
を受け取り、コードを生成する処理装置2はコード生成
部21、アクセス関数ジェネレータ22、データ構造定
義手段23を備えているが、このうち、データ構造定義
手段23は、入力仕様の形式であるデータ構造表現23
1を定義する。このデータ構造表現としては、たとえ
ば、入力仕様の要素の種類をクラスで、要素間の関係を
関連線で表現する簡易オブジェクト図の形式を取る。こ
の場合、データ構造定義手段23は、簡易オブジェクト
図を編集するためのオブジェクト図エディタとなる。
【0014】アクセス関数ジェネレータ22は、データ
構造定義手段23で定義されたデータ構造表現231か
らこのデータ構造表現の各要素にアクセスするデータ構
造アクセス関数群211を生成する。生成されるデータ
構造アクセス関数211は、次の2種類のアクセスを提
供するものである。 (1).ある要素と関連を持つ要素を取得する。 (2).再帰的な関連の深さを求める。
【0015】コード生成部21は、アクセス関数ジェネ
レータ22により生成されたデータ構造アクセス関数2
11を参照しながら、入力仕様からコードを生成するた
めにユーザが予め作成したスクリプト24を実行するイ
ンタプリタ212を備え、入力装置1から入力された入
力仕様からコードを生成し、出力装置3に出力する。
【0016】次に、以上のように構成されたこの第1実
施の形態の全体の動作について、図2および図3のフロ
ーチャートに沿って詳細に説明する。図2はデータ構造
定義入力からアクセス関数生成までの処理手順を示すフ
ローチャートであり、図3は入力装置1から入力された
入力仕様からコードを生成する処理手順を示すフローチ
ャートである。まず、図2のフローチャートに沿って説
明する。ユーザはデータ構造定義手段23で入力仕様の
形式を示すデータ構造表現231を定義する。
【0017】このデータ構造表現231は、アクセス関
数ジェネレータ22に入力される(ステップA1)。次
に、アクセス関数ジェネレータ22はこのデータ構造表
現231を解析し(ステップA2)、データ構造表現2
31中の要素間に関連があるかを調べる(ステップA
3)。この解析の結果、関連がある要素に対して関連す
る要素を取り出すためのアクセス関数を生成する(ステ
ップA4)。
【0018】さらに、データ構造表現231中の要素で
再帰的な関連があるかを調べ(ステップA5)、再帰的
な関連があれば、関連の深さを求めるアクセス関数を生
成する(ステップA6)。また、上記データ構造表現2
31中の要素間に関連がない場合には、ステップA3か
らステップA5に処理工程をジャンプしてデータ構造表
現231中の要素で再帰的な関連があるかを調べ、も
し、データ構造表現231中の要素で再帰的な関連がな
ければ、ステップA5で処理を終了する。
【0019】図4はデータ構造表現の一例である。この
データ構造表現には、要素「Class」と要素「Relatio
n」の(「src」で示される)関連、要素「Class」と要
素「Attribute」の関連等があることがステップA3で
調べられる。また、このデータ構造表現には要素「Clas
s」に再帰的な関連があることがステップA5で調べら
れる。これらの関連からステップA4とステップA6に
おいて生成されるアクセス関数の宣言一覧を図5に示
す。
【0020】このようにして生成されたアクセス関数を
参照して、コード生成部21でコードを生成する。この
フローを表すのが図3である。次に、この図3のフロー
チャートに沿ってコード生成部21でのコードの生成手
順について説明する。まず、ユーザは入力装置1から入
力仕様を入力する(ステップB1)。入力仕様が入力さ
れると、コード生成部21では、まずスクリプト24中
にアクセス関数を呼ぶ記述があるかどうかを調べる(ス
テップB2)。
【0021】この調査の結果、スクリプト24中にアク
セス関数を呼ぶ記述があれば、インタプリタ212はア
クセス関数を実行して、入力仕様中のデータを取得し、
スクリプト24に展開する(ステップB3)。次に、ス
クリプト24がインタプリタ212によって実行され
(ステップB4)、コードが生成される。図6はスクリ
プト24の一例を示している。図5のアクセス関数の呼
び出しを使って、図4で示されるデータ構造表現により
定義される入力仕様からC++のクラス宣言を生成する
スクリプトの一部を示している。
【0022】このように、第1実施の形態では、このコ
ード自動生成システムの入力仕様の形式をユーザ自身が
データ構造定義手段23により定義することができる。
そして、定義した入力仕様形式に基づいて入力仕様のデ
ータ構造をアクセスする関数をアクセス関数ジェネレー
タ22により自動生成するので、生成されたアクセス関
数を用いたスクリプトを記述することにより、ユーザ自
身がコードの生成方法を定義することができる。
【0023】次に、この発明の第2実施の形態について
説明する。図7は、この発明の第2実施の形態の構成を
示すブロック図である。この図7において、図1と同一
部分には、同一符号を付して重複説明を避け、図1とは
異なる部分を主体に述べる。この図7を図1と比較して
も明らかなように、図7では、データ構造定義手段23
が、データ構造表現スケルトン232を有している点、
スクリプト213がコード生成部21中に含まれている
点、コード生成部21にはユーザが定義したテンプレー
ト25が入力される点で図1の第1実施の形態とは異な
る。
【0024】この構成では、データ構造定義手段23に
おいて、ユーザはデータ構造表現スケルトン232を参
照してデータ構造表現231を定義する。すなわち、デ
ータ構造表現スケルトン232は、コード生成部21に
あらかじめ用意されるスクリプト213により生成方法
が示される入力仕様のデータ構造を示している。ユーザ
はこのスケルトンを拡張して入力仕様のデータ構造を定
義する。データ構造定義手段23で定義されたデータ構
造表現はアクセス関数ジェネレータ22に入力される。
アクセス関数ジェネレータ22は入力されたデータ構造
表現からアクセス関数を発生してコード生成部21に送
出する。
【0025】コード生成部21に含まれるスクリプト2
13は、データ構造表現スケルトン232の形式で表現
される入力仕様からコードを生成するための処理を含ん
だスクリプトである。データ構造表現231において、
データ構造表現スケルトン232から拡張して定義され
た部分に対するコードの生成法を示すために、ユーザは
テンプレート25を記述する。コード生成部21におい
て、インタプリタ212はこのテンプレート25を参照
しながらスクリプトを実行しコードを生成する。
【0026】このように、第2実施の形態では、ユーザ
がデータ構造表現スケルトン232を参照し、このデー
タ構造表現スケルトン232を拡張してデータ構造表現
を定義することができる。そして、アクセス関数ジェネ
レータ22によって上記データ構造表現から生成された
アクセス関数がコード生成部21に入力される。コード
生成部21のインタプリタ212は、ユーザにより定義
されたテンプレート25を参照してコード生成部21に
予め含まれるスクリプト213を実行することでコード
を生成する。このため、ユーザはテンプレート25の記
述により簡便にコードの生成方法を定義することがで
き、コードの生成方法を容易にカスタマイズすることが
できる。
【0027】
【発明の効果】以上のように、この発明によれば、デー
タ構造定義手段により定義された入力仕様のデータ構造
表現をアクセス関数ジェネレータに入力してアクセス関
数を発生し、このアクセス関数をコード生成部に入力し
てインタプリタによりアクセス関数を実行して入力仕様
中のデータを取得してスクリプトに展開し、スクリプト
がインタプリタにより実行されてコードを生成するよう
にしたので、ユーザ自身がこのコード自動生成システム
が扱える入力仕様形式を定義することができる。このた
め、コードの生成方法を示すスクリプトを簡便に記述す
ることが可能となり、コードの生成方法を容易にカスタ
マイズすることができる。
【図面の簡単な説明】
【図1】この発明による入力仕様が拡張可能であるコー
ド自動生成システムの第1実施の形態の構成を示す部ブ
ロック図である。
【図2】図1の入力仕様が拡張可能であるコード自動生
成システムにおけるアクセス関数ジェネレータがデータ
構造定義の入力からアクセス関数発生までの処理手順を
示すフローチャートである。
【図3】図1の入力仕様が拡張可能であるコード自動生
成システムにおけるコード生成部でアクセス関数を参照
してコードを生成する処理手順を示すフローチャートで
ある。
【図4】図1の入力仕様が拡張可能であるコード自動生
成システムにおけるデータ構造表現の一例を示す説明図
である。
【図5】図1の入力仕様が拡張可能であるコード自動生
成システムに適用されるアクセス関数を示す説明図であ
る。
【図6】図1の入力仕様が拡張可能であるコード自動生
成システムに適用されるスクリプトの一例を示す説明図
である。
【図7】この発明による入力仕様が拡張可能であるコー
ド自動生成システムの第2実施の形態の構成を示すブロ
ック図である。
【符号の説明】
1……入力装置、2……処理装置、3……出力装置、2
1……コード生成部、22……アクセス関数ジェネレー
タ、23……データ構造定義手段、24,213……ス
クリプト、25……テンプレート、211……データ構
造アクセス関数、212……インタプリタ、231……
データ構造表現、232……データ構造表現スケルト
ン。

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 入力仕様を入力する入力装置と、 ユーザが定義した入力仕様のデータ構造からデータ構造
    アクセス関数を生成し、このデータ構造アクセス関数を
    参照してスクリプトにアクセス関数を呼ぶ記述が存在す
    るとインタプリタはアクセス関数を実行して入力仕様中
    のデータを取得してスクリプトに展開するとともに前記
    インタプリタによって実行されるコードを生成する処理
    装置と、 前記処理装置で生成されたコードを出力する出力装置
    と、 を備えることを特徴とする入力仕様が拡張可能であるコ
    ード自動生成システム。
  2. 【請求項2】 前記処理装置は、ユーザが定義した入力
    仕様のデータ構造表現を定義するデータ構造定義手段
    と、前記データ構造定義手段で定義されたデータ構造表
    現からデータ構造アクセス関数を生成するアクセス関数
    ジェネレータと、インタプリタがアクセス関数を実行し
    て入力仕様中のデータを取得してスクリプトに展開し
    て、このスクリプトがインタプリタによって実行され、
    コードを生成するコード生成部とを備えることを特徴と
    する請求項1記載の入力仕様が拡張可能であるコード自
    動生成システム。
  3. 【請求項3】 前記処理装置は、ユーザがデータ構造表
    現スケルトンを参照してデータ構造表現を定義するデー
    タ構造定義手段と、前記データ構造定義手段で定義され
    たデータ構造表現からデータ構造アクセス関数を生成す
    るアクセス関数ジェネレータと、前記データ構造表現ス
    ケルトンから拡張して定義されたデータ構造表現の部分
    に対するコードの生成法を示すためにユーザにより記述
    されたテンプレートを参照しながらインタプリンタがス
    クリプトを実行するコード生成部とを備えることを特徴
    とする請求項1記載の入力仕様が拡張可能であるコード
    自動生成システム。
  4. 【請求項4】 前記データ構造定義手段は、前記入力仕
    様のデータ構造表現として入力仕様の要素の種類をクラ
    スで表現し、かつ要素間の関係を関連線で表現する簡易
    オブジェクト図の形式を取り、オブジェクト図エディタ
    となることを特徴とする請求項2または3記載の入力仕
    様が拡張可能であるコード自動生成システム。
  5. 【請求項5】 前記アクセス関数ジェネレータは、前記
    データ構造定義手段で定義されたデータ構造表現からこ
    のデータ構造の各要素にアクセスするデータ構造アクセ
    ス関数として、ある要素と関連を持つ要素を取得するこ
    とを特徴とする請求項2、3または4記載の入力仕様が
    拡張可能であるコード自動生成システム。
  6. 【請求項6】 前記アクセス関数ジェネレータは、前記
    データ構造定義手段で定義されたデータ構造表現からこ
    のデータ構造の各要素にアクセスするデータ構造アクセ
    ス関数として、再帰的な関連の深さを求めることを特徴
    とする請求項2、3または4記載の入力仕様が拡張可能
    であるコード自動生成システム。
  7. 【請求項7】 前記アクセス関数ジェネレータは、前記
    データ構造定義手段で定義されたデータ構造表現からこ
    のデータ構造の各要素にアクセスするデータ構造アクセ
    ス関数として、ある要素と関連を持つ要素を取得し、か
    つ、再帰的な関連の深さを求めることを特徴とする請求
    項2、3または4記載の入力仕様が拡張可能であるコー
    ド自動生成システム。
  8. 【請求項8】 前記スクリプトは、アクセス関数の呼び
    出しを使用して入力仕様からのコードの生成方法を記述
    するものであることを特徴とする請求項2乃至6に何れ
    か1項記載の入力仕様が拡張可能であるコード自動生成
    システム。
JP10244995A 1998-08-31 1998-08-31 入力仕様が拡張可能であるコード自動生成システム Pending JP2000076056A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10244995A JP2000076056A (ja) 1998-08-31 1998-08-31 入力仕様が拡張可能であるコード自動生成システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10244995A JP2000076056A (ja) 1998-08-31 1998-08-31 入力仕様が拡張可能であるコード自動生成システム

Publications (1)

Publication Number Publication Date
JP2000076056A true JP2000076056A (ja) 2000-03-14

Family

ID=17127027

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10244995A Pending JP2000076056A (ja) 1998-08-31 1998-08-31 入力仕様が拡張可能であるコード自動生成システム

Country Status (1)

Country Link
JP (1) JP2000076056A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019121293A (ja) * 2018-01-10 2019-07-22 三菱電機株式会社 ソースコード生成装置、ソースコード生成プログラム、ドキュメント生成システムおよびドキュメント生成方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019121293A (ja) * 2018-01-10 2019-07-22 三菱電機株式会社 ソースコード生成装置、ソースコード生成プログラム、ドキュメント生成システムおよびドキュメント生成方法

Similar Documents

Publication Publication Date Title
JP2007515013A (ja) あらゆるソースプラットフォームからあらゆるターゲットプラットフォームへのソフトウェアコードのマイグレーション及び変換装置
JPH07311677A (ja) 操作処理装置
JPH1165832A (ja) ソースコード変換方法及び記録媒体
JP2000076056A (ja) 入力仕様が拡張可能であるコード自動生成システム
JP3196675B2 (ja) 言語処理方式
JPH06230953A (ja) グラフィカル・ユーザインタフェース設計装置
JP2551935B2 (ja) 図的言語処理方式
JP3940922B2 (ja) ソフトウェアコード生成装置、ソフトウェアコード生成方法および記録媒体並びにプログラム
JP2598082B2 (ja) 知識処理言語のドキュメンテーション装置及びドキュメンテーション方法
JPH05143393A (ja) テストプログラム作成装置
JP2001134423A (ja) 対話型既存システムを利用する新システムの画面情報出力方法
JP3003459B2 (ja) プログラム作成支援装置
JPS58112127A (ja) デ−タ入力手段形成方式
JP3019874B2 (ja) プログラム生成/合成装置および方法
CN117827171A (zh) 一种通过jsonSchema文件生成项目源码的方法及装置
JP2001325096A (ja) エラー情報表示方法および装置
JP2942414B2 (ja) 仮想データベース方式
JPH0580992A (ja) 手続き・関数関連図出力方式
JPH10269066A (ja) 日本語によるシェル自動作成装置
JP2005157827A (ja) プログラムの生産方法および生産装置
JP2773655B2 (ja) Vhdlシミュレータ
CN112506521A (zh) 一种面向数据流模型的高阶调用代码生成方法及装置
JP2003288231A (ja) 故障診断システム
CN117056197A (zh) 数据处理方法、装置、设备及存储介质
CN116302199A (zh) 设计场景的组件转换方法、装置、计算机设备及存储介质