JPH09330212A - プログラミング言語処理システム - Google Patents

プログラミング言語処理システム

Info

Publication number
JPH09330212A
JPH09330212A JP15258096A JP15258096A JPH09330212A JP H09330212 A JPH09330212 A JP H09330212A JP 15258096 A JP15258096 A JP 15258096A JP 15258096 A JP15258096 A JP 15258096A JP H09330212 A JPH09330212 A JP H09330212A
Authority
JP
Japan
Prior art keywords
unit
information
function
script
translator
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
JP15258096A
Other languages
English (en)
Inventor
Nobuhito Miyauchi
信仁 宮内
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 JP15258096A priority Critical patent/JPH09330212A/ja
Publication of JPH09330212A publication Critical patent/JPH09330212A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 適用業務の知識、経験、規則などに基づいて
コーディングが容易に行なえるプログラミング言語によ
り応用プログラムのスクリプトを効率良く開発できるプ
ログラミング言語処理システムを実現する。 【解決手段】 コミットチョイス型の論理型プログラミ
ング言語を用いて単語や記号などを自由に並べる記述書
式をもつプログラミング言語により作成するトランスレ
ータプログラムを記憶するトランスレータデータ記憶部
とスクリプトを入力する入力管理処理部と入力した上記
スクリプトを該当するトランスレータプログラムに変換
して実行するトランスレータ実行処理部とにより構成す
るプログラミング言語処理システムにおいてコーディン
グ規則の少ない自由な書式のスクリプトの作成を可能に
し、また、プログラマの入力誤りを訂正する支援がなさ
れスクリプトの実行効率を向上する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、計算機に対する処
理要求を記述するスクリプトと上記スクリプトを計算機
思考のプログラミング言語に変換するトランスレータと
において、一般ユーザが使いやすいように計算機思考の
プログラミング言語の規則の習得を不要とし、理解しや
すい形式で上記スクリプトを作成し、処理システム構築
者が上記スクリプトの形式に基づいて上記トランスレー
タの処理記述を行うプログラミング言語処理システムに
関するものである。
【0002】
【従来の技術】情報処理システムは、近年めざましい発
展を遂げ、そのハードウェア及びソフトウェア技術は現
在もかなりの速度で進歩を継続している。情報処理シス
テムは、既に肥大化しており、一般の利用者はおろか、
情報処理システム技術者でさえ、それぞれのシステムの
詳細な構造や機能を把握することは非常に困難になって
いる。最近においては、情報処理システムに要求される
高度な機能の実現のために、その実現手段としては、ハ
ードウェアよりもソフトウェアのほうにかなり比重が置
かれるようになっている。このため、これから開発すべ
きソフトウェアのコーディング量は膨張し続けており、
さらに新たな機能実現の要求も日々加えられ、開発ソフ
トウェアの肥大化はなお一層ふくれ上がっているのであ
る。
【0003】この急激に拡大したソフトウェア開発の需
要は、当然のことながら、情報処理システム技術者の不
足をもたらしている。一般ユーザが要求するシステムが
複雑化する中で、戦略情報システム(strategi
c informationsystem;SIS)に
代表されるような単なる計算システムからユーザ企業の
業務の中枢に触れるシステム構築が多くなるとともに、
ユーザのシステムに対する要求が高度となり、上記要求
に対応する人材が不足していると考えられている。
【0004】このように、ソフトウェア生産人工の不足
という状況下にあっても、情報処理ソフトウェア市場に
対して競争力を維持しながら、製品を開発し投入してい
くためには、ソフトウェア開発期間をさらに短縮してい
く必要がある。これは、実質的に使用できるソフトウェ
アについて、短期間での試作品開発(ラピッドプロトタ
イピング)が重要であることを意味する。これから、ソ
フトウェアプログラマにとって、既存のソフトウェア資
産を効率良く再利用できる技術が不可欠になる。逆に、
プログラマが作成するプログラム自体も今後の再利用性
を考慮して、可読性の優れたものとすることが重要であ
る。
【0005】このような状況では、今後より一般のユー
ザにもソフトウェア開発の一端を担ってもらっていく必
要が出てきている。ただし、一般のユーザが計算機指向
の技術の学習をほとんど必要としないで、業務の知識、
経験、規則などを生かすだけで、簡単にシステム構築に
参加できる環境が不可欠となる。
【0006】一般のユーザにも、ソフトウェア生産人工
の危機を救うために、プログラミングに参加してもらい
たいという要望がある一方で、現在広く使用されている
プログラミング言語としては、Fortran, C,
C++, Pascalなどのような計算機指向のプ
ログラミング言語ばかりであり、これらは習得するのが
大変なうえに、他人の作成したプログラムを解読して利
用することは、非常に困難である。これらの言語を一般
のユーザに使用してもらうことは実質的に不可能であ
る。
【0007】このような計算機指向のプログラミング言
語とは異なり、一般ユーザのプログラマを対象にしたプ
ログラミング言語処理システムの例として「特開平2−
304628」がある。これは、自然語に近い概念の記
述がそのままプログラムの記述になれば、プログラムの
読解性、記述性が向上するであろうという考えに基づい
た発明であり、自然語に近い言語による仕様記述にて、
情報処理システムが実行可能なプログラムを作成できる
ものである。
【0008】一方で、1980年代から1990年代に
かけて通産省指導にて進められた第五世代コンピュータ
プロジェクトのように、従来の計算機指向の手続き型プ
ログラミング言語とは異なる論理型プログラミング言語
を高度な知識情報処理を行なうために採用した試みもあ
った。論理型プログラミング言語は、単純な文法規則の
みを使用し、プログラマの論理的な処理記述を容易に行
なうことができ、高度な応用プログラムの生産性に優れ
ていることが実証されている(参考文献1:「並列論理
型言語GHCとその応用」共立出版、古川康一他編よ
り、第3章GHCの基本)。しかし、その論理型プログ
ラミング言語が数多くの長所を持つにも関わらず、今日
のソフトウェア開発分野においては業界標準となること
がかなわず、依然として計算機指向の手続き型プログラ
ミング言語によるソフトウェア開発が主流となってい
る。
【0009】また、最近のプログラミング言語の動向と
しては、複雑なコーディング規則からプログラマを解放
する理解しやすいスクリプト言語と呼ばれる簡易型のプ
ログラミング言語ともいえるものが数多く現れてきてお
り、その利用も急速に拡大しつつある。代表的なものを
あげると、表計算ソフトウェアの処理記述用のExce
lマクロ(Microsoft社が開発したソフトウェ
ア)、Windowsアプリケーションを容易に構築で
きるVisual Basic(Microsoft社
が開発したソフトウェア)、GUI実装のプロトタイピ
ングに適したTcl/Tk(V.C.Berkeley
のJ.Ouserhout教授が開発したプログラミン
グ言語)、Lingo(Macromedia社が開発
したマルチメディアオーサリングソフトウェアのタイト
ル作成用のDirector(Macromedia社
が開発したオーサリングツール)の中で使用するプログ
ラミング言語)、UNIX計算機環境用のPerl(U
NIX上で使用が可能なプログラミング言語)やAWK
(UNIX上で使用が可能なプログラミング言語)、数
値演算処理記述用のEquatran、インターネット
のハイパーテキスト記述用のHTML、3次元立体デー
タ記述用のVRMLなどである。これらは、それぞれの
用途に的を絞って設計され、従来の計算機指向のプログ
ラミング言語よりも、その使用分野での処理の記述がは
るかに容易になっている。
【0010】Tcl/Tkを例にとり、その開発の動機
を以下に示す。UNIXでは、Little Lang
uageと呼ばれるcsh(Cシェルスクリプトの略)
やAWKなどのスクリプト言語をもつアプリケーション
プログラムが非常に多く提供されているが、アプリケー
ションプログラムを作成するごとに、スクリプト言語の
処理系を新しく作る作業が発生するので、汎用的なスク
リプト言語の処理系が必要とされていた。一般に、スク
リプト言語とは、実装の容易さ、構文の簡潔性が要求さ
れ、多くのアプリケーションに組み込むことを前提とし
て、Tclは開発された。Tclは、インタプリタ形式
の処理系で、任意のC言語で記述されたアプリケーショ
ンプログラムに組み込むためのライブラリとして実現さ
れている。さらに、Xウィンドウのアプリケーションを
開発するためのウィジェットセットTkも開発された。
現在、このTcl/Tkはウィンドウアプリケーション
を容易に作成するシステムとして注目されている(参考
文献2:「プログラミング言語TclとTk」bit
1995/5,Vol.27,No.5,共立出版)。
【0011】このようなスクリプト言語に関する発明と
して、「特開平4−318623」の「制御装置」があ
る。この特許では、スクリプト言語によるプログラム
を、コマンドだけからなるシナリオという概念により一
連のコマンド操作を行なう定型的な記述として位置付け
ている。コマンド名を日本語にて記述できるという点を
除けば、UNIX上のcshなどのシェルスクリプトと
その機能は全く変わらない。
【0012】汎用的なスクリプト言語をめざしたもので
なく、特定の適用分野を狙ったスクリプト言語処理シス
テムには、前述のように様々なものがあるが、「特開平
2−304628」の「品詞分類を持つプログラム言語
処理方式」はその一例である。やはり、計算機の取り扱
いに習熟していないものでも、日本語を元にした命令用
のスクリプト言語を操作することで、容易に必要な計算
機制御を行なうことを狙っている。ただし、この発明で
は、日本語の文法を元にしたプログラミング記述を採用
しているとはいえ、かなり多量な文法規則を認識してお
く必要があり、プログラマは改めて別のプログラミング
言語を学習させられることになる。
【0013】「特開平7−36832」の「日本語コマ
ンド処理装置」も、同様に情報処理システムに対するコ
マンドを日本語のような曖昧な記述形式が使えるよう
に、コマンドの解釈を行なう手段を備えたものである。
ただし、この発明では、例えば携帯情報ツールのような
1つのシステムとして辞書手段を固定されたものとして
内包しているので、記述用語に持たせる意味の登録を汎
用的な用途に役立てることは、困難になる。トランスレ
ータ処理記述のプログラマやスクリプトの利用者が、自
分たちが使いたい意味で記述用語をカスタマイズできな
いと、理解しやすいスクリプト言語とはならない。
【0014】前例と同様に、ユーザの入力記述として、
曖昧な日本語記述を許す情報処理システムの研究例があ
る(参考文献3:「ステップアップ型日本語インタフェ
ース(1),(2)」、山口他、情報処理学会第50回
(平成7年前期)全国大会予稿集、Page,3−97
〜100)。このシステムでは、ユーザがスクリプト言
語を書くというよりは、自然言語で計算機に命令をする
というものに近い。よって、かなり大規模な自然言語処
理モジュールを内蔵しており、汎用的な用途での解釈も
実現しようとしているので、実用的なシステムとなるま
で、さらに研究が必要である。このように、スクリプト
言語の利用者に使わせる記述に全く制約を設けないとす
ると、その対応のための膨大な知識情報処理が必要にな
り、計算機の資源も多量に要求される。スクリプト言語
の利用者のコストが全くなくなるのはよいが、逆に多様
な分野に適用させようとすると、そのアプリケーション
のための機能定義用語、処理の記述を独自のプログラミ
ング言語にてプログラマが独立して行なう必要があり、
一般利用者による支援をあおげる状況にはならない。一
般利用者が新たな機能を自らカスタマイズするというわ
けにもいかない。
【0015】日本語記述を元としたスクリプト言語処理
システムには、既に商用になっているものもいくつかあ
るが、その一例として、Apple Computer
社のAppleScriptがある(参考文献3:「A
ppleScriptによる定型業務システムの構築」
MACLIFE,No.77/1,1995)。App
leScriptは、マクロ言語と言われているが、同
様にスクリプト言語の仲間である。しかし、実際、この
AppleScriptにて使うことのできる日本語記
述は、元々英語記述であったAppleScriptで
使用できる用語をそのまま翻訳した程度のもので、既に
いくつか紹介した広報と異なり、曖昧な日本語に対する
柔軟な処理機能を持ったものではない。スクリプト言語
を作成するプログラマやスクリプト言語を利用する利用
者に、多少は自由な記述用式を与えることも、計算機指
向の言語から脱却するための重要な要素である。
【0016】このような状況から、ユーザが情報処理シ
ステムを操作できるプログラミング言語としても、簡単
に使用方法を理解できるスクリプト言語が必要である。
情報処理システムが今後適用される分野は、多岐にわた
って増大していくことは明白であり、同様にそれぞれの
適用分野に特化したスクリプト言語が用意されることも
期待される。さらに、この各適用分野ごとのスクリプト
言語処理システム自体のコーディングも、同様に理解し
易い記述形式も類似しているスクリプトにて汎用的に行
なえれば、その開発効率も明らかに向上するし、スクリ
プト言語の一般の利用者が新たな機能を付加するカスタ
マイズも容易になる。
【0017】
【発明が解決しようとする課題】本発明のプログラミン
グ言語処理システムにて実現しようとする機能の概要を
図25に示す。さらに、従来における実際のアプリケー
ションユーザの現場における状況を図26に示す。図2
6ではたとえば、簡易動画を生成する分野ではアニメー
タが記述した絵コンテやシナリオをコンピュータグラフ
ィック技術者が(cg)上記絵コンテやシナリオを参照
して動画プログラムを作成する。そして、グラフィカル
ユーザインタフェース(gui)操作環境において動画
作成アプリケーションを用いて動画データを作成する。
cg技術者が作成した動画プログラムを機械語に翻訳し
て上記作成した動画データを動画プログラムを用いて実
行する。このようにして簡易動画を作成していた。ま
た、音楽の分野ではたとえば音楽愛好家が記述した作曲
家への曲調の要望書をもとに楽譜データを作成したり、
または直接キーボードから楽譜データの打ち込みを行
う。これは作曲編曲用アプリケーションを用いて行われ
るMIDI(music instrumnetdig
ital interface)データ再生サウンドボ
ードを用いてMIDIデータに変換していた。図26の
ように特定の適用分野において一般ユーザが作成した要
望書をもとに特定分野の技術者が上記要望書に沿ったプ
ログラムやデータを作成していた。しかし、図25のよ
うに一般ユーザが作成したスクリプトをもとに特定の分
野の技術者がトランスレータプログラムを作成すれば作
成したトランスレータプログラムは再利用可能であるた
め、たとえば、簡易動画を生成する分野においてはアニ
メータの要望書ごとに動画プログラムを作成しなくても
動画を生成することができる。従来から、より一般的な
ユーザのためのアプリケーションの実現は難しく、計算
機技術の知識をある程度もつ技術者により実際のアプリ
ケーションは操作されていたといえる。そして、その専
門技術者により作られてきたプログラムも、新しい機能
を盛り込むなどの拡張作業のためには、直接プログラム
に手をいれる必要があり、再利用性に乏しいものであっ
た。さらに、アプリケーションシステム自体も、できる
限りエンドユーザ向けの機能を実現しようとしてきたの
で、エンドユーザにとって使い勝手がよいシステムほど
大規模で高価なシステムになりやすい。比較的単純な機
能のプログラミング処理系やアプリケーションプラット
ホームを利用しても、必要とされるシステムができてし
まうにも関わらず、必要とされる機能をそのまま計算機
指向のプログラム作成に結び付ける経路はなかったとい
える。本発明が目指す図26から図25への利用形態の
移行をまとめると、図27のようになる。図27は、本
発明のプログラミング言語処理システムが目指す従来の
計算機環境の短所からの脱却を示している。ユーザが計
算機の世界とは離れた現場の知識を駆使して実現しよう
とする機能は、直接に計算機指向のプログラミング言語
でコーディングするまでもないことが、本発明の実施の
形態により理解されるであろう。知識、規則、経験など
の文字列を中心としたデータにより、論理式に近い形で
記述できたものが、計算機で処理されることが重要なの
である。
【0018】ソフトウェアのプログラマがその生産効率
を向上させるために、コーディングしやすく、その完成
したコードの内容も理解し易いスクリプト言語が必要と
されている。このスクリプト言語に要求される条件のい
くつかを列挙する。まず、開発ソフトウェアの基本的な
構成を決定する設計者、設計思想、設計モデルといった
条件からつくり出される関数をどのように複雑で多様な
形態をもつ高度な処理であっても、大きな障害なく容易
に記述できること。次に、設計モデルの検討後や、プロ
トタイプシステムの完成後において、アーキテクチャや
モデルをよりしっかりしたものに完成させるための改良
が容易に行なえること。さらに、ソフトウェア開発者と
その利用者がともに、計算機指向のプログラミング言語
の記述ルールと切り離した論理的な考え方のみを理解で
きるような記述ができること。
【0019】本発明の目的は、このような要件を満たす
スクリプト言語を使用することにより、ユーザが簡単に
操作できる情報処理システムを効率良く開発することで
ある。また、プログラマの作業負担の軽減を図ろうとす
ると、それに対応して、情報処理システム側にて対処す
べき処理が当然増えることになる。この情報処理システ
ム側にて対処すべき処理が本発明により実現される。
【0020】既存のプログラミング言語処理系では、ど
うしても計算機指向の資源を操作する概念を必要とし、
数多くのプログラミング規則を覚えた上で、プログラミ
ングをしなければならなかった。このため、一般ユーザ
向けのスクリプト言語処理系の開発環境として、適用業
務の知識、規則、経験に基づいて論理的な関係の記述の
みで誰にでも容易にプログラミングができるものがなか
った。
【0021】既存のプログラミング言語処理系にて、一
般ユーザ向けのスクリプト言語処理系を開発しようとす
ると、計算機資源の参照方式として、レジスタ、メモ
リ、アドレス、ポインタなど計算機独自の概念を携えた
ままプログラムのデバッグを行なう必要があり、適用業
務の知識、規則、経験に基づいたスクリプト言語処理系
のデバッグ作業としては効率がよいとは言い難かった。
【0022】従来の論理型プログラミング言語処理系で
は、実行処理の単純化のために、ソースコード上で現れ
た関数記述の順番にしたがって一度パターンマッチング
が成功して選択されたものが、必ず実行フェーズに入
る。このため、プログラマが予期しない関数記述の選択
がなされることがあり、プログラマはこのような処理系
の逐次型の実行を常に留意してプログラミング作業を行
なう必要があった。プログラマがパターンマッチング処
理に対して、特徴のあるパターン識別の要求に答えてく
れる柔軟なパターンマッチング機能をもつプログラミン
グ言語処理システムは、存在しなかった。
【0023】ユーザが設定した柔軟なパターンマッチン
グの設定処理が実現できたとしても、その細かな処理の
挙動を逐一把握できないと、プログラムがどのように実
行されているか把握できないことになる。常に、ユーザ
の処理動作に対しては、上記処理動作に伴う副作用をは
っきりとさせて、デバッグを行なえる環境が必要であっ
た。
【0024】プログラマや、ユーザが、既に作成された
関数記述の入力引数データとして実際に入力しなけばな
らないデータと、意味的に同じで類似したものとを、取
り違う誤りは比較的に多い。一般常識からすれば、明ら
かに同意語であっても、従来のプログラミング言語処理
系では、柔軟に拡張解釈を行なう機能はなかった。
【0025】プログラミング言語処理システムが予め引
数データとして用いることができるデータを登録して上
記登録したデータを用いて引数データを拡張解釈するこ
とが可能であっても、様々な適用分野を想定すると必ず
しも固定的な同意語データベースでは柔軟に対応できる
とは限らない。ある特定分野でのみ通用する単語の使用
のしかたもあるので、各適用分野毎に同意語データベー
スを使用できることが必要とされていた。
【0026】プログラマやユーザが引数データとして用
いる所定の単語に対して同じ意味を持つ別の単語を同意
語として登録する場合に、一度登録した単語を別の引数
データとして用いる所定の単語の同意語として、重複し
て登録してしまう危険性がある。この同意語データベー
スの重複のチェックを行なうには、従来では登録内容を
1つずつソースレベルなどで目で確認することになる。
【0027】従来のプログラミング言語では、変数、定
数あるいは具体値に対して、宣言記述を書く必要があっ
た。Tcl/TkなどのようなTiny Langua
geにおいてさえ宣言を必要としないが、変数としてそ
の内容を参照するような場合は特殊な記号などを付加し
て処理系に対して明示する必要があった。これは、明ら
かに、プログラミング言語の記述規則として、プログラ
マに対して作業の負担を強いるものである。変数として
使用されていることが人間の目から見ればわかること
も、計算機側で積極的に対処して変数としての処理を行
なうようなプログラミング言語処理系はなかった。
【0028】計算機側が、変数の意味をもつ単語、ある
いは、定数や具体値の意味をもつ単語に対して、何らか
の根拠に基づき判定を下しても、それがプログラマやユ
ーザに対してその判定内容が知らされないと、プログラ
ムの不具合を解析することが明らかに困難である。
【0029】従来のプログラミング言語処理系では、呼
び出される関数の引数の順序は、厳密に固定的なもの
で、その引数の順序を誤って入力すれば必ずエラーとな
る。引数のデータタイプなどから、その引数がどの位置
のものに該当するか理解できるような場合であっても、
計算機側が積極的に拡張解釈をして、その誤りの警告を
行なったり、引数データを適当な位置に割り振るような
処理を行なうものはなかった。
【0030】呼び出される関数の引数の順序が明らかに
誤っており、その引数の順序を入れ換える修正処理を行
なった場合、ユーザやプログラマにその処理内容を確認
する手段がないとプログラム不具合の解析を行なう場合
や、予期しないプログラムの挙動に遭遇した場合など、
処理系内部の詳細な動作がわからないことになるので、
ユーザやプログラマの対応作業の効率が悪くなる。
【0031】従来のプログラミング言語処理系では、呼
び出される関数の引数が数値データの場合に、その数値
データに単位を示す文字列が付与されたような文字列デ
ータを柔軟に受け入れて処理を継続するようなものがな
かった。単位の文字列を付与した数値データを引数とし
て受け付ける関数を作成したとしても、その単位を示す
文字列を切り出して解析する部分の処理のプログラミン
グをプログラマが行なう必要があった。
【0032】従来のプログラミング言語処理系では、プ
ログラム記述中に現れる数式の記述に対して、明示的に
数値計算処理の指示を与えないとその実行を行なわない
しくみであった。プログラム記述中に現れる数式に対し
て、明らかにそこまでの処理経過から数式の数値計算処
理が可能であっても、その計算処理を行なってから、そ
の記述における関数の実行処理を行なう便宜をはかるプ
ログラミング言語処理システムはなかった。
【0033】プログラム記述中に現れる数式の記述に対
して、その記述上の関数の実行に際して数式の数値演算
処理がなされていると、関数の予期しない実行結果が得
られることもあるので、ユーザやプログラマはその原因
の解析が行なえるように、処理系がどのように数値演算
処理を行なったかという情報を確認できるようにしてお
く必要がある。
【0034】従来のプログラミング言語処理系では、関
数の呼び出し行として連続した関数の呼び出しなどの長
文的な呼び出し記述文字列を採用することができなかっ
た。呼び出し関数の記述自体を引数として渡すことで、
従来のプログラミング言語処理系でも同様のことは可能
になるが、このような場合に対処するプログラムをプロ
グラマが組む必要があった。関数名や引数がランダムに
連続して記述されるプログラムの記述を特殊な記述規則
なしで容易に受け入れてくれるプログラミング言語処理
系はなかった。
【0035】
【課題を解決するための手段】この発明のプログラミン
グ言語処理システムは、以下の要素を有することを特徴
とする。 (a)関数の関数名と関数の中で用いる引数名とを関数
定義情報として定義するガード部と上記関数が処理する
内容を処理情報として定義するボディー部より構成され
た関数定義プログラムであるトランスレータプログラム
を入力して解析するとともに、上記トランスレータプロ
グラムを特定する関数呼び出し情報を記述した関数呼び
出しプログラムであるスクリプトとを入力して解析する
入力管理処理部、(b)上記入力管理処理部より入力さ
れ解析された上記トランスレータプログラムを記憶する
トランスレータデータ記憶部、(c)上記入力管理処理
部より解析された上記スクリプトを解釈して上記スクリ
プトに定義されている関数呼び出し情報を基に上記トラ
ンスレータデータ記憶部を参照し、上記スクリプトに定
義されている関数呼び出し情報と上記トランスレータプ
ログラムのガード部に定義されている関数定義情報が一
致するトランスレータプログラムを決定し、決定したト
ランスレータプログラムを実行して処理結果を出力する
トランスレータ実行処理部。
【0036】上記トランスレータプログラムのボディー
部に定義されている関数が処理する内容は、任意のプロ
グラミング言語を用いて記述され、上記スクリプトに記
述されている関数呼び出し情報は、所定のフォーマット
により記述されていることを特徴とする。
【0037】上記トランスレータプログラムのガード部
は、1行以上の関数定義情報より構成されるとともに、
上記トランスレータプログラムのボディー部は、1行以
上の処理情報より構成され、上記入力管理処理部は、上
記トランスレータプログラムを入力するトランスレータ
定義登録部と上記トランスレータ定義登録部が入力した
上記トランスレータプログラムの関数定義情報と処理情
報とを1行毎に順に入力する関数定義読み込み部とを備
えたことを特徴とする。
【0038】上記入力管理処理部は、上記スクリプトを
入力する実行スクリプト読み込み部を備えたことを特徴
とする。
【0039】上記トランスレータデータ記憶部は、所定
の単語に対して同じ意味を持つ別の単語を同意語定義情
報として記憶する同意語定義情報記憶部を備え、上記入
力管理処理部は、上記同意語定義情報記憶部に記憶すべ
き同意語定義情報を入力して上記同意語定義情報記憶部
に登録する同意語定義登録部を備え、上記トランスレー
タプログラムの上記ガード部に定義されている関数定義
情報はある単語を用いて定義され、上記入力管理処理部
は、上記同意語定義情報記憶部を参照して上記ガード部
に定義されている関数定義情報に用いられている上記あ
る単語を所定の単語に変換する同意語置換部を備えたこ
とを特徴とする。
【0040】上記トランスレータデータ記憶部は、複数
のトランスレータプログラムが共有する変数の値と変数
の名前とをグローバル変数として記憶するグローバル変
数記憶部を備え、上記入力管理処理部は、上記トランス
レータプログラムのボディー部に定義されている処理情
報に上記グローバル変数名が記述されている場合、上記
グローバル変数名を基に上記グローバル変数記憶部を参
照してグローバル変数の値を取得して上記処理情報に定
義されているグローバル変数名を上記取得したグローバ
ル変数の値に変換するグローバル変数置換部を備えたこ
とを特徴とする。
【0041】上記同意語定義登録部は、上記同意語定義
情報記憶部に記憶されている同意語定義情報を別の意味
を持つ単語として重複して登録することを禁止する登録
誤りチェック部をそなえたことを特徴とする。
【0042】上記同意語定義情報記憶部は、特定の分野
で使用される同意語定義情報を記憶する分野別同意語定
義情報記憶部と上記特定の分野以外で使用される同意語
定義語情報を記憶する一般同意語定義情報記憶部とを備
え、上記同意語定義登録部は、上記同意語定義情報とと
もに特定の分野で使用される同意語定義情報か否かを示
す分野指定情報を入力して、上記分野指定情報が特定の
分野で使用されることを示す場合、上記同意語定義情報
を上記分野別同意語定義情報記憶部に記憶し、上記分野
指定情報が特定の分野で使用されないことを示す場合、
上記同意語定義情報を上記一般同意語定義情報記憶部に
記憶することを特徴とする。
【0043】上記スクリプトは、関数の関数名と関数の
中で用いる引数を関数呼び出し情報として定義し、上記
トランスレータ実行処理部は、上記入力管理処理部より
入力されたスクリプトに定義されている上記関数名を基
に上記トランスレータデータ記憶部を参照して実行する
トランスレータプログラムの候補を決定する関数記述取
り込み部を備えたことを特徴とする。
【0044】上記トランスレータ実行処理部は、さら
に、上記関数記述取り込み部が決定したトランスレータ
プログラムの候補を入力して上記トランスレータプログ
ラムの候補のガード部に定義されている関数定義情報と
上記スクリプトに定義されている関数呼び出し情報が一
致することを判定するコミットチョイス判定処理部を備
えたことを特徴とする。
【0045】上記スクリプトに記述されている関数呼び
出し情報は1つ以上の項より構成され上記項は1つ以上
の要素より構成され、上記要素は少なくとも文字列と記
号と数値のいずれかにより表され、上記コミットチョイ
ス判定処理部は、上記関数呼び出し情報を項に分解し上
記分解した項の要素が文字列か記号か数値のいずれであ
るかを判定するとともに上記分解した項毎に項を構成す
る要素の数を判定して上記判定した結果と上記トランス
レータプログラムの候補のガード部に定義されている関
数定義情報とを比較し合致情報を取得する入力引数判定
部と、上記入力引数判定部が取得した上記合致情報を基
に上記トランスレータプログラムの候補から実行するト
ランスレータプログラムを選択する最終関数記述選択判
定部とを備えたことを特徴とする。
【0046】上記コミットチョイス判定処理部は、上記
トランスレータプログラムの候補より実行するトランス
レータプログラムを選択する選択条件を設定する関数記
述選択部を備え、上記最終関数記述選択判定部は、上記
入力引数判定部が取得した合致情報を基に上記関数記述
選択部により設定された選択条件を比較し上記トランス
レータプログラムの候補より実行するトランスレータプ
ログラムを選択することを特徴とする。
【0047】上記入力引数判定部は、上記合致情報を取
得する過程におけるログ情報を収集する入力引数判定ロ
グ収集部を備えたことを特徴とする。
【0048】上記トランスレータプログラムのボディー
部には数式が処理情報として定義され、上記数式には数
値の型の宣言を行っていない変数と定数とが記述され、
上記トランスレータ実行処理部は、上記ボディー部に定
義されている数式に記述されている変数を具体値に変換
する変数置換実行部を備えたことを特徴とする。
【0049】上記トランスレータ実行処理部は、上記変
数置換実行部が変数を具体値に変換する過程におけるロ
グ情報を収集する変数置換ログ情報収集部を備えたこと
を特徴とする。
【0050】上記入力管理処理部は、上記スクリプトに
記述されている関数呼び出し情報のフォーマットを定義
するフォーマット情報を入力し登録するフォーマット情
報登録部を備え、上記トランスレータデータ記憶部は、
上記フォーマット情報登録部が入力したフォーマット情
報を記憶するフォーマット情報記憶部を備え、上記入力
管理処理部は、上記実行スクリプト読み込み部が入力し
たスクリプトに記述されている関数呼び出し情報と上記
フォーマット情報記憶部に記憶されているフォーマット
情報とを比較して上記関数呼び出し情報の記述内容を確
認するスクリプト確認部を備えたことを特徴とする。
【0051】上記入力管理処理部は、上記スクリプト確
認部が上記関数呼び出し情報の記述内容を確認した結果
誤上記関数呼び出し情報の記述内容に誤りがあると判定
した場合上記誤りを警告するスクリプト警告部と、上記
誤りを修正するスクリプト修正部とを備えたことを特徴
とする。
【0052】上記入力管理処理部は、上記スクリプト修
正部が上記関数呼び出し情報の記述内容を修正する過程
におけるログ情報を収集するスクリプト修正ログ情報収
集部を備えたことを特徴とする。
【0053】上記スクリプトは単位を示す単位情報を関
数呼び出し情報に含み、上記実行スクリプト読み込み部
は、上記単位情報を含んだ関数呼び出し情報が記述され
ているスクリプトを読み込むことを特徴とする。
【0054】上記トランスレータプログラムのガード部
は関数の中で用いる引数の記述を一部省略することを示
す第1の省略記号を関数定義情報に含み、上記トランス
レータプログラムのボディー部は関数が処理する内容を
一部省略することを示す第2の省略記号を処理情報に含
み、上記入力管理処理部は、上記第1の省略記号と上記
第2の省略記号とを含んだトランスレータプログラムを
入力し、上記トランスレータ実行処理部は、上記第1の
省略記号と上記第2の省略記号を含んだトランスレータ
プログラムを実行する場合、上記第1の省略記号により
省略されている引数と上記第2の省略記号により省略さ
れている関数が処理する内容とを上記トランスレータプ
ログラムを実行する過程において再現して上記トランス
レータプログラムの実行を継続して行うことを特徴とす
る。
【0055】上記プログラミング言語処理システムは、
さらに、上記トランスレータプログラムのガード部に定
義されている関数定義情報を記述している単語とボディ
ー部に定義されている処理情報を記述している単語とを
用いて上記トランスレータプログラムを実行する過程に
おいて実行状態を確認し実行誤りを修正するデバッグ関
連処理部を備えたことを特徴とする。
【0056】
【発明の実施の形態】
実施の形態1.以下、この発明の一実施の形態を図につ
いて説明する。この実施の形態1では、一般に普及して
いるパーソナルコンピュータやワークステーションが、
この発明のプログラミング言語処理システムを搭載し、
一般ユーザが使用するスクリプトを既存の計算機指向の
プログラミング言語に変換するトランスレータプログラ
ムを構築する。この実施の形態1では、Tcl/Tkを
用いてトランスレータプログラムを作成する。
【0057】始めに、この発明におけるトランスレータ
プログラムを作成するためのプログラミング言語のシン
タックスの一例を図1に示す。図1において、トランス
レータプログラムはガード部と出力部とボディー部より
構成されている。また、ガード部と出力部はコミット演
算子を用いて結びつけられている。上記ガード部は関数
名と入力引数より構成されている。また、出力部は出力
引数より構成されている。さらにボディー部は関数呼び
出しと、呼び出す関数の入力引数より構成されている。
尚、ボディー部は、関数呼び出しの処理だけでなく、演
算や代入の処理であってもかまわない。図1よりわかる
とおり、必ず使用される特殊記号は、コミット演算子で
ある「−>」とボディー部行識別子である「|」の2つ
だけである。関数の入力条件となる引数群を与えれば、
出力引数群が得られるという直観的な発想に結び付く矢
印状の記号をコミット演算子として採用した。
【0058】既存の一般のプログラミング言語での関数
の記述は、開始から終了までを括弧でくくったり、終了
時にピリオドや「end」などの識別子を置いたりして
いる。ここでは、関数記述終了時の括弧や識別子を書き
忘れることが多い点を考慮して、本体処理であるボディ
ー部が継続しているうちは、冒頭に縦棒が必ず置かれる
という規則を採用した。冒頭に「|」の縦棒が出てこな
くなった時点で、この関数の本体処理記述は終了する。
この「|」の縦棒が連続してコーディングされたソース
コードは、本体処理であるボディー部の左端に縦に一直
線が引かれたように見えるので、可読性を向上させるこ
とになる(ボディー部の記述様式として、始まりの場所
にbeginや,(,を置き、最後にendや,),を
置くというものを採用してもかまわない。始まりと終り
を示す記述様式については、本発明の主張する本質とは
離れる)。
【0059】また、図1では、ガード部の先頭に関数名
を記述するようになっている。しかし、この関数名は他
の入力引数とほとんど対等な存在であり、入力引数の1
つと考えて良い。つまり、関数の機能を示す関数名を置
いてもよいし、関数の実行の対象となるオブジェクト名
をおいてもよい。
【0060】次に、トランスレータプログラムの具体的
なコーディング例を以下に示すが、以下の例では先頭に
関数実行対象のオブジェクト名を記述している。尚、T
cl/Tkでは、変数として用いる文字列と、定数ある
いは具体値として用いる文字列とを区別する宣言を行な
わない。プログラミング言語処理システムが矛盾のない
ように変数や定数や具体値の判別をして処理を行なう。
この変数と定数あるいは具体値の判別処理の経過は、必
要に応じてログ情報として記録し、デバッグモードなど
の実行過程において、その状況をトレースすることがで
きる。
【0061】「例題プログラム(1):動画表示」Tc
l/Tkによる簡単な動画表示用アプリケーションプロ
グラムのためのスクリプトの作成を行なってみる。Tk
には、絵を描くためのウィジェットであるcanvas
が用意されている。このcanvasを利用して作成さ
れたRecordCanvasというユーティリティプ
ログラムが「自由気ままにtcl/tkプログラミング
(2)」((株)アスキー,UNIX MAGAZIN
E,1993/10)において紹介されている。これ
は、あるcanvas上で行なわれた操作をファイルに
記録するもので、ファイルに記録した操作をあとで再生
することにより簡単な動画表示が可能になる。例えば、
長方形を直線移動させる操作の記述例(長方形を5回連
続して2次元座標位置を移動しながら表示させる)は、
以下のようになる。
【0062】 {create rect 10 20 110 70 -outline black} {addtag area withtag 1} {delete area} {create rect 30 30 130 80 -outline black} {addtag area withtag 2} {delete area} {create rect 50 40 150 90 -outline black} {addtag area withtag 3} {delete area} {create rect 70 50 170 100 -outline black} {addtag area withtag 4} {delete area} {create rect 90 60 190 110 -outline black} {addtag area withtag 5} {delete area}
【0063】実際に、上記のような記述を行うことによ
り、動画表示プログラムの作成が可能である。しかし、
アニメーション芸術家を含めた一般的なユーザにとって
上記プログラムの記述を行うことは負担が大きい。直観
的な動画作成作業に不要な記述も見られる。また、1回
のイメージデータの表示を表示回数分行なうので、コー
ディング量も膨大になる。一般的なユーザが長方形を直
線移動させる操作手順をふまえて指示したいスクリプト
を考えると、「長方形、横長、縦長、動画の種類、範
囲、表示コマ数」のようなスクリプトの構成が思いつ
く。そこで、上記した動画処理記述を実現するスクリプ
トとして、「長方形100 50直線移動(10,2
0)(90,60)5」というフォーマットを採用す
る。以下に、このスクリプトを実現するトランスレータ
プログラムを図1に示すシンタックスに基づいて作成し
た例を示す。
【0064】 長方形 xl yl 直線移動 (xs,ys) (xg,yg) koma -> |xt1 = xs+(xg-xs)/koma*flame |yt1 = ys+(yg-ys)/koma*flame |xt2 = xt1 + xl |yt2 = yt1 + yl |tagninit = 1 |文字列出力 3行 flame(0からkomaまで) |{create rect xt1 yt1 xt2 yt2 -outline black} |{addtag area withtag tagninit+flame} |{delete area}
【0065】「プログラミング処理系の動作」以下に本
発明のプログラミング言語処理システムの動作を説明す
る。また、上記スクリプトを変換するトランスレータプ
ログラムが、本発明のプログラミング言語処理システム
にて、どのように実行処理がなされるかをフローチャー
トに基づき説明する。図2は、本発明のプログラミング
言語処理システムのシステム構成図である。図3は本発
明のプログラミング言語処理システム全体の処理手順を
示す流れ図である。図2において、プログラミング言語
処理システムは、入力管理処理部3とトランスレータデ
ータ記憶部2とトランスレータ実行処理部1とデバッグ
関連処理部4より構成される。そして、入力管理処理部
3はトランスレータプログラムを読み込むトランスレー
タ定義登録部32と、上記トランスレータ定義登録部3
2が読み込んだトランスレータプログラムを1行ずつ読
み込む関数記述読み込み部43と、スクリプトを読み込
む実行スクリプト読み込み部33とにより構成されてい
る。また、入力管理処理部3は、関数名や引数名として
用いる所定の単語と同じ意味を持つ別の単語を同意語と
して登録する同意語定義登録部10と、同意語を定義す
る時の誤りをチェックする登録誤りチェック部17とト
ランスレータプログラムの記述に現れる単語を所定の単
語に置き換える同意語置換部42aとを構成要素として
持つ。また、入力管理処理部3は、トランスレータプロ
グラム中に記述され他のトランスレータプログラムから
も参照可能なグローバル変数名をグローバル変数の値に
置き換えるグローバル変数置換部42bを構成要素とし
て持つ。また、トランスレータデータ記憶部2は、上記
同意語定義登録部10が入力した同意語定義情報を記憶
する同意語定義情報記憶部11と、複数のトランスレー
タプログラム間で参照可能なグローバル変数の変数名と
値を記憶するグローバル変数記憶部34とを構成要素と
して持つ。上記同意語定義情報記憶部11は、さらに、
記憶する同意語を目的別に一般同意語14と分野別同意
語15に分けて記憶する事も可能である。また入力管理
処理部3が入力したトランスレータプログラムを入力引
数や出力引数や本体処理部の各行に分類して記憶する関
数定義処理記述ローカル変数記憶部35を構成要素とし
てもつ。
【0066】また、トランスレータ実行処理部1は、入
力管理処理部3が読み込んだスクリプトをもとに実行対
象となるトランスレータプログラムの候補をトランスレ
ータデータ記憶部2より取り込む関数記述取り込み部4
7と、関数記述取り込み部47が取り込んだトランスレ
ータプログラムの候補の中から実行対象とするトランス
レータプログラムを決定するコミットチョイス判定処理
部5と、トランスレータプログラムに呼び出し関数とし
て記述されている関数の情報を管理する関数呼び出しス
タック管理処理部7と、上記コミットチョイス判定処理
部5により実行対象となるトランスレータプログラムの
実行を行うコミットチョイス後実行処理部6とにより構
成されている。なお、上記コミットチョイス判定処理部
5とコミットチョイス後実行処理部6は、さらに、別の
構成要素より構成されているが、それらの構成要素につ
いては以下の説明の中で詳細な説明を行うのでここでは
詳細な説明を省略する。また、デバッグ関連処理部4は
ブレークポイント設定部38と実行環境表示部39とス
テップ実行部40と実行トレース出力部41より構成さ
れているが、上記38から41の構成要素についても以
下の説明について詳細な説明を行う。このため、ここで
は説明を省略する。
【0067】次に、図3の流れ図の概略を説明する。図
2に示す構成をしているプログラミング言語処理システ
ムは、始めに同意語定義登録部10により同意語定義情
報の読み込みを行う(S1)。同意語定義登録部10よ
り読み込まれた同意語定義情報は、登録誤りチェック部
17によって内容のチェックが行われ、誤りがなかった
場合トランスレータデータ記憶部2の同意語定義情報記
憶部11に記憶される。次にトランスレータ定義登録部
32がトランスレータプログラム記述の読み込みを行う
(S2)。上記S2において読み込まれたトランスレー
タプログラムの記述は関数記述読み込み部43によって
さらに1行ずつ読み込まれる。そして、プログラムの記
述中に現れる同意語やグローバル変数の置き換えが同意
語置換部42aとグローバル変数置換部42bとによっ
て行われる(S3)。次に実行すべきスクリプトが存在
するかどうか実行スクリプト読み込み部33が確認を行
いスクリプトが存在する場合は、実行スクリプト読み込
み部33がスクリプトを読み込んでトランスレータ実行
処理部1においてスクリプトの関数呼び出し情報に記述
されているトランスレータプログラムの実行を行う(S
5)。続いて図3に示したS1〜S5の処理について以
下に詳細な説明を行う。 (1)同意語定義の読み込み(S1) 上記した長方形を直線移動させる操作のプログラムにて
使用する同意語定義を、以下のように定める。 長方形 rectangle rect 直線移動 move 上記定義では、スペースによって各項を区切っているた
とえば「長方形」に対する同意語定義は「長方形」と
「rectangle」と「rect」の3つの項より
合成されていて、最初の「長方形」の項が単語の意味を
示している。そして、「長方形」の後に同じ意味で解釈
したい単語をいくつでも列挙することができる。Tcl
/Tkでは、これらの同意語定義を以下のように、配列
データとして格納できる。 set word(rectangle) 長方形 set word(rect) 長方形 set word(move) 直線移動 さらに、 $word(rectangle) という表記を行うと「長方形」という文字列を返してく
れる。このようにして、同意語データの登録を配列によ
り行なえる。
【0068】この例では、長方形の動画表示のためのス
クリプトとしての同意語定義の例を示したが、move
が直線移動の意味をもつというのは、上記動画表示の応
用に関して限定的な使用方法とみなすことができ、分野
別同意語15に記憶する。一方では、rectangl
eは明らかに長方形の意味と解釈でき、およそ一般通念
として誰も否定しないと思われるので、一般同意語14
に記憶する。このように、一般同意語と分野別同意語に
分類して同意語を記憶すると、プログラミング言語処理
システムが多様な分野のユーザに対して適用する知識を
柔軟に構成することを可能にする。
【0069】一方、既に長方形として登録されたrec
tangleをさらに、四角形として登録しようとする
と、登録誤りチェック部17が同意語登録の重複のチェ
ックを行ない、ユーザに対してエラー表示などを行な
う。同様にして、グローバル変数の定義の登録も行な
う。この例題プログラムではグローバル変数を使用して
いないが、グローバル変数の定義は、以下のような記述
となる。 global_variable -> 12345 上記グローバル変数の定義では「global_var
iable」をグローバル変数名として定義しており変
数の値が「12345」と定義する。こちらも、 set word(global_variable) 12345 というTcl/Tkの記述にて配列データとして登録で
きる。
【0070】(2)トランスレータプログラムの記述の
読み込み(S2) トランスレータプログラムの記述は、関数の定義(グロ
ーバル変数の定義も含む)だけである。但し、トランス
レータ実行処理部1が必要な関数を呼び出して、その処
理手順を参照できればよい。このため、トランスレータ
定義登録部32が入力したトランスレータプログラムの
記述をトランスレータデータ記憶部2にそのまま記憶し
てもかまわない。トランスレータ実行処理部1の実行効
率を考慮して、それぞれの関数記述に整数の識別子を順
番に与え、入力引数、出力引数、本体処理部の各行を分
類してそれぞれ参照できるように関数定義処理記述ロー
カル変数に記憶してもかまわない。
【0071】(3)関数記述中の同意語及びグローバル
変数の置き換え(S3) 同意語及びグローバル変数の置き換えは、スクリプトを
実行するときになって初めて実行してもよいが、通常関
数が複数回呼び出されることになるので、実行処理のコ
ストを考慮して、スクリプトを実行する前に置き換えて
おくことのできる変数類は置き換えておくことにする。
【0072】同意語及びグローバル変数の置き換えを示
す流れ図を図4に示す。図4では、関数記述読み込み部
43が読み込んだトランスレータプログラムを、さら
に、トランスレータ定義登録部32がトランスレータプ
ログラムの記述順に1行ずつ取り出して、空白文字で区
切られた項ごとに評価していく(S6〜S9)。取り出
された項は、同意語置換部42a及びグローバル変数置
換部42bによって単語や記号ごとに分解を行ない(S
10)、得られた単語が同意語やグローバル変数として
登録されているかを同意語定義情報記憶部11及びグロ
ーバル変数記憶部34を参照して調べ、存在すれば具体
的な値に置き換える(S11,S12)。上記項を単語
や記号ごとに分解する処理については、図5に流れ図を
示す。以下に図5の流れ図を用いて1つの項を単語や記
号毎に分解する処理を説明する。
【0073】(4)1つの項を単語や記号ごとに分解
(S10) 1つの項を単語や記号ごとに分解するため、1つの項を
文字列として1文字1文字最初から調べていく。基本的
に文字が連続した場合は、記号が現れるまで続いた文字
列が単語となる。複合項を構成する記号として
は、(),;:[]{}#<>などが考えられる。ただ
し、_(アンダースコア)は、通常関数名を表すのに用
いられるので、文字コードの仲間として加えておく。図
5では項を単語や記号毎に分解するため項の中に現れる
文字を配列にセットする。S13〜S15でそのための
準備を行っている。そして、項の中の文字列を先頭から
1文字毎にポインタを進めてポインタが示している位置
に格納されている文字のコードを調べる(S16)。文
字コードが半角英文字あるいは全角英語文字あるいは全
角英語文字あるいはひらがなや漢字の日本語文字あるい
は数字である場合(S17)、または、記号である場合
(S18)、直前の文字コードが文字列開始状態である
か、または同じ種類のコードであるかを判断し(S2
0)、前の文字コードが文字列開始状態あるいは同じ種
類のコードである場合、配列に上記S16で調べた文字
コードをセットする(S21)。上記S20において、
前の文字コードが文字列開始状態及び同じ種類のコード
でない場合、ヌル文字列(ヌル文字列は単語や記号の区
切りを示す文字列として使用する)を配列にセットする
(S22)。そして、別に新しく単語文字列を格納する
配列を用意する(S23)。上記S23で用意した配列
に上記S16で調べた文字コードを加える(S24)。
上記S21及びS24の処理が終了した後、上記S16
において調べた文字コードを保持する(S25)。続い
て配列のポインタを1文字分前進させる(S26)。そ
の後、S16からの処理を繰り返し行う。もしS16の
処理において文字コードがヌル文字であると判断された
場合(S19)、配列にヌル文字を加え一つの項を単語
や記号毎に分解する処理を終了する(S27)。
【0074】(5)実行スクリプトの関数解釈による実
行(S5) 実行スクリプトの実行は、関数呼び出しの繰り返しにな
る。実行スクリプトの実行処理の流れ図を図6に示す。
【0075】図6において、始めに関数記述取り込み部
47は、スクリプトの関数呼び出し情報に記述されてい
る関数がトランスレータデータ記憶部2に記憶されてい
るか探す(S27〜S28)。従来のプログラミング言
語処理システムでは、登録されている関数を最初から順
番にパターンマッチングを行い、パターンマッチングが
成功するトランスレータプログラムを調べる。そして、
スクリプトの関数呼び出し情報に記述されている内容
と、トランスレータプログラムのガード部の内容が最初
に合致したものを採用する。しかし、このように固定的
な関数記述の選択肢の決定方法であると、プログラマに
とって処理が実行されると期待している関数記述を選択
するための選択肢がソースコードで後の方にある場合、
期待されないものが実行されてしまう可能性がある。
【0076】そこで、明らかにより多くのパターンマッ
チングが成功した関数記述が選択されるという自然な考
えに基づいたコミットチョイスの方式をここでは採用す
る。コミットチョイス方式の説明として、ここでは、最
も多くの項及び項の中の要素が合致したものを選択する
アルゴリズムを例にする。
【0077】スクリプトの関数呼び出し情報の内容とト
ランスレータプログラムのガード部の内容を調べる方法
は、関数呼び出し情報の各項とガード部の各項がパター
ンマッチングするか全ての項を調べるというものであ
る。コミットチョイス判定処理部5は関数呼び出し情報
の項数及び要素数と、ガード部の項数及び要素数が一致
するもののみ、パターンマッチング処理の対象とする
(S29)。
【0078】関数呼び出し情報と、ガード部を構成する
各項は、単純に1つの単語からなる単一項と、いくつか
の記号で複数の単語が構造化された複合項とがある。各
項が合致するかどうかは、単一項、及び、複合項の各要
素がそれぞれ合致するかどうかということである。Tc
l/Tkのような論理型プログラミング言語の概念的な
枠組からすれば、これら単一項も複合項の各要素もその
パターンマッチングの条件の重みとしては等価である。
ここでは、1つの項として合致するものが最大であるも
のをまず選択候補として絞り、さらにその合致項が同数
であった場合に、複合項の各要素の合致数が最大である
ものを選択するという2段階のコミットチョイス方式を
採用した。このパターンマッチング処理の流れ図を図
7、図8、に示す。図7では、S41〜S43に示すよ
うにコミットチョイスのアルゴリズムを3通りのものか
ら選べるようにしている。
【0079】図7及び図8の流れ図について説明する。
図7では、はじめに入力引数判定部44がスクリプトに
記述されている関数呼び出し情報とトランスレータプロ
グラムの関数定義情報に現れる各項を比較してすべての
項と複合項におけるすべての要素とが合致することを調
べる(S38)。上記S38の流れ図は図8のS46〜
S60に示す通りである。図8の処理では、スクリプト
に記述されている関数呼び出し情報に項が存在する場合
(S47)関数記述取り込み部47がトランスレータデ
ータ記憶部2より読み込んだトランスレータプログラム
の候補の一つについて、ガード部に定義されている関数
定義情報に項が存在するか調べる(S48)。そして、
上記S48の処理でガード部の関数定義情報に項が存在
する場合、関数呼び出し情報に存在する項を構成する文
字列と関数定義情報に存在する項を構成する文字列が等
しいことを確認する(S49)。等しい場合は、合致項
数を加算する(S50)。そして、スクリプトに記述さ
れている関数呼び出し情報の項の数を加算する(S5
1)。この後、再びスクリプトに記述されている関数呼
び出し情報の次の項が存在するかどうか調べ(S4
7)、上記S47の処理から繰り返し行う。また、上記
S47において、関数呼び出し情報に項が存在しない場
合、かつ、ガード部に項が存在する場合(S52)、関
数呼び出し情報に存在する項と、ガード部に存在する項
が対応しないため、項要素対応フラグをOFFオフにし
て図8の処理を終了する。また、上記S48において、
関数呼び出し情報に項が存在し、カード部に項が存在し
ない場合も、上記S53と同様に項要素対応フラグをO
FFにして図8の処理を終了する。また、上記S49に
おいて、文字列が等しくない場合、関数呼び出し情報に
存在する項とガード部の関数定義情報に存在する項につ
いてそれぞれの項を単語や記号に分解する。分解は図5
に示す手順で行う。上記S54の処理において、関数呼
び出し情報の項とガード部の関数定義情報の項が両方と
も単一項である場合は(S55)、関数呼び出し情報の
項の数を加算する(S51)。上記S55において関数
呼び出し情報の項と関数定義情報の項がどちらか一方が
複合項である場合、両項の項の中に現れる要素を比較す
る。このとき、文字列同士が一致したり記号同士が一致
した場合、要素数を記録しておく(S56)。上記S5
6の処理において一致する要素がある場合、関数呼び出
し情報の項と関数定義情報の項が両項とも複合項であれ
ば(S58)合致工数を加算する。また、合致要素数に
上記S56において、記録した一致した要素数を加算す
る。さらに、関数呼び出し情報の項を加算する(S5
9)。上記S58において、関数呼び出し情報の項と関
数定義情報の項がどちらか一方が複合項でない場合は、
合致要素数に上記S56において、記録した一致要素数
を加算する。また関数呼び出し情報の項の数を加算する
(S60)。また、上記S57の処理において、一致す
る要素が存在しなかった場合、項要素対応フラグをOF
Fにして(S53)図8の処理を終了する。
【0080】以上のように図8に示す処理では入力引数
判定部44がトランスレータプログラムの候補の1つず
つについて関数定義情報とスクリプトに記述されている
関数呼び出し情報とを比較して一致する項数や項数の中
の一致する要素数を調べる。項数や要素数を調べた後、
図7のS39の処理において、関数記述選択部45はセ
ットした項要素対応フラグがONであるかどうか調べ、
ONであればトランスレータプログラムの候補の中に実
行対象となるトランスレータプログラムが存在すること
を判断し、コミットチョイスのアルゴリズムを実行する
(S40〜S43)。上記でも説明したように、図7で
はコミットチョイスのアルゴリズムを3通りのものから
選べるようにしている。第1はS41の処理であり、図
8において求めた合致要素数の大きいものを選択する。
第2は上記S42の処理であり、上記図8で求めた関数
呼び出し情報の中の項の番号の小さい方から順に合致項
数及び合致要素数を確認し、合致項数と合致要素数の多
いものをトランスレータプログラム候補の中から選択す
る。また、第3はS43に示されている処理であり、ユ
ーザが予め指定を行っている関数呼び出し情報の中の項
の順番で合致項数及び合致要素数がもっとも大きいもの
をトランスレータプログラム候補の中から選択する。上
記S41〜S43のアルゴリズムの設定は選択アルゴリ
ズム設定8によってユーザが予め行っておく。また、上
記S41〜S43の処理を行った後、実行対象となって
いるトランスレータプログラムは複数存在する場合もあ
る。そして、最終関数記述選択判定部46は、上記S4
3までの処理を行った後実行対象となっているトランス
レータプログラムの候補の合致項数と合致要素数を比較
し、項数及び要素数の大きいトランスレータプログラム
候補を有力候補として選択する(S45)。尚、合致項
数及び合致要素数が同数である場合は最終関数記述選択
判定部46は複数のトランスレータプログラムを有力候
補としておく。
【0081】上記の2段階のパターンマッチングとは、
同じ文字列として一致する場合をマッチする対象として
いる。スクリプトの関数呼び出し情報の中の項とトラン
スレータプログラムのガード部に定義されている関数定
義情報の中の項とが一致するか確認する処理は図8で行
っている。そして、図7のS44,S45において最終
関数記述選択判定部46がトランスレータプログラムの
候補から最終的に実行対象とするトランスレータプログ
ラムの有力候補を選択する。上記2段階のパターンマッ
チングとは、図7のS41〜S43(これを1段階目の
パターンでマッチング処理とする)と図7のS44(こ
れを2段階目のパターンマッチング処理とする)の処理
を指す。さらに、上記最終関数記述選択判定部46は図
6のS30からS35の処理において、実行するトラン
スレータプログラムを1つ選択する。図6のS31で
は、有力候補となったトランスレータプログラムが1つ
であれば、そのトランスレータプログラムを実行対象と
する。また、S32の処理では有力候補となったトラン
スレータプログラムが2つ以上ある場合、最終的に絞り
込まれた候補が複数あることをユーザに対して警告を行
う。また、S33の処理では、有力候補となったトラン
スレータプログラムが存在しない場合、実行対象とする
トランスレータプログラムがないので、ユーザに対して
エラーを警告する。また、上記S32において、有力候
補となったトランスレータプログラムが2つ以上ある場
合は、ユーザに対して警告を行っているが、このときど
ちらのトランスレータプログラムを実行するかユーザが
選択できるようにしてもかまわない。また、プログラム
言語処理システムが、何らかの条件に基づいて実行する
トランスレータプログラムを選択してもかまわない。例
えば、トランスレータプログラムの候補として選択され
た順に基づいて最初に選択されたトランスレータプログ
ラムを実行対象とする例が考えられる。そして、図6の
S36の処理において、実行対象となったトランスレー
タプログラムのガード部内の変数名が記述されている
項、あるいは、複合項の変数要素には、変数置換実行部
12により関数呼び出し情報に記述されている該当する
文字列が具体値として代入されることになる。つまり、
ローカル変数の定義情報が付加されるのである。上記S
31〜S33のコミットチョイス処理の経過は、入力引
数判定ログ収集部44aが必要に応じてログ情報として
記録し、ユーザはデバッグモードなどの実行過程におい
て、その状況をトレースすることができる。このように
して、関数呼び出し情報に記述されている内容が実行対
象となったトランスレータプログラムのカード部に反映
され、具体的な本体の処理を実行する(S37)。
【0082】(6)上記関数呼び出し情報に記述されて
いる情報が実行対象となったトランスレータプログラム
のガード部に反映され具体的な本体の処理を実行するS
37の処理について以下に処理の説明を行う。図9は、
トランスレータプログラムの本体部の処理の流れ図であ
る。トランスレータプログラムの本体部には、処理の内
容が複数行記述されており、トランスレータ実行処理部
1は、本体処理記述の行が存在するかぎり、行ごとの関
数を実行する(S62)。各行の第1項が基本的に関数
名を示す。このため、関数記述取り込み部47が第1項
を調べて、S64〜S85の個別の関数の処理に分岐す
る。組込関数は、適宜必要なものを実装する。ユーザ定
義関数については、さらに、前述の図6に示した処理を
実行する(S82)。
【0083】また、本処理系では、一般的な数式処理、
つまり、組込述語「=」による演算処理をサポートする
(S80)。該当関数が存在しない場合に、「=」を探
し(S83)数式計算処理を行なう(S85)。さらに
「=」もないような状況では、エラーとする(S8
4)。上記S85の数式計算処理を以下に説明する。
【0084】(7)右辺を数式計算処理し左辺を求める
(ローカル変数として登録)処理。図10、図11は、
数式計算処理の詳細な流れ図を示す図である。図10、
図11に示した数式計算処理は、一般的なプログラミン
グ言語と異なる数式計算処理となっており、変数の宣言
を全く行なわずに、プログラミング処理システムが本体
処理部に定義されている処理情報の中のどの文字列が変
数かを自動的に判断し、具体値を代入し計算を行なうも
のである。
【0085】数式演算処理29は、処理情報の中に定義
されている数式を演算子記号とそれ以外の文字とに区別
し、演算子記号で区切られた文字列を一固まりの定数、
あるいは、変数として配列データに分類する(S90,
S91)。上記S91の式を演算子、数値及び変数に分
解する処理は図11に示されている手順で行う。図11
ではポインタ位置よって調査中の文字コードの位置を示
している。ポインタ位置が示す文字コードの値が文字
(S104)または、演算子記号である「+,−,*,
/,),(」である場合は(S105)、ポインタ位置
の文字コードが直前の文字コードと同じであるかまたは
直前の文字コードが文字列開始状態であるを調べる(S
108)。ポインタ位置の文字コードが直前の文字コー
ドと同じであるかまたは直前の文字コードが文字列開始
状態である場合は、文字列が続いているものとして単語
文字列の配列に文字コードを加える(S109)。ま
た、調べている文字コードの前の文字コードが文字列開
始状態でなく、かつ、調べている文字コードと直前の文
字コードが同じでない場合は、単語文字列が直前の文字
コードの位置で終了しているものとして配列にはヌル文
字列をセットする(S110)。そして、別の単語文字
列の配列を用意し(S111)、用意した配列に現在の
文字コードをセットする(S112)。そして、ポイン
タを1つ前進させる(S114)。また、S103の処
理において、ポインタの位置が示す文字コードが空白文
字であった場合は(S106)、空白文字は無視して読
み出しポインタを1つ前進させる(S115)。また、
ポインタの位置が示す文字コードがヌル文字であった場
合(S107)、単語文字列の配列にヌル文字列をその
ままセットする(S116)。さらに、単語である変数
については、変数置換実行部13が、トランスレータデ
ータ記憶部2に登録されているグローバル変数、あるい
は、ローカル変数を調べて具体的な値を代入する(S9
2)。そして、完全に置き換えられない変数について
は、そのまま残し、後続の処理の中で、具体値に置き換
わるのを待つことになる。この具体値への置き換えの経
過は、必要に応じてログ情報として記録し、デバッグモ
ードなどの実行過程において、その状況をトレースする
ことができる。上記S92において、数式演算処理29
は、置き換えが終了した数式を可能な限り計算処理を行
っておく(S93)。そして、変数置換実行部13は、
変換した右辺を左辺のローカル変数の値として登録して
おく(S94)。上記登録はトランスレータデータ記憶
部2の関数定義処理記述ローカル変数記憶部35に登録
するものとする。
【0086】次に、「引数の順序のチェック機能の実
現」について以下に説明する。C言語を始めとした一般
のプログラミング言語では、関数の引数の順序は固定さ
れている。本実施の形態1において採用しているプログ
ラミング言語においては、スクリプトの呼び出し情報の
記述中の各項に対して、特に関数名に対しての引数とい
う位置付けを重視していない。プログラマにとって、関
数呼び出し情報記述中での引数の出現順序を記憶してお
くことは、確かにコーディング作業中に大きな負担とな
る。コーディング作業中にできるかぎりバグを取り除い
ておこうとすれば、引数の出現順序を絶えず確認してお
くことは、当然合理的な選択でもある。
【0087】一方、引数の使用方法の概念の一つに、V
isualBASIC(Microsoft社が開発し
たプログラミング言語)に見られるような名前つき引数
という引数自体がその引数の種類を示す属性名とともに
指定されるものがある。これは、入力される引数の順序
がどのようなものであってもよいことを示している。
【0088】そこで、本発明のプログラミング言語処理
システムがサポートする機能として、関数呼び出し情報
記述中の引数の出現順序をチェックする手法がある。例
えば各引数において明らかに数値しかこない、或いは特
定の単位を持った数値しかこない、3文字の文字列しか
こない、特定の単語のうちのどれかしかこないなどの出
現の特徴を考慮して、その引数の属性をチェックするこ
とが検討できる。この手法では、類似した性質の引数に
対しては、当然チェックの対象外となってしまうが、プ
ログラマやスクリプトを作成するユーザにとって、この
程度のチェックでも自動的になされれば、わざわざ対象
関数のソースコードを読み直す負担が軽減される。
【0089】この手法をさらに積極的に利用するため
に、特定の単位をなるべく数値引数に対して付加するこ
とも可能である。このように特定の引数の特徴を積極的
に引数自体に与えることは、上記の名前付き引数の手法
に近いものがある。ただし、引数の持つ厳密な名前を記
憶するよりも、単位を示す単純な単語のほうが、明らか
に記憶しやすいので利点がある。
【0090】このように、引数の特徴を把握するために
は、各関数の記述の引数パターンについて、事前にどれ
が変数でどれが具体値であるか調べておく必要がある。
この事前調査をどこまで詳細に行なうかで、いく通りか
のレベル分けも想定できる。最も単純なものは、数値引
数だけをチェックするものである。
【0091】この引数のチェックを行なった処理結果の
反映としては、誤り結果をユーザに警告したり、自動的
に正しい順序に修正して実行を継続したり等の選択肢が
ある。さらに、この引数順序のチェックをプログラム記
述レベルで行なうか、ユーザが入力するスクリプトのみ
で行なうかという選択肢もある。したがって、このチェ
ック処理のレベル、実行箇所、後処理などで、いくつか
のモードを設定しその選択を行なうことができる。
【0092】本実施の形態のプログラム例では、ユーザ
が入力するトップスクリプトにおいて、引数順序のチェ
ックを行なうことを検討してみる。紹介したトップスク
リプトの例は、「長方形 100 50 直線移動(1
0,20)(90,60) 5」である。この引数順序
が誤った例としては、以下のようなものが考えられる。 長方形 直線移動 100 50 (10,20) (90,60) 5 長方形 100 50 直線移動 5 (10,20) (90,60) 長方形 直線移動 100 50 5 (10,20) (90,60)
【0093】ユーザがスクリプトの引数順序を取り違え
るとしても、長方形の横幅と縦幅を切り離したり、始点
座標と終点座標を切り離したりすることは考えにくい。
むしろ、一般的に誤りにくい引数順序を考慮して関数記
述のフォーマットを設計すべきである。とりあえず、こ
こでは、単純に引数の特徴を以下のように抽出してみ
る。
【0094】 第1項 第2項 第3項 第4項 第5項 第6項 第7項 オブジェクト名 横幅 縦幅 動作指令 始点座標 終点座標 表示コマ数 文字列 数値 数値 文字列 複合数値 複合数値 数値
【0095】上記に示すように、各引数の特徴として、
文字列、数値、複合数値の3種類を示すだけでも、ユー
ザが入力したスクリプトが誤っていると警告することが
できる。引数が2つしかなく一方が数値であり一方が文
字列であるような場合は、明らかに引数順序の逆転を指
摘できるので、自動的に正しい順序に修正して実行を継
続することも可能になる。このように、自動的な修正を
行ない、実行処理を継続した場合に、その判断の材料と
なった上記のような各引数の特徴について、ログ情報を
記録しておき、どのように自動修正処理がなされたか、
実行後に確認することができる。上記引数順序のチェッ
クは入力管理処理部3のスクリプト確認部10bが行
う。また、上記したような関数記述のフォーマットは、
トランスレータデータ記憶部2のフォーマット情報記憶
部11aに予めスクリプトを作成するユーザまたは、ト
ランスレータプログラムを作成するプログラマが登録し
ておく。登録は入力管理処理部3のフォーマット情報登
録部10aによって行う。スクリプト確認部10bは実
行スクリプト読み込み部33が入力したスクリプトをフ
ォーマット情報記憶部11aを参照しながら引数の順序
を確認する。確認の結果エラーがあると判断した場合
は、スクリプト警告部10cはユーザに対してエラーの
警告を行う。また、上記で説明した自動的に正しい順序
に修正できるような場合は、スクリプト修正部10dが
引数順序の修正を行う。さらに、上記したログ情報の記
録はスクリプト修正ログ情報収集部10eが収集を行う
ものとする。
【0096】また、上記では、トランスレータプログラ
ムのプログラマやスクリプトを作成するユーザが引数の
特徴を抽出して抽出した特徴をフォーマット情報記憶部
11aに予め登録していた。しかし、引数の特徴の抽出
を人間が行うのではなくプログラミング言語処理システ
ムがトランスレータプログラムに定義されている関数定
義情報を参照して引数の特徴を抽出することも可能であ
る。図12に、スクリプト実行前の引数の単純な特徴抽
出処理の流れ図を示す。図12の流れ図では、初めに関
数記述取り込み部47がトランスレータデータ記憶部2
よりトランスレータプログラムを取り込み、取り込んだ
トランスレータプログラムに関数定義記述がなされてい
る場合(S120,S121)、入力引数判定部44が
上記トランスレータプログラムのガード部に項が存在す
るか確認する(S123)。項が存在する場合、入力引
数判定部44はさらに単一項の数値であるか単一項の文
字列であるか複合項であるかを判定する(S124〜S
127)。単一項数値である場合、入力引数判定部44
は、上記項が数値であることをフォーマット情報記憶部
11aに記憶する(S128)。また、項が単一項文字
列である場合、その文字列が数値式の中に存在するもの
であれば(S129)上記S128と同様にフォーマッ
ト情報記憶部11aに数値として登録する。上記S12
9において、文字列が数値式内に出現していない場合は
入力引数判定部44は、当該項を文字列としてフォーマ
ット情報記憶部11aに登録する(S130)。また、
項が複合項である場合はさらに項内の要素をチェックす
る(S131,S132)。要素が存在する場合、その
要素の出現箇所が数値式の中であれば(S133)入力
引数判定部44はフォーマット情報記憶部11aに当該
項を数値として登録する(S134)。また、数値式内
に出現しない場合は、当該項を文字列としてフォーマッ
ト情報記憶部11aに登録する(S135)。このよう
に、プログラム言語処理システムのトランスレータ実行
処理部1において、登録したトランスレータプログラム
の引数の特徴情報を調査し、調査した結果の特徴情報を
フォーマット情報記憶部11aに記憶させることもでき
る。
【0097】次に、この発明の1つである引数が単位を
有する数値データである場合の「単位を有する数値デー
タの引数への対応」について以下に説明する。前述した
ように、引数の数値データに単位を付与することは、ス
クリプトや関数を利用する側が、その引数の特徴を意識
して積極的に誤りを排除しようという努力に通じる。ス
クリプトを実行するシステム環境において有効となるの
であれば、プログラミング言語処理システムもユーザか
らの単位情報から有効な情報を獲得し、デバッグ支援な
どに活用すべきである。
【0098】引数に単位を付与したスクリプトを入力す
る例を以下に示す。
【0099】 長方形 100 50 直線移動 (10,20) (90,60) 5 長方形 100pitch 50pitch 直線移動 (10,20) (90,60)
5コマ
【0100】ここで、単位情報を引数のもつ特徴として
積極的に利用したいのであれば、使用する単位の文字列
自体の定義を、事前入力するか、プログラム中に書いて
おき、その引数の属性的な情報を登録しておく必要があ
る。もちろん、単に、数値データとして抽出して単位の
文字列は削除する方策をとることもできる。
【0101】上記した引数情報の事前入力の方式の一例
には、以下に示す関数の記述例の1行目のように、関数
の記述形式に単位情報を設定しておくものがある。
【0102】長方形 xl(単位:pitch) yl(単位:pitch)
直線移動 (xs,ys) (xg,yg) koma(単位:コマ) ->
【0103】このように関数を記述した場合は、「(単
位:XXX)」の記述は、プログラミング言語処理シス
テムにより引数の単位を示す情報であると認識される。
プログラミング言語処理システムは、引数の単位情報と
して上記XXXの単位としての文字列を後で参照できる
ように、フォーマット情報記憶部11aに記録のみを行
なう。ただし、このように特殊な記述規則を定めること
は、本発明のプログラミング言語処理システムの単純
性、容易性を低下させてしまうので、オプション機能と
して限定できるものにすべきである。
【0104】実施の形態2.以下、この発明の一実施の
形態を図について説明する。この実施の形態2も、実施
の形態1の図2と同様な構成のプログラミング言語処理
システムである。ここでは、本発明のプログラミング言
語処理システムが単語を並べた文字列により構成される
スクリプトを最終的にプログラムとして解読可能な文字
列に置き換えるという基本的な機能に着目し、関数を呼
び出すスクリプトが単独の関数を呼び出すだけではな
く、複数の連続した関数を呼び出す長文的なスクリプト
を実行解釈できる機能を説明する。
【0105】まず、スクリプトの関数呼び出し情報を記
述する形式として、普通に一般ユーザが要求するものの
例を図13に示す。図13において、(A)は(B)〜
(F)に図示している関数呼び出し情報の構成を説明す
るものであり、(B)〜(F)は、(A)に示している
ように関数呼び出し行を項1、項2、項3・・・の形式
で記述する。一般のスクリプトは、単独の関数を呼び出
す図13の(B)のように記述される。しかし、実際に
は、(C)〜(F)のような形式でもスクリプトを記述
できれば、スクリプトを書きやすいものにするし、可読
性を高めることになる。本発明のプログラミング処理シ
ステムでは、これら全ての対応処理を可能にする。
【0106】この実施の形態2では、(F)の記述形式
について、具体例を説明する。(F)の記述形式は連続
した関数の呼び出しにおいて、先行した関数実行の情報
を後続する関数実行へと渡すという意味があり、連続し
て実行される関数がお互いに副作用を持つようなプログ
ラムを記述するのに適している。
【0107】一例として、メール関連機能をもつUNI
X上のシェルコマンド(Cシェル)を仮想的に定義し
て、シェルスクリプトによるメールエージェントプログ
ラムを作成することで、簡単な購買申請のワークフロー
を実現した場合のワークフロー定義用のスクリプトを作
成してみる。ここでは、実装例を簡単に示すために、各
ユーザ端末上において各種ワークフローごとにメールエ
ージェントプロセスを起動することにする。
【0108】まず、メール関連機能をもつシェルコマン
ドを図14のように定義してみる。図14では、5つの
シェルコマンドを示している。まず、(A)ではメール
を送信するコマンドを示し、(B)ではメールが自分宛
に届いているかどうか調べるコマンドを示し、(C)で
は自分宛に届いているメールの内容のあるファイル名を
調べるコマンドを示し、(D)では自分宛に届いたメー
ルの送り主を調べるコマンドを示し、(E)では自分宛
に届いたメールをフォワードするコマンドを示してい
る。
【0109】次に、実際の職場の各担当者、各上長のメ
ールエージェントスクリプトをワークフロー定義から作
成してみる。ワークフロー定義用のスクリプト例は以下
のようになる。以下に示す[1]や[2]をそれぞれ実
行すると、各ユーザごとのメールエージェントシェルス
クリプトが出力される。ここで、ワークフロー定義関数
のプログラムの記述を簡略化し読みやすくするために、
図13(F)に示す形式の連続関数呼び出しのスクリプ
トの中でその関数処理に必要な部分のみを記述し、後続
する部分をあえて記述しないように、省略記
号「...」を使用する。「...」の意味は、後続す
る部分をそのまま置き換えることを示している。まず、
同意語の定義を以下のように行う。
【0110】同意語定義 suzuki 鈴木T sato 佐藤T tanaka 田中K yamada 山田B shizaika 資材課 次にワークフロー定義スクリプトを以下のように作成す
る。
【0111】ワークフロー定義スクリプト [1] 鈴木T(購買申請) → 田中K(購買認可) → 鈴木T(購
買申請) → 資材課 [2] 佐藤T(購買申請) → 田中K(購買申請) → 山田B(購
買認可)→ 田中K(購買認可) → 佐藤T(購買申請) → 資
材課 (注意:2、3行目は連続したもの)
【0112】上記したワークフロー定義スクリプト
[1]は「鈴木T」が上長である「田中K」に購買申請
を行い、購買認可がされたら資材課に対して購買申請を
行うスクリプトである。また、[2]は「佐藤T」が上
長である「田中K」に購買申請を行いさらに、上長の
「田中K」が上上長である「山田B」に購買申請を行
い、「山田B」が購買認可を「田中K」に対して行い、
さらに、「田中K」が購買認可を「佐藤T」に行い、
「佐藤T」が資材課に購買申請を行うというワークフロ
ーを定義するスクリプトである。次にワークフロー定義
関数であるトランスレータプログラムを以下に示す。
【0113】 ワークフロー定義関数 (A)Tantosya(購買申請) → Jocho(購買認可) -> | 購買申請メール送信 Tantosya Jocho | 購買申請メール受信 Jocho | Jocho(購買認可) ...
【0114】 (B)Tantosya(購買申請) → Jocho(購買申請) -> | 購買申請メール送信 Tantosya Jocho | 購買申請メール受信 Jocho | Jocho(上長購買申請) ...
【0115】 (C)Tantosya(上長購買申請) → Jocho(購買認可) -> | 上長購買申請メール送信 Tantosya Jocho | 購買申請メール受信 Jocho | Jocho(購買認可) ...
【0116】 (D)Jocho(購買認可) → Tantosya(購買申請) -> | 購買認可メール送信 Jocho | 購買認可メール受信 Tantosya | Tantosya(購買申請) ...
【0117】 (E)Jocho(購買認可) → Tantosya(購買認可) -> | 購買認可メール送信 Jocho | 上長購買認可メール受信 Tantosya | Tantosya(上長購買認可) ...
【0118】 (F)Jocho(上長購買認可) → Tantosya(購買申請) -> | 上長購買認可メール送信 Jocho Tantosya | 購買認可メール受信 Tantosya | Tantosya(購買申請) ...
【0119】 (G)Tantosya(購買申請) → 資材課 -> | 購買資材課メール送信 Tantosya
【0120】 (H)購買申請メール送信 Tantosya Jocho -> | ファイル指定文字列出力 7行 Tantosya.csh |# 購買申請用担当者メールエージェントスクリプト |# |# コマンド: kobai_send 製品名 価格 個数 |# $1 $2 $3 |# |##### 担当者 → 上長 ##### |sendmail Tantosya Jocho ■購買申請■ ■$1 (価格:$2)を $3 個、購 入申請致します。■
【0121】 (I)購買申請メール受信 Jocho -> | ファイル指定文字列出力 13行 Jocho.csh |# 購買申請用上長メールエージェントスクリプト |# |# コマンド: kobai_reply |# |# |while (true) | ##### 担当者 → 上長 ##### | @ set mailflag `checkmail Jocho` | while ($mailflag == 0) | @ set mailflag `checkmail Jocho` | end | @ set filename `readmail Jocho $mailflag` | cat $filename
【0122】 (J)上長購買申請メール送信 Tantosya Jocho -> | ファイル指定文字列出力 2行 Tantosya.csh | ##### 上長 → 上々長 ##### | forwardmail Tantosya Jocho $
filename
【0123】 (K)購買認可メール送信 Jocho −> | ファイル指定文字列出力 14行 Jocho.csh | ##### 上長 → 担当者 ##### | @ set from `whosemail $filename` | echo この購買申請を認可致しますか\? (y or n) | set ans = $< | while (■$ans■ != ■y■ && ■$ans■ != ■n■) | echo もう一度入力して下さい。 (y or n) | set ans = $< | end | if (■$ans■ == ■y■) then | sendmail Jocho $from ■購買認可■ ■貴君の購買申請 を認可致します。■ | else | sendmail Jocho $from ■購買不認可■ ■貴君の購買申 請は認可致しません。■ | endif |end
【0124】 (L)上長購買認可メール送信 Jocho Tantosya -> | ファイル指定文字列出力 14行 Jocho.csh | ##### 上長 → 担当者 ##### | echo この購買申請を認可致しますか\? (y or n) | set ans = $< | while (■$ans■ != ■y■ && ■$ans■ != ■n■) | echo もう一度入力して下さい。 (y or n) | set ans = $< | end | if (■$ans■ == ■y■) then | sendmail Jocho Tantosya ■購買認可■ ■貴君の購買申 請を認可致します。■ | else | sendmail Jocho Tantosya ■購買不認可■ ■貴君の購買 申請は認可致しません。■ | endif |end
【0125】 (M)購買認可メール受信 Tantosya -> | ファイル指定文字列出力 7行 Tantosya.csh |##### 上長 → 担当者 ##### |@ set mailflag `checkmail Tantosya` |while ($mailflag == 0) | @ set mailflag `checkmail Tantosya` |end |@ set filename `readmail Tantosya $mailflag` |cat $filename
【0126】 (N)上長購買認可メール受信 Tantosya -> | ファイル指定文字列出力 7行 Tantosya.csh | ##### 上々長 → 上長 ##### | @ set mailflag `checkmail Tantosya` | while ($mailflag == 0) | @ set mailflag `checkmail Tantosya` | end | @ set filename `readmail Tantosya $mailflag` | cat $filename
【0127】 (O)購買資材課メール送信 Tantosya −> | ファイル指定文字列出力 5行 Tantosya.csh |##### 担当者 → 資材課 ##### |@ set reply `grep -c ■不認可■ $filename` |if ($reply == 0) then | sendmail Tantosya shizaika ■購買申請■ ■$1 (価格:$2)を $3 個、購入申請致します。■ |endif
【0128】実際に、上記(A)〜(O)のワークフロ
ーの定義関数を用いてスクリプト[1]を実行し、出力
されるシェルスクリプトファイルを以下に示す。出力さ
れるシェルスクリプトファイルは、「鈴木T用」と「田
中K用」の2つのメールエージェントスクリプトファイ
ルである。始めに「鈴木用」のメールエージェントスク
リプトファイルを作成する。上記した[1]のワークフ
ロー定義スクリプトはワークフロー定義関数の(A)に
該当する。そして、(A)のワークフロー定義関数は、
(H)と(I)のワークフロー定義関数を明示的に記述
するとともに、上長が購買認可を行い担当者が購買申請
を行う(D)に示されているワークフロー定義関数を省
略記号で記述している。そして、さらに(D)のワーク
フロー定義関数は(K)と(M)のワークフロー定義関
数を明示的に記述するとともに、担当者が資材課に対し
て購買申請を行う(G)のワークフロー定義関数を省略
記号で記述している。そして、(G)のワークフロー定
義関数は(O)のワークフロー定義関数を明示的に記述
している。このため、[1]のワークフロー定義スクリ
プトは上記したワークフロー定義関数の(H)と(I)
(K)(M)(O)の5つのワークフロー定義関数を展
開する。各ワークフロー定義関数を展開すると、「Ta
ntosya.csh」のスクリプトファイルと「Jo
cho.csh」のスクリプトファイルに展開される。
スクリプトファイルのファイル名には担当者及び上長の
名前が当てはめられ、「鈴木T」用のメールエージェン
トスクリプトファイルは「suzuki.csh」とな
る。また、「田中K」用のメールエージェントスクリプ
トファイルは、「tanaka.csh」となる。以下
に、「鈴木T」用のメールエージェントスクリプトファ
イルと、「田中K」用のメールエージェントスクリプト
ファイルを示す。
【0129】 (A) 鈴木T用のメールエージェントスクリプトファイル suzuki.csh # 購買申請用担当者メールエージェントスクリプト # # コマンド: kobai_send 製品名 価格 個数 # # $1 $2 $3 ##### 担当者 → 上長 ##### sendmail Tantosya Jocho ■購買申請■ ■$1 (価格:$2)を $3 個、購入申請致 します。■ ##### 上長 → 担当者 ##### @ set mailflag `checkmail suzuki` while ($mailflag == 0) @ set mailflag `checkmail suzuki` end @ set filename `readmail suzuki $mailflag` cat $filename ##### 担当者 → 資材課 ##### @ set reply `grep -c ■不認可■ $filename` if ($reply == 0) then sendmail suzuki shizaika ■購買申請■ ■$1 (価格:$2)を $3 個、購入申 請致します。■ endif
【0130】 (B) 田中K用のメールエージェントスクリプトファイル tanaka.csh # 購買申請用上長メールエージェントスクリプト # # コマンド: kobai_reply while (true) # # ##### 担当者 → 上長 ##### @ set mailflag `checkmail tanaka` while ($mailflag == 0) @ set mailflag `checkmail tanaka` end @ set filename `readmail tanaka $mailflag` cat $filename ##### 上長 → 担当者 ##### @ set from `whosemail $filename` echo この購買申請を認可致しますか\? (y or n) set ans = $< while (■$ans■ != ■y■ && ■$ans■ != ■n■) echo もう一度入力して下さい。 (y or n) set ans = $< end if (■$ans■ == ■y■) then sendmail tanaka $from ■購買認可■ ■貴君の購買申請を認可致 します。■ else sendmail tanaka $from ■購買不認可■ ■貴君の購買申請は認可 致しません。■ endif end
【0131】上記したように、図13(F)に示す形式
の連続関数呼び出しのスクリプトの中でその関数処理に
必要な部分のみを記述し、後述する部分をあえて記述し
ないように省略記号「…」を使用しても、本発明におけ
るプログラミング言語処理システムを用いればスクリプ
トを自動的に展開させることができる。
【0132】実施の形態3.以下、この発明の一実施の
形態を図について説明する。この実施の形態3も、本発
明のプログラミング言語処理システムは、上記実施の形
態1の図2と同様の構成とする。また、上記実施の形態
2では、図13の(F)について説明したが、実施の形
態3では図1の(D)の形式を用いてトランスレータプ
ログラムを記述する場合を具体例にて説明する。尚、
(D)の記述形式は、連続する数の多い変数配列データ
の格納を行なうのに適している。また、複数の同レベル
の引数をもつ関数を1回だけ呼び出す場合と比較して異
なる点は、入力対象となる引数個数が固定されていない
ことである。
【0133】ここでは、連続する数の多い変数配列デー
タを取り扱う代表的な例として、音楽の音符データを取
り上げてみる。また、計算機に曲データを自動作曲させ
る環境を構築することを検討する。
【0134】まず、素材となる曲を構成する各音符情報
として、music instrument digi
tal interface(以下MIDIと略す)デ
ータを取り上げる。このMIDIデータを楽器の音色デ
ータを持つ音源ボードなどで再生させれば、そのまま音
楽データの素材として利用できる。このMIDIは、世
界の計算機業界で最も使用されている音楽情報のフォー
マットである。このMIDIデータは楽譜の情報や演奏
法の情報だけが記述されており、使用される楽器の音色
データは記述されていない。
【0135】MIDIデータにおいて、記述される各音
の基本的なデータ形式は、以下のようなものである。
【0136】(記述3.0) 発音されるタイミング、音源装置へのイベント情報、パ
ラメータ情報 具体的にある一つの音を発生させるのに、最低2つの上
記のデータがあればよく、以下のようになる。
【0137】 (記述3.1) 最初に発音される時刻、チャネル1で(第2番目の)ドを発音、強弱度96 発音を終了する時刻、 チャネル1で(第2番目の)ド、 強弱度64 これだけの情報で1つの音を発生させることができるの
で、楽譜の情報をそのまま上記のMIDIデータに単純
に変換させることができる。既に、MIDIデータと楽
譜データを相互に変換するソフトウェアは市販されてい
る。ちなみに、上記のMIDIデータのダンプ形式は以
下のようになる。
【0138】 (記述3.2) デルタ時刻 イベントコード パラメータバイトデータ 96 90 48 96 144 80 48 64
【0139】上記(記述3.2)に示したパラメータバ
イトデータの「48」は、2番目のオクターブを示して
いる。これは、上記(記述3.1)で示した楽譜の情報
において、2番目のドを発音することを示している。M
IDIでは、各オクターブ毎にユニークな番号を持って
おり、2番目のオクターブはコード48で示す。また、
パラメータバイトデータの「96」と「64」は、発音
するときの強弱度を示している。また、イベントコード
「90」は、チャネル1で発音することを示すコードで
ある。同じく「80」は、チャネル1で発音を終了する
ことを示すコードである。また、MIDIでは、デルタ
時刻を用いて1小節の中の何拍目の音であるかを示すこ
とができる。例えば、上記(記述3.2)では、4分の
4拍子を例にしており、1小節を4拍として考えてい
る。そして、1拍目は0、2拍目は96、3拍目は19
2、4拍目を288の数字を用いて示している。例え
ば、上記(記述3.2)の1行目はデルタ時刻を「9
6」と記述している。これは、1小節を4分音符で4拍
とした場合の2拍目を示している。つまり、2番目のオ
クターブでのドを発音するのは、1小節を4分音符で4
拍とした場合の2拍目のタイミングで発音するというこ
とになる。また、デルタ時刻「144」は、4拍目を
「288」としたので、ちょうどその半分になる。つま
り、「96」のタイミングで発音したドの音を4分音符
で4拍とした場合の3拍目の音を発音するよりも早いタ
イミングでドの発音を切り離すことを示している。
【0140】このようなテキストのダンプデータをその
まま記述し、MIDIバイナリファイルに変換するツー
ルも既にある。ここでは、上記MIDIデータを本発明
プログラミング言語処理システムにおけるスクリプトで
記述した場合を示す。
【0141】(記述3.3) 第1小節2/4 チャネル1 C2 フォルテ 第1小節3/4 チャネル1 C2
【0142】なお、上記(記述3.3)では、2行目の
記述に(第1小節3/4)としているが、これは1小節
を4分音符で4拍とした場合の3拍目の音のタイミング
でドの発音を切り離すことを示している。上記(3.
2)では、1小節を4分音符で4拍とした場合の3拍目
よりも早いタイミングでドの音の発音を切り離してい
た。しかし、上記(記述3.3)では記述を容易にする
ため、3拍目のタイミングでドの音の発音を切り離すよ
うにしている。
【0143】さらに、上記(記述3.3)に記述したド
の発音を3拍目よりも前のタイミングで切り離すように
指定すると以下の(記述3.4)のようになる。
【0144】(記述3.4) 1.96 CH1 C2 f 1.144 CH1 C2
【0145】上記(記述3.4)の「1.96」は1小
節を4分音符で4拍とした場合の1小節目の2拍目を示
している。また、「1.144」は1小節を4分音符で
4拍とした場合の3拍目よりも早いタイミングを示して
いる。さらに、以下の(記述3.5)に別のスクリプト
記述の例を示す。
【0146】(記述3.5) 第1小節2/4 チャンネル1 C2 f 1/144 CH1 C2
【0147】上記(記述3.5)は、上記(記述3.
3)と(記述3.4)のスクリプトの記述を混在して記
述したスクリプトの例である。
【0148】また、別のスクリプトの例として以下の
(記述3.6)を記載する。
【0149】(記述3.6) 第1小節2/4 4分音符 チャネル1 C2 フォル
【0150】上記(記述3.6)では、上記(記述3.
3)のスクリプトに対して音符の種類を示す「4分音
符」を追加しているスクリプトである。上記(記述3.
6)のように音符の種類をスクリプトの引数として指定
することによって、発音を切り離すタイミングを別のス
クリプトとして記述しなくてもよくなる。上記(記述
3.6)を上位層のスクリプトにして、(記述3.3)
〜(記述3.5)より(記述3.6)に変換することも
可能である。また、上記(記述3.6)のスクリプトを
以下のように記述する事も可能である。
【0151】(記述3.7) 1.96 48 チャネル1 C2 フォルテ
【0152】上記(記述3.7)のスクリプトに記述さ
れている「48」は、「4分音符」を示すコードであ
る。
【0153】さて、次にこの音符情報を組み合わせて、
和音データとアレンジパターンをスクリプトとして入力
して簡単なバック演奏曲データの音符データを出力する
ことを検討する。ここで、検討する演奏曲は、4分の4
拍子の32小節のものを考える。以下に、入力する和音
データのスクリプトを示す。
【0154】 chord(1〜8) Cmaj Cmaj Cmaj Cmaj F7 A#7 F7 F7 chord(9〜16) Cmaj Cmaj Cmaj Cmaj C6 Dm7 Em7b5 D7 chord(17〜24) Cmaj7 Em7b5 Dm7 G7 Em7b5 Dm7 Cmaj Cmaj chord(25〜32) C6 Cmaj7 D7 A#7 Dm7 G7 C6 Dm7
【0155】上記したスクリプトが図13における
(C)のパターンの多引数入力のスクリプト例である。
この和音データは、入力管理処理部3において各小節の
和音を示すグローバル変数としてグローバル変数記憶部
34に記憶される。その処理を行なうトランスレータプ
ログラムの関数記述は以下のようになる。
【0156】 chord(begin〜end) コード名 -> | グローバルセット chord(1) コード名 | 条件 begin < end | 成立処理 1行 | chord(begin+1〜end) ...
【0157】上記トランスレータプログラムにおけるグ
ローバルセットというのは、グローバル変数として変数
名と値をグローバル変数記憶部に記憶させる組込関数で
ある。また、条件というのは、一般的なプログラミング
言語のif文に相当し、後続して記述しているのが実際
の条件式である。そして、if〜thenでの実行処理
の部分が成立処理で示される部分である。ちなみに、i
f〜then〜elseに相当する場合が「不成立処
理」という記述を使用し、elseifに相当するのが
「他の条件」という記述を使用することにしている。
【0158】また、各和音の構成音を事前に入力してお
くとすると、以下のようなスクリプトにより入力する。
【0159】
【0160】上記したスクリプトが図13における
(C)のパターンの多引数入力のスクリプト例である。
同様にして、上記の各和音の構成音を設定するスクリプ
トにより、各和音の構成音は以下のトランスレータプロ
グラムによりグローバル変数にセットされる。以下に上
記各和音の構成音を設定するスクリプトを実行するトラ
ンスレータプログラムを示す。
【0161】 note(コード名) 音名 -> | note_set(コード名,1) 音名 ... note_set(コード名,No) 音名 -> | グローバルセット note(コード名,No) 音名 | 条件 No < 4 | 成立処理 1行 | note_set(コード名,No+1) ...
【0162】次に、バック演奏のアレンジパターンの曲
データを出力する関数の例を以下に示す。ここで行なう
アレンジパターンとしては、8小節単位で処理を行な
い、各8小節の1番目から、7番目までは、4つのコー
ド構成音による基本的なアルペジオ奏法であり、8番目
は、4つのコード構成音による白玉奏法(全音符による
演奏)とする。ベース音は、コード構成音の1番目のベ
ース音を単純に白玉奏法で演奏するものとする。
【0163】 (A)アレンジ曲データ生成 -> | 繰り返し処理 1行 i(0から3まで) | 8小節データ生成 i (B)8小節データ生成 i -> | アルペジオデータ生成 i*8+1 i*8+7 | 白玉和音データ生成 i*8+8 (C)アルペジオデータ生成 begin end | 繰り返し処理 2行 i(beginからendまで) | 白玉ベース音符出力 i | アルペジオ音符出力 i (D)白玉和音データ生成 i | 白玉ベース音符出力 i | 繰り返し処理 1行 j(1から4まで) | 白玉音符出力 i j (E)アルペジオ音符出力 i | CH = chord(i) | 文字列出力 4行 | i.0 48 チャネル1 note(CH,1) メゾフォルテ | i.96 48 チャネル1 note(CH,2) メゾフォルテ | i.192 48 チャネル1 note(CH,3) メゾフォルテ | i.288 48 チャネル1 note(CH,4) メゾフォルテ (F)白玉音符出力 i j | CH = chord(i) | 文字列出力 1行 | i.0 336 チャネル1 note(CH,j) メゾフォルテ (G)白玉ベース音符出力 i | CH = chord(i) | 文字列出力 1行 | i.0 336 チャネル2 note(CH,1) メゾフォルテ ここで、繰り返し処理という組込関数は、一般的なプロ
グラミング言語におけるfor文に相当する処理であ
る。
【0164】以上から、トップスクリプトである(A)
「アレンジ曲データ生成」を実行すると、以下のような
曲データが出力される。この曲データに相当する譜面を
図15に示す。
【0165】
【0166】「デバッグ機能の実現」この実施の形態3
では、各種デバッグ機能の実現についても説明する。ま
ず、デバッグモードの代表的な機能であるステップ実行
を実現するために、図6と図9で既に示している各関数
記述1行1行を実行ごとに停止し、プログラマからのデ
バッグ作業の指令を受け付けるようにする。上記デバッ
グ作業の指令の受付は図2におけるデバッグ関連処理部
4が備えるステップ実行部40によって行うものとす
る。図6と図9をステップ実行部40において実行した
流れ図を図16と図17に示す。図16において、最終
的に実行対象とするトランスレータプログラムの本体部
の各行毎の実行を行うS37の処理の前に、ステップ実
行部40がステップ実行モードを行うかどうか確認する
処理を追加して(S200)、ユーザからのデバッグ用
コマンドに従い、変数の表示(S205)、コミット情
報の表示(S206)、ステップ実行の解除(S20
7)を上記実施の形態1における図6の流れ図に追加し
た。また、上記デバッグ用コマンド以外が入力されたら
(S204)、エラー処理を行うS208の処理も追加
する。また、図17の流れ図では、上記実施の形態1に
おける図9に対して、トランスレータプログラムの本体
部に記述されている処理を1行実行する毎にステップ実
行部40によってステップ実行モードにするかどうかを
確認する処理(S210)を追加している。そして、ス
テップ実行モードにした場合、ユーザからのデバッグ用
コマンドの入力を待ち変数の表示(S214)、コミッ
ト情報の表示(S215)、ステップ実行の解除(S2
16)の処理を追加している。また、上記デバッグ用コ
マンド以外が入力されたら(S213)、エラー処理を
行うS217の処理も追加する。
【0167】プログラムの中で使用する各種変数は、上
記実施の形態1の「同意語定義の読み込み」の箇所にて
説明したように、配列データとして格納されている。こ
のため、デバッグ時に変数を示す文字列から直接変数の
値を参照できるので、シンボリックな記述のみで具体値
の調査を行なうことができる。同様な観点から、トレー
スデータも変数を示す文字列をそのままログ情報として
記録することで得ることができる。また、変数の具体値
がどのような値になったかを変数の文字列から参照でき
るので、ブレークポイントの設定もシンボリックな記述
から容易に行なうことができる。このことから、明らか
に、レジスタ、メモリ、アドレス、ポインタなどという
計算機独自の概念が登場する余地がないことがわかる。
また、関数の呼び出しがいかなる関数からどのような引
数で呼び出されているかを示す情報を記憶している関数
呼び出しスタックの内容も、関数記述のシンボリックな
情報として参照できる。
【0168】上記の図16、17の流れ図が示すよう
に、トランスレータプログラムの本体処理が1行実行さ
れるたびに、トランスレータ実行処理部1は動作を停止
し、ユーザのデバッグ用コマンドの入力を待つ。これが
ステップ実行である。ブレークポイントをチェックする
タイミングも、このデバッグ用コマンドの入力を待つの
と同じタイミングで行うことができる。ある条件が成り
立ったときに、条件チェックだけを行ない、ユーザの入
力待ち処理はスキップさせればよい。ブレークポイント
の設定は、直接プログラムのソースコード中の停止させ
たい位置に印をつけたり、ある変数が特定の具体値にな
った場合の条件を入力したりする。
【0169】以下に上記したトップスクリプトである
(A)「アレンジ曲データ生成」のステップ実行結果を
示す。
【0170】 実行ステップ計数 実行内容 1 アレンジ曲データ生成 2 繰り返し処理 1行 0(0から3まで) 3 8小節データ生成 0 4 アルペジオデータ生成 1 7 5 繰り返し処理 2行 1(1から7まで) 6 白玉ベース音符出力 1 7 CH = Cmaj (= chord(1)) 8 文字列出力 1行 9 |1.0 336 チャネル2 C4 (= note(Cmaj,1)) メゾフォルテ 10 アルペジオ音符出力 1 11 CH = Cmaj (= chord(1)) 12 文字列出力 4行 13 |1.0 48 チャネル1 C4 (= note(Cmaj,1)) メゾフォルテ 14 |1.96 48 チャネル1 E4 (= note(Cmaj,2)) メゾフォルテ 15 |1.192 48 チャネル1 G4 (= note(Cmaj,3)) メゾフォルテ 16 |1.288 48 チャネル1 B5 (= note(Cmaj,4)) メゾフォルテ 17 繰り返し処理 2行 2(1から7まで) 18 白玉ベース音符出力 1 19 CH = Cmaj (= chord(2)) 20 文字列出力 1行 21 |1.0 336 チャネル2 C4 (= note(Cmaj,1)) メゾフォルテ 22 アルペジオ音符出力 1 23 CH = Cmaj (= chord(2)) 24 文字列出力 4行 25 |1.0 48 チャネル1 C4 (= note(Cmaj,1)) メゾフォルテ 26 |1.96 48 チャネル1 E4 (= note(Cmaj,2)) メゾフォルテ 27 |1.192 48 チャネル1 G4 (= note(Cmaj,3)) メゾフォルテ 28 |1.288 48 チャネル1 B5 (= note(Cmaj,4)) メゾフォルテ : : : : : : : : : : : : : :
【0171】以上のように上記したステップ実行結果で
は、上記(A)「アレンジ曲データ生成」の1行1行の
処理内容が表示され、また処理の中で用いている変数が
具体的な値に置き換えられて表示されている。
【0172】このようにデバッグが行うことができると
ユーザは、レジスタ、メモリ、アドレス、ポインタなど
の計算機独自の概念を考えなくてもシンボリックな記述
によりトランスレータプログラムの実行結果をデバッグ
することができる。
【0173】実施の形態4.以下、この発明の一実施の
形態を図について説明する。この実施の形態4も、上記
実施の形態1の図2と同様なシステム構成をしたプログ
ラミング言語処理システムを用いる。こでは、図13の
(C)の形式のスクリプトを具体例にて説明する。
【0174】一般にデータベース検索を依頼する命令ス
クリプトは、検索条件を入力引数とする。そして、検索
条件は、いくらでも条件を複合させたものにできるの
で、かなり長大な文字列データとなる傾向がある。今
回、データベース検索スクリプトのプログラムを作成す
るプログラミング言語として、Microsoftが開
発したExcel上でのVisual Basic(M
icrosoft社が開発したプログラミング言語)を
取り上げてみる。Excelは普及している代表的な表
計算アプリケーションソフトであり、表形式のデータベ
ースの操作処理などをExcelマクロを用いて高機能
なプログラミング処理を実現していた。現在、Exec
lマクロはVisual Basicにそのプログラミ
ング環境を移行している。
【0175】図18は、顧客の氏名、住所、年齢、買い
上げ額などを記録した表形式データベースの一例を示す
図である。また、このデータベースから、必要な条件を
満たす該当者を検索するスクリプトをVisual B
asicのプログラムに変換するトランスレータプログ
ラムの一例を以下に示す。
【0176】 検索 条件 -> | 修正条件 = 項目置換 条件 | 文字列出力 12行 |Sub 検索() | WorkSheets(■顧客リスト■).Activate | Set RangeToCheck = ActiveCell.CurrentRegion | Set NewRange = Range(RangeToCheck.Rows.Count, _ | RangeToCheck.Cells(RangeToCheck.Rows.Count, _ | RangeToCheck.Columns.Count)) | For RowNum = 1 To NewRange.Rows.Count Step 1 | If (修正条件) Then | SearchDataBase = RowNum | End If | Next |End Sub db_name -> Application.Cells(RowNum,1) db_adrs -> Application.Cells(RowNum,2) db_age -> Application.Cells(RowNum,3) db_sex -> Application.Cells(RowNum,4) db_pay -> Application.Cells(RowNum,5) db_hobby -> Application.Cells(RowNum,6) 項目置換 -> | nop 項目置換 ( -> ( 後続 | 後続 = 項目置換 ... 項目置換 ) -> ) 後続 | 後続 = 項目置換 ... 項目置換 and -> and 後続 | 後続 = 項目置換 ... 項目置換 or -> or 後続 | 後続 = 項目置換 ... 項目置換 氏名 = second first -> db_name Like ■second first■ 後続 | 後続 = 項目置換 ... 項目置換 住所 = address -> db_adrs Like ■address■ 後続 | 後続 = 項目置換 ... 項目置換 年齢 記号 age -> db_age 記号 age 後続 | 後続 = 項目置換 ... 項目置換 age1 記号1 年齢 記号2 age2 -> (age1 記号1 db_age) and (db_age 記号2 age2) 後続 | 後続 = 項目置換 ... 項目置換 性別 = sex -> db_sex == sex 後続 | 後続 = 項目置換 ... 項目置換 買い上げ額 記号 pay -> db_pay 記号 pay 後続 | 後続 = 項目置換 ... 項目置換 pay1 記号1 買い上げ額 記号2 pay2 -> (pay1 記号1 db_pay)and(db_ pay 記号2 pay2) 後続 | 後続 = 項目置換 ... 項目置換 趣味 = hobby -> Application.Cells(RowNum,6) == hobby 後続 | 後続 = 項目置換 ...
【0177】これに対して、図18に示すデータベース
から買い上げ額が40000円以上かつ100000円
未満の人のレコードを検索する場合のスクリプトは以下
のようになる。
【0178】検索 ( 40000 <= 買い上げ額
< 100000 ) and ( ( 住所 == 藤沢市 ) or ( 住所 ==
鎌倉市 ) )
【0179】また、上記スクリプトを本発明のプログラ
ミング言語処理システムに入力して実行させると上記し
たトランスレータプログラムが以下のように展開され
る。
【0180】 Sub 検索() WorkSheets(■顧客リスト■).Activate Set RangeToCheck = ActiveCell.CurrentRegion Set NewRange = Range(RangeToCheck.Rows.Count, _ RangeToCheck.Cells(RangeToCheck.Rows.Count, _ RangeToCheck.Columns.Count)) For RowNum = 1 To NewRange.Rows.Count Step 1 If ( ( ( 40000 <= Application.Cells(RowNum,5)) _ and (Application.Cells(RowNum,5) < 100000 ) )_ and ( ( Application.Cells(RowNum,2) == ■藤沢市■ )_ or ( Application.Cells(RowNum,2) == ■鎌倉市■ ) ) ) Then SearchDataBase = RowNum End If Next End Sub
【0181】上記のトランスレータプログラムを展開し
て作成したVisual Basicのプログラムはユ
ーザが作成することもできる。しかし、そのためにユー
ザはVisual Basicの文法を理解しなければ
ならないので容易に上記した展開後のプログラムを作成
することは難しい。
【0182】実施の形態5.以下、この発明の一実施の
形態を図について説明する。この実施の形態5も、上記
実施の形態1の図2と同様なシステム構成をしたプログ
ラミング言語処理システムを用いる。ただし、この実施
の形態5では、プログラム記述の編集を容易に行なうた
めの構造化エディタを利用するものである。その利用の
形態は、図19に示すようなものである。ここで示す例
は、Microsoft社のパワーポイントや、Lot
us社のフリーランスなどプレゼンテーション文書作成
用ソフトウェアの構造化エディタと基本的な機能は同じ
である。上記実施の形態4のプログラムを表示させた構
造化エディタの画面の例を図20に示す。
【0183】図20に示した構造化エディタでは、プロ
グラム記述の基本単位である単語の配列が、整理された
見やすい形態となるように、固定長入力ボックス領域1
00に各単語の文字列が表示できるようにしている。固
定長入力ボックス領域100に文字列が納まらない場合
は、さらに、その固定長単位でボックス長を延長でき
る。入力ボックス内では、基本的にスペースを入力する
ことで、次の入力ボックスが開かれるが、改行入力を行
なえば、次行に入力ボックスが開かれる。
【0184】また、関数記述の冒頭の1行では、改行時
に「−>」が入力されていないとエラー報告をするよう
になっている。関数記述の2行目以降は、関数本体処理
の記述になるので、段落を下げるようになっている。見
やすさを高めるために、本体処理記述の前には、縦線が
表示されるようになっている。図20に示すような構造
化エディタを用いてトランスレータプログラムをプログ
ラミングすることが、上記実施の形態1〜4と異なって
いる。構造化エディタを用いることにより編集者自体が
縦線を入力する必要がない。また、改行2回で関数本体
処理記述の終了となり、次の関数記述の入力を受け付け
るようになる。
【0185】また、文字列出力のような次行以降数行に
わたって、記述行をまとめて使用するものは、その構造
を明確にして見やすくするために、表示させる文字列の
ための特別な編集領域101を用意して1段下げた表示
を行なう。
【0186】上記構造化エディタは、トランスレータプ
ログラムを作成し出力するだけでなく、デバッガ機能を
組み込んで、ステップ実行などのデバッグをエディタ上
で行なう構成にもできる。構造化エディタ上でステップ
実行などのデバッグを行なうプログラミング言語処理系
としては、Microsoft社のVisual C+
+など様々なものがある。ここでは、本発明にて特に提
唱する機構はないので、既存の方式と同様なしくみが本
発明でも利用できる点にだけ言及しておく。
【0187】さらに、上記構造化エディタにおいては、
トランスレータプログラムの記述のためにだけではな
く、同意語定義記述を整理して入力できるしくみを実装
できる。その同意語定義記述編集用画面の表示例を図2
1に示す。図21に示す同意語定義記述編集用画面で
は、同意語定義モジュール構成102を表示する。上記
同意語定義モジュール構成102は、同意語定義をどの
ような構成によって分類し、登録しているかを示してい
る。プログラマが同意語定義を行う場合、初めに同意語
定義モジュール構成102を確認することによって、登
録しようとしている単語がどの分類に含まれるかを確認
し、該当する同意語定義モジュールを開いて登録を行
う。例えば、一般を選ぶと図21の一般103のように
一般として登録されている同意語定義情報が表示され
る。また、上記実施の形態1において説明した登録誤り
チェック部17は、重複した矛盾する同意語定義登録の
エラーを発見した場合の登録定義の表示を行う。
【0188】実施の形態6.以下、この発明の一実施の
形態を図について説明する。この実施の形態6も、上記
実施の形態1と同様な構成をしたプログラミング言語処
理システムを用いる。この実施の形態6では、スクリプ
トのユーザが直接手でスクリプトを記述するのではな
く、エンドユーザ向けにグラフィカルユーザインタフェ
ースを備えた入力ツールによりスクリプトの関数呼び出
し情報を入力することを検討する。そのグラフィカルユ
ーザインタフェースを備えた図面エディタによる利用形
態は、図22に示すようなものである。図22では、ワ
ークフロー図面エディタによりユーザがワークフロー定
義を行う。そして、本発明のプログラミング言語処理シ
ステムはユーザが作成したワークフロー定義を基に上記
実施の形態2で説明したようなスクリプトを自動作成す
る。現在の計算機端末装置のほとんどがウィンドウシス
テムを備えており、マウスやペンタブレットなどの入力
装置により、文字入力よりも図解情報入力による効率化
がエンドユーザのために提供されている。
【0189】前述の実施の形態2におけるワークフロー
の定義においても、人から人へ書類が移動する順序をわ
かりやすく示すために、書類のフロー図を利用できる。
現在、多くの市販のワークフローソフトウェアが各作業
者の処理の流れを視覚的に定義し設計できるフロー図エ
ディタを備えている。図23に上記実施の形態2におけ
るワークフロー定義スクリプトを作成するためのワーク
フロー図面の表示例を示す。図23に示したワークフロ
ー定義が本発明のプログラミング言語処理システムに入
力され、上記実施の形態2において説明したスクリプト
を自動作成する。ここでは、あえてワークフロー図か
ら、ワークフロー定義スクリプトの情報を導く方法には
言及しない。既存の電気回路やプラント制御で使用され
るCADシステムやオーサリングソフトウェアやワーク
フローソフトウェアなどと同様な図面エディタの情報入
力方法を採用できるであろう。
【0190】以上のようにこの発明のプログラミング言
語処理システムを利用する場合、一般ユーザは、まず簡
単な記述のコマンドを並べるようなスクリプトの記述を
作成する。本発明にて想定したプログラミング言語の仕
様の一例を図1に示した。この一般ユーザ向けのスクリ
プト言語により記述された処理を、既存の計算機プログ
ラミング言語による記述に翻訳するトランスレータプロ
グラムを用意する。このトランスレータプログラムは、
ユーザのスクリプトを適用業務の知識、規則、経験と、
最終的に翻訳されるプログラムへの書き換え方法の情報
を記述したもので、その役割は、図24に示すようなも
のになる。このトランスレータの処理の記述は、コーデ
ィングルールの簡単な論理型プログラミング言語をベー
スにしたプログラミング言語にてソフトウェアの適用業
務の知識、規則、経験に基づいて、プログラマが任意に
選択した用語を中心に空白文字で区切って並べるだけで
行なうことができる。そのプログラム記述も、プログラ
マが区切り記号の選択を自由に行ない、呼び出し形式に
制約を設けないようにしたプログラミング言語の仕様と
する。但し、通常のプログラマには理解しにくい変数へ
の具体的値の結合を解除してやり直す処理は行なわない
プログラミング言語の処理システムとする。これは、ガ
ード部と出力部のパターンマッチングにより処理関数記
述を選択し、ボディー部を実行するコミットチョイス型
の論理型プログラミング言語と呼ばれる種類のものであ
る。このプログラミング言語処理システムは、プログラ
マの作成したプログラムやスクリプトユーザの作成した
実行スクリプトを読み込む入力管理手段3と、読み込ん
だプログラムやスクリプトのデータを記憶しておくトラ
ンスレータデータ記憶部2と、トランスレータプログラ
ムの実行処理を行なうトランスレータ実行処理部1から
構成されていた。さらに、トランスレータの実行処理を
行なうトランスレータ実行処理部1は、主に、ガード部
と出力部とをスクリプトの関数呼び出し情報とパターン
マッチング処理してトランスレータプログラムの候補を
選択するコミットチョイスの判定処理を行なうコミット
チョイス判定処理部5と、コミットチョイス後のボディ
ー部の実行処理を行なうコミットチョイス後実行処理部
6と、関数から関数を呼び出すための呼び出しスタック
を管理する関数呼び出しスタック管理処理部7とから構
成されていた。
【0191】また、この論理型プログラミング言語の性
質から、プログラマは、プログラミングやデバッグをレ
ジスタ、メモリ、アドレス、ポインタなどという計算機
指向の概念を考慮せずに行なえることになる。このデバ
ッグを支援するために、プログラミングに使用した単語
をシンボリックなデータとしてのみ扱い、具体値の調
査、トレースデータの収集、ステップ実行、各種条件の
ブレークポイント設定などのデバッグ機能をもつデバッ
グ関連処理部4を備えていた。
【0192】また、トランスレータプログラムの候補を
選択する場合、パターンマッチング処理を行う場合、よ
り多くの条件が合致したものを選んだり、プログラマが
重点的に指定を行なった箇所にて合致したものを優先し
て選んだりでき、そのパターンマッチング動作処理の条
件を詳細に設定できる選択アルゴリズム設定8を備え
た。
【0193】また、トランスレータプログラムの候補を
選択する場合、パターンマッチング処理がどの変数や定
数などの項において、どのように合致し、他の選択肢よ
り優先的に選択されたかのログ情報を記録し、トレース
することができる選択判定処理ログ収集部9を備えた。
【0194】また、プログラマやユーザがプログラミン
グやスクリプトの作成をするときに、記述用語として、
実行処理上で同じ意味内容をもつ単語を複数個同意語と
して登録することができる同意語定義登録部10と、そ
の登録結果を記憶しておく同意語定義情報記憶部11
と、プログラムの実行処理中において、プログラム中の
記述用語が同意語をかわりに使用しているかどうかをチ
ェックし、必要ならばその同意語の記憶部から置き換え
のできる記述用語を選び、置き換えを行なう同意語置換
部42aを備えた。
【0195】また、プログラマやユーザが利用したい単
語を記述用語として、複数の同意語を登録するときに、
事前に一般的な常識に基づいてあらゆる分野で共通して
扱える分類のものとして登録できる一般同意語14と、
適用分野ごとに利用したい同意語を分類して登録できる
分野別同意語15とを備えた。
【0196】また、プログラマやユーザが利用したい単
語を記述用語として、複数の同意語を登録するときに、
登録された同意語どうしが複数の意味で誤って登録され
て実行処理中に矛盾が発生することのないようにチェッ
クを行なう登録誤りチェック部17を備えた。
【0197】また、プログラマがプログラミングを行な
うときに使用する記述用語で、変数の意味をもつもの
と、定数あるいは具体値の意味をもつものとに対して、
宣言を行なう記述がなくてもプログラムの実行処理中に
矛盾のないように、それぞれが変数か定数かの判別を行
なう。
【0198】また、プログラム記述中の記述用語で、変
数の意味をもつものと、定数あるいは具体値の意味をも
つものとに対して、プログラムの実行処理中に行なった
それぞれの記述用語が変数か定数かの判別処理の内容の
ログ情報を記録する。
【0199】また、プログラマやユーザが呼び出す関数
やスクリプトについて、引数の順序が呼び出しされる関
数の関数定義情報と異なる記述をしているかどうか、そ
の引数の内容を調べるスクリプト確認部10bと、明ら
かに該当する引数並びの誤りが判明したときに、その引
数の順序の誤りを警告するスクリプト警告部10cと、
適当な引数にその呼出時の値を修正して代入するスクリ
プト修正部10dとを備えた。
【0200】また、プログラマやユーザが呼び出す関数
やスクリプトについて、引数の順序が呼び出される関数
記述側の定義と異なる場合に、引数の内容を調べて、明
らかに引数の誤りが判定可能なとき、誤りと判定した引
数に適切な値を代入する処理を行なった場合、どのよう
な判定基準に基づいてどの引数にどんな値を代入したか
の結果のログ情報を記録しトレースすることができるス
クリプト修正ログ情報収集部10eを備えた。
【0201】また、プログラマやユーザが呼び出す関数
やスクリプトについて、引数の数値データに単位を示す
文字列が付加されることを許し、関数が呼び出されてか
らの実行処理中に、その単位を示す文字列を読みとり、
引数データが適当なものであるかの判定を行なうスクリ
プト確認部10bと、誤っている場合は警告するスクリ
プト警告部10cを備えた。
【0202】また、プログラム記述中に現れる数式につ
いて、数式中に出てくる変数に対して、その具体的な値
を求めることができる定義式が存在するかどうかの確認
をして、具体的な値の演算処理を行なうことが可能であ
るならば、数値演算処理を行なって数式の変換処理をす
る数式演算処理29を備えた。
【0203】また、プログラム記述中に現れる数式につ
いて、可能な限り数値演算処理を行なって数式の変換処
理をする場合に、数式中に出てくる変数に対して、その
具体値をどのようにして求めて、どの範囲まで演算を行
なったかの結果のログ情報を記録し、トレースすること
ができるログ収集30を備えた。
【0204】また、プログラマやユーザが呼び出す関数
やスクリプトについて、関数の呼び出し行が個別の関数
を連続して呼び出したり、多量の引数群を連続して並べ
たりする形式の記述を可能とし、個別の関数の呼び出し
処理時に、呼び出し行の後ろの部分の情報を後続する関
数呼び出し時に渡す際に、プログラム記述上で、省略記
号を利用することで、その処理時点で不要な呼び出し行
の後ろの部分の情報の記述を省略することができ、実際
に後続する関数の呼び出し時に、省略記号を解読し、そ
の具体的な情報の再現を自動的に行なうことができる省
略記号判定31を備えた。
【0205】また、任意に選択した用語を中心に空白文
字で区切って並べ、制約の少ない記述形式をもち、コー
デイング規則の簡単な論理型プログラミング言語をベー
スとした仕様のプログラミング言語により、一般ユーザ
は、適用業務の知識、規則、経験に基づいて、自由に効
率良くトランスレータプログラムの作成を行なうことが
できる。こうして、作成されたプログラムは、バックト
ラック機構を採用しないコミットチョイス型の論理型を
したプログラミング言語処理システムの機構により、上
記プログラミング言語処理システムにおける動作を一般
プログラマにわかりやすいものとし、デバッグ作業の効
率化をはかり、容易にスクリプトを開発することができ
る。
【0206】また、この論理型をしたプログラミング言
語処理システムでは、プログラム中に現れる記述用語は
論理的な関係のみを記述している。このため、プログラ
ミング作業の概念上、レジスタ、メモリ、アドレス、ポ
インタなどという計算機指向の概念が登場しないので、
その記述用語自体を取り扱うデバッグを使用すること
で、プログラミングに使用した単語をシンボリックなデ
ータとしてのみ取り扱うことができる。さらに、シンボ
リックなデータにより、具体値の調査、トレースデータ
の収集、ステップ実行、各種条件のブレークポイント設
定などが行なえるので、プログラマは、論理的な思考を
中心に効率のよいデバッグ作業が行なえる。
【0207】また、固定的なパターンマッチング処理で
はなく、パターンマッチングを行なう箇所においてより
多くの条件が合致したものを選ぶことができるので、関
数のコミットチョイス処理が一般常識に近い形でなされ
る。さらに、プログラマがより重点的に指定を行なった
箇所に合致したものを優先して選ぶことができるので、
関数のコミットチョイス処理をよりプログラマが期待す
る内容の処理に変更することができる。このように、パ
ターンマッチング処理の細かな動作をプログラマが柔軟
に制御することができ、期待する機能仕様をもつスクリ
プトを容易に開発できる。
【0208】また、所定の項において、パターンマッチ
ングがどのように合致し、他の選択肢より優先的に選択
されたかというパターンマッチング処理の詳細な処理内
容のログ情報が記録されるおかげで、処理系の内部の動
作がよくわかり、プログラムのデバッグ作業が効率良く
行なえる。
【0209】また、プログラミングやスクリプトを利用
するときに、記述用語として、実行処理上で同じ意味内
容をもつ単語を複数個同意語として登録しておき、それ
がプログラムの実行処理中において適宜参照され、必要
に応じて同意語の置き換えがなされるので、プログラマ
やユーザが通常同じ意味で取り扱っている単語を混同し
てプログラミングやスクリプトに利用しても、プログラ
ミング言語処理システムが柔軟に対応して処理すること
が可能になる。
【0210】また、同意語のデータベースとして、一般
的に共通して利用できるものと、個々の適用分野ごとに
分類して登録できるものを適宜取捨選択して利用できる
ので、それぞれの適用分野ごとのスクリプトを開発する
のに最適な同意語データベース環境を用意することがで
きる。
【0211】また、同意語のデータベースへの登録が、
誤って異なる意味で重複してなされないようにチェック
されるので、プログラマやスクリプトのユーザが同意語
データベースの利用を誤りなく行なえる。
【0212】また、プログラミングに使用する記述用語
を、変数の意味をもつものと定数あるいは具体値の意味
をもつものとに対して宣言を行なう記述が不要となり、
プログラムの実行処理中に記述用語が変数か定数かの判
定が自動的になされるので、プログラマのプログラミン
グ作業で留意すべき点が減り負担が軽減され、ソースコ
ードからも余分な定義が不要になるので、ソースコード
の可読性も向上する。
【0213】また、プログラミング言語処理システムが
自動的に行なった記述用語の変数か定数かの判定処理の
結果のログ情報を獲得できるので、デバッグ作業時など
にプログラミング言語処理システム内部の詳細な動作状
況を把握でき作業効率を向上させる。
【0214】また、プログラマやユーザが呼び出す関数
やスクリプトについて、引数の順序が呼び出される関数
記述側の定義と異なる場合に、引数の内容を調べて可能
な限りその引数の順序の誤りを調査し、警告あるいは修
正の処理が行なわれるので、プログラマやユーザが誤り
を早く認識することができ、デバッグなどの作業効率を
向上させることができる。
【0215】また、プログラマやユーザが呼び出す関数
やスクリプトについて、引数の順序が呼び出される関数
記述側の定義と異なる場合に、引数の内容を調べて可能
な限りその引数の順序の誤りを調査し、修正の処理が行
なわれる場合、どのような判定基準に基づいて、どの引
数にどんな値を代入したかの結果のログ情報が得られる
ので、デバッグ作業時などにプログラミング言語処理シ
ステム内部の詳細な動作を把握でき作業効率が向上す
る。
【0216】また、プログラマやユーザが呼び出す関数
やスクリプトにおいて、引数の数値データに単位を示す
文字列を付与することができるので、引数自体の属性の
一部が明らかになり、プログラマやユーザの記述する関
数やスクリプトのもつ引数の値の種類(例えば、数値や
文字列や、小数点付き数値等)がプログラミング言語処
理システムにより明確に指定される。このため、単位を
示す文字列により引数データが適当なものであるか判定
し警告することができるので、プログラマやユーザは引
数の記述の誤りを早期に発見することができる。
【0217】また、プログラム記述中に現れる数式につ
いて、数式中に出てくる変数に対して、その具体的な値
が確定する場合は代入を行ない、可能なかぎり数値演算
処理を行なって数式の変換処理を行なうので、プログラ
マが明示的に数値演算処理の指示をソースコード上で行
なう必要がなくなる。このためコーディング作業の負担
が軽減される。
【0218】また、プログラム記述中に現れる数式につ
いて、可能なかぎり数値演算処理がなされて数式の変換
処理がされた場合の結果のログ情報が得られるので、デ
バッグ時などでの数式の結果の値がどのようにして得ら
れたかプログラマが確認でき、作業効率が向上する。
【0219】さらに、プログラマやユーザが呼び出す関
数やスクリプトについて、関数の呼び出し行が個別の関
数を連続して呼び出したり、多量の引数群を連続して並
べたりする形式の記述を省略記号で簡略に記述でき、ま
た、プログラミング言語処理システムは、その省略記号
を解読し、後続するプログラムの処理で、具体的な情報
の再現を行なう。このため、ユーザは長々と引数や関数
の呼び出し情報の記述を行う手間を省くことができ、効
率よくスクリプトの作成を行うことができる。また、ス
クリプトの作成時に記述誤りを減らすことができる。
【0220】
【発明の効果】以上のように、この発明によれば、一般
ユーザは、適用業務の知識、規則、経験に基づいて、自
由に効率良くスクリプトの作成を行なうことができる。
このため、計算機指向のプログラミング規則にしばられ
ることなく、適用業務の論理的な考えの表現を容易にプ
ログラムに反映させることができる。単純なコミットチ
ョイス型の論理型プログラミング言語処理システムの機
構により、ユーザがあえて処理システム内の詳細な内部
挙動を意識することなく、プログラム記述ができるの
で、コーディングの作業効率も向上する。
【0221】また、この発明によれば、一般ユーザは、
プログラミングのデバッグ作業において、計算機指向の
概念を念頭におく必要がないので、論理的な考え方を中
心にデバッグ作業を進めることができる。デバッグ環境
もシンボリックな情報により処理過程の挙動の参照がで
きるので、計算機技術の知識のない人にも効率良くデバ
ッグ作業が行なえる。
【0222】また、この発明によれば、コミットチョイ
ス型の処理において、パターンマッチング処理がより多
くの処理で合致した場合に選ばれる方式により、より自
然な考え方に基づいてプログラムを作成することができ
る。さらに、プログラマが期待するように、優先的なパ
ターンマッチング処理を指定して処理系にそのように応
答させることができるので、プログラマの思考に合わせ
て処理系が柔軟に対応し、プログラマのプログラム作成
効率が向上する。
【0223】また、この発明によれば、コミットチョイ
ス型の処理において、どの変数や定数などの項がどのよ
うに合致することで、どの関数記述が選択されたかを入
力引数判定ログ収集部確認できるので、プログラマのデ
バッグ作業効率が向上する。
【0224】また、この発明によれば、同意語定義記憶
部と同意語置換部を備えたのでプログラムやスクリプト
を記述する際に利用できる単語として、通常プログラマ
やスクリプトを作成するユーザが同じ意味の単語と認識
しているものをそのまま利用しても処理が実行されるの
で、厳密に使用できる単語として特定のものを覚えてお
く負担が減る。さらに、プログラマにとってしかわから
ない記述用語であっても、スクリプトを作成するユーザ
にわかりやすい記述用語を同意語として提供すること
で、エンドユーザ側に、計算機指向の専門知識を強制的
に覚えさせる負担が減る。
【0225】また、この発明によれば、プログラムやス
クリプトを記述する際に、利用できる同意語データベー
スをよく使われるものや、各適用分野ごとに使われるも
のなどに分類して必要なものを適宜取捨選択して利用で
きるので、多様なプログラマやユーザに対応したプログ
ラミング言語処理システムへとカスタマイズできる。
【0226】また、この発明によれば、プログラムやス
クリプトを記述する際に、登録する同意語データベース
を作成するときに、従来登録されている同意語の定義と
異なった意味で同意語が登録されている場合でも、自動
的にその重複登録をチェックできるし、重複登録の矛盾
のない同意語定義を厳密に自らチェックしなくても、登
録誤りチェック部がチェックしてくれるので、プログラ
マやユーザが登録作業上の負担が軽減される。
【0227】また、この発明によれば、プログラムやス
クリプトを記述する際に、全く変数や定数についての宣
言を行なう必要がなく、変数の参照を行なうための特殊
な記述子も不要になるので、プログラミング作業での留
意事項が減り、バグが入り込む機会も減り、ソースコー
ドの可読性が向上する。また、グローバル変数名をトラ
ンスレータプログラム中に記述すれば、グローバル変数
置換部により、具体的な値に変換される。このため、プ
ログラムはある特定の処理システム内で用いる値を共通
に同じ変数名で使用することができ、プログラムの作成
効率が上がる。
【0228】また、この発明によれば、プログラムやス
クリプトを記述した記述用語について、処理実行中に変
数か定数かの判別を処理系が行なった状況をプログラム
実行後に確認できるので、プログラムのデバッグ作業が
効率良く行なえる。
【0229】また、この発明によれば、スクリプト確認
部によりプログラムやスクリプトを記述する関数呼び出
し行の引数の順序について、誤りを確認して警告が出さ
れる。また、スクリプト修正部により誤りを訂正する。
このため、プログラマやスクリプトを作成するユーザの
不具合解析の負担が減る。また、プログラマやスクリプ
トを作成するユーザが関数や関数の引数の順序をある程
度うろ覚えの状況で利用する時にも、プログラミング言
語処理システムが判別可能な範囲内でカバーしてくれ
る。
【0230】また、この発明によれば、スクリプト修正
ログ情報収集部によりプログラムやスクリプトを記述す
る関数呼び出し中の引数の順序の誤りがどのような判定
処理によりなされたかを、プログラム実行後に確認でき
るので、デバッグ作業効率が向上する。
【0231】また、この発明によれば、プログラムやス
クリプトを記述する関数呼び出し中の数値データの引数
に、単位を示す文字列を付加する事ができる。このた
め、呼び出し行の可読性が向上する。また、単位付きの
数値データの引数により、その引数として適当なもので
あるかチェックされるので、プログラマやスクリプトユ
ーザの入力に誤りがあれば、その誤りが明らかになる可
能性があり、作業効率を向上させる。
【0232】また、この発明によれば、プログラム記述
の中に計算結果がそのままあてはめられることを期待し
て、特別な記述規則を用いずに、数式を書き込むことが
できるので、プログラマのコーディング効率が向上する
し、ソースコードの可読性も向上する。
【0233】また、この発明によれば、プログラム記述
の中の数式がどのような変数や定数をもとに計算された
かをプログラム実行後に確認することができ、プログラ
マのデバッグ効率が向上する。
【0234】さらに、この発明によれば、関数の呼び出
し行の記述として、多様な形態で、長文的に記述できる
ので、プログラムに要求したい論理的な表現力を高度な
ものにできる。また、1つの関数の呼び出し行の中に含
まれる複数の関数要素を分解して処理を行なうプログラ
ム記述を容易に行なうことができ、個別の関数処理の記
述で、不要な部分の記述を除去できるので、ソースコー
ドの可読性が向上する。
【図面の簡単な説明】
【図1】 この発明のプログラミング言語処理システム
での論理型プログラミング言語によるプログラム書式の
概略仕様を示す図である。
【図2】 この発明のプログラミング言語処理システム
のシステム構成の概略を示す図である。
【図3】 この発明のプログラミング言語処理システム
によるユーザのスクリプトを他のプログラミング言語に
よるプログラムに変換し実行する全体の処理を示す流れ
図である。
【図4】 この発明のプログラミング言語処理システム
による関数記述中の同意語及びグローバル変数の書き換
えの処理を示す流れ図である。
【図5】 この発明のプログラミング言語処理システム
による関数記述中の同意語及びグローバル変数の書き換
えの処理の中で1つの項を単語や記号ごとに分解する処
理を示す流れ図である。
【図6】 この発明のプログラミング言語処理システム
による実行スクリプトの関数解釈による実行の処理を示
す流れ図である。
【図7】 この発明のプログラミング言語処理システム
による実行スクリプトの関数解釈による実行の処理の中
でガード部と関数呼び出し側の各項を比較するパターン
マッチングを行ないコミット有力候補となるかどうかを
調べる処理を示す流れ図である。
【図8】 この発明のプログラミング言語処理システム
による実行スクリプトの関数解釈による実行の処理の中
でガード部全項と関数呼び出し側の全項とが合致するか
を調べる処理を示す流れ図である。
【図9】 この発明のプログラミング言語処理システム
による実行スクリプトの関数解釈による実行の処理の中
でコミットした関数記述の本体部の各行ごとの実行を行
なう処理を示す流れ図である。
【図10】 この発明のプログラミング言語処理システ
ムによるコミットした関数記述の本体部の各行ごとの実
行を行なう処理の中で右辺を数式計算処理し左辺を求め
る処理を示す流れ図である。
【図11】 この発明のプログラミング言語処理システ
ムによる右辺を数式計算処理し左辺を求める処理の中で
式を演算子、数値及び変数に分解する処理を示す流れ図
である。
【図12】 この発明のプログラミング言語処理システ
ムによるスクリプト実行前の引数の単純な特徴抽出処理
を示す流れ図である。
【図13】 この発明のプログラミング言語処理システ
ムでの論理型プログラミング言語による関数呼び出しの
記述様式の例を示す図である。
【図14】 この発明のプログラミング言語処理システ
ムの実施の形態2におけるスクリプトの一例を示す図で
ある。
【図15】 この発明のプログラミング言語処理システ
ムの実施の形態3の音楽データ用処理系にて作成した編
曲データの楽譜を示す図である。
【図16】 この発明のプログラミング言語処理システ
ムによるステップ実行機能を含んだ実行スクリプトの関
数解釈による実行の処理を示す流れ図である。
【図17】 この発明のプログラミング言語処理システ
ムによるステップ実行機能を含んだコミットした関数記
述の本体部の各行ごとの実行を行なう処理を示す流れ図
である。
【図18】 この発明のプログラミング言語処理システ
ムの実施の形態4の営業用顧客データベースの処理系の
実装を行なうMicrosoft社のExcel上での
顧客データの表の一部を示す図である。
【図19】 本発明の実施の形態5での構造化エディタ
によりトランスレータプログラムを作成する場合の状況
を示す図である。
【図20】 本発明の実施の形態5のプレゼンテーショ
ンソフトウェアに類似したインタフェースを備えた構造
化エディタによるプログラミング言語処理システムを示
す図である。
【図21】 本発明の実施の形態5での構造化エディタ
により同意語定義登録を行なう編集画面の表示例を示す
図である。
【図22】 本発明の実施の形態6での図面エディタに
よりワークフロー定義スクリプトを作成する場合の状況
を示す図である。
【図23】 本発明の実施の形態2でのワークフロー定
義スクリプトを作成するための実施の形態6におけるワ
ークフロー図面の表示例を示す図である。
【図24】 本発明のプログラミング言語処理システム
上にて作成されるトランスレータプログラムの役割を示
す図である。
【図25】 この発明のプログラミング言語処理システ
ムが実現する機能の概要を示す図である。
【図26】 従来のスクリプト言語によるプログラム作
成の形態を示す図である。
【図27】 本発明のプログラミング言語処理システム
が目指す従来の計算機環境の短所からの脱却の状況を示
す図である。
【符号の説明】
1 トランスレータ実行処理部、2 トランスレータデ
ータ記憶部、3 入力管理処理部、4 デバッグ関連処
理部、5 コミットチョイス判定処理部、6コミットチ
ョイス後実行処理部、7 関数呼び出しスタック管理処
理部、8 選択アルゴリズム設定、9 選択判定処理ロ
グ収集部、10 同意語定義登録部、10a フォーマ
ット情報登録部、10b スクリプト確認部、10c
スクリプト警告部、10d スクリプト修正部、10e
スクリプト修正ログ情報収集部、11 同意語定義情
報記憶部、12 変数置換実行部、12a 変数置換ロ
グ情報収集部、13 変数置換実行部、14 一般同意
語、15 分野別同意語、17 登録誤りチェック部、
18 変数定数判定、19 変数定数判定、20ログ収
集、21 ログ収集、22 変数並び判定、23 警
告、24 訂正、25 モード設定、26 ログ収集、
27 単位文字列判定、28 警告、29数式演算処
理、30 ログ収集、31 省略記号判定、32 トラ
ンスレータ定義登録部、33 実行スクリプト読み込み
部、34 グローバル変数記憶部、35 関数定義処理
記述ローカル変数記憶部、36 組込関数実行、37
出力実行管理、38 ブレークポイント設定部、39
実行環境表示部、40 ステップ実行部、41 実行ト
レース出力部、42a 同意語置換部、42b グロー
バル変数置換部、43 関数記述読み込み部、44 入
力引数判定部、44a入力引数判定ログ収集部、45
関数記述選択部、46 最終関数記述選択判定部、47
関数記述取り込み部、100 固定長入力ボックス領
域、101特別な編集領域、102 同意語定義モジュ
ール構成、103 一般。

Claims (21)

    【特許請求の範囲】
  1. 【請求項1】 以下の要素を有することを特徴とするプ
    ログラミング言語処理システム(a)関数の関数名と関
    数の中で用いる引数名とを関数定義情報として定義する
    ガード部と上記関数が処理する内容を処理情報として定
    義するボディー部より構成された関数定義プログラムで
    あるトランスレータプログラムを入力して解析するとと
    もに、上記トランスレータプログラムを特定する関数呼
    び出し情報を記述した関数呼び出しプログラムであるス
    クリプトとを入力して解析する入力管理処理部、(b)
    上記入力管理処理部より入力され解析された上記トラン
    スレータプログラムを記憶するトランスレータデータ記
    憶部、(c)上記入力管理処理部より解析された上記ス
    クリプトを解釈して上記スクリプトに定義されている関
    数呼び出し情報を基に上記トランスレータデータ記憶部
    を参照し、上記スクリプトに定義されている関数呼び出
    し情報と上記トランスレータプログラムのガード部に定
    義されている関数定義情報が一致するトランスレータプ
    ログラムを決定し、決定したトランスレータプログラム
    を実行して処理結果を出力するトランスレータ実行処理
    部。
  2. 【請求項2】 上記トランスレータプログラムのボディ
    ー部に定義されている関数が処理する内容は、任意のプ
    ログラミング言語を用いて記述され、上記スクリプトに
    記述されている関数呼び出し情報は、所定のフォーマッ
    トにより記述されていることを特徴とする請求項1記載
    のプログラミング言語処理システム。
  3. 【請求項3】 上記トランスレータプログラムのガード
    部は、1行以上の関数定義情報より構成されるととも
    に、上記トランスレータプログラムのボディー部は、1
    行以上の処理情報より構成され、上記入力管理処理部
    は、上記トランスレータプログラムを入力するトランス
    レータ定義登録部と上記トランスレータ定義登録部が入
    力した上記トランスレータプログラムの関数定義情報と
    処理情報とを1行毎に順に入力する関数定義読み込み部
    とを備えたことを特徴とする請求項1記載のプログラミ
    ング言語処理システム。
  4. 【請求項4】 上記入力管理処理部は、上記スクリプト
    を入力する実行スクリプト読み込み部を備えたことを特
    徴とする請求項1記載のプログラミング言語処理システ
    ム。
  5. 【請求項5】 上記トランスレータデータ記憶部は、所
    定の単語に対して同じ意味を持つ別の単語を同意語定義
    情報として記憶する同意語定義情報記憶部を備え、上記
    入力管理処理部は、上記同意語定義情報記憶部に記憶す
    べき同意語定義情報を入力して上記同意語定義情報記憶
    部に登録する同意語定義登録部を備え、上記トランスレ
    ータプログラムの上記ガード部に定義されている関数定
    義情報はある単語を用いて定義され、上記入力管理処理
    部は、上記同意語定義情報記憶部を参照して上記ガード
    部に定義されている関数定義情報に用いられている上記
    ある単語を所定の単語に変換する同意語置換部を備えた
    ことを特徴とする請求項1記載のプログラミング言語処
    理システム。
  6. 【請求項6】 上記トランスレータデータ記憶部は、複
    数のトランスレータプログラムが共有する変数の値と変
    数の名前とをグローバル変数として記憶するグローバル
    変数記憶部を備え、上記入力管理処理部は、上記トラン
    スレータプログラムのボディー部に定義されている処理
    情報に上記グローバル変数名が記述されている場合、上
    記グローバル変数名を基に上記グローバル変数記憶部を
    参照してグローバル変数の値を取得して上記処理情報に
    定義されているグローバル変数名を上記取得したグロー
    バル変数の値に変換するグローバル変数置換部を備えた
    ことを特徴とする請求項1記載のプログラミング言語処
    理システム。
  7. 【請求項7】 上記同意語定義登録部は、上記同意語定
    義情報記憶部に記憶されている同意語定義情報を別の意
    味を持つ単語として重複して登録することを禁止する登
    録誤りチェック部をそなえたことを特徴とする請求項5
    記載のプログラミング言語処理システム。
  8. 【請求項8】 上記同意語定義情報記憶部は、特定の分
    野で使用される同意語定義情報を記憶する分野別同意語
    定義情報記憶部と上記特定の分野以外で使用される同意
    語定義語情報を記憶する一般同意語定義情報記憶部とを
    備え、上記同意語定義登録部は、上記同意語定義情報と
    ともに特定の分野で使用される同意語定義情報か否かを
    示す分野指定情報を入力して、上記分野指定情報が特定
    の分野で使用されることを示す場合、上記同意語定義情
    報を上記分野別同意語定義情報記憶部に記憶し、上記分
    野指定情報が特定の分野で使用されないことを示す場
    合、上記同意語定義情報を上記一般同意語定義情報記憶
    部に記憶することを特徴とする請求項5記載のプログラ
    ミング言語処理システム。
  9. 【請求項9】 上記スクリプトは、関数の関数名と関数
    の中で用いる引数を関数呼び出し情報として定義し、上
    記トランスレータ実行処理部は、上記入力管理処理部よ
    り入力されたスクリプトに定義されている上記関数名を
    基に上記トランスレータデータ記憶部を参照して実行す
    るトランスレータプログラムの候補を決定する関数記述
    取り込み部を備えたことを特徴とする請求項1記載のプ
    ログラミング言語処理システム。
  10. 【請求項10】 上記トランスレータ実行処理部は、さ
    らに、上記関数記述取り込み部が決定したトランスレー
    タプログラムの候補を入力して上記トランスレータプロ
    グラムの候補のガード部に定義されている関数定義情報
    と上記スクリプトに定義されている関数呼び出し情報が
    一致することを判定するコミットチョイス判定処理部を
    備えたことを特徴とする請求項9記載のプログラミング
    言語処理システム。
  11. 【請求項11】 上記スクリプトに記述されている関数
    呼び出し情報は1つ以上の項より構成され上記項は1つ
    以上の要素より構成され、上記要素は少なくとも文字列
    と記号と数値のいずれかにより表され、上記コミットチ
    ョイス判定処理部は、上記関数呼び出し情報を項に分解
    し上記分解した項の要素が文字列か記号か数値のいずれ
    であるかを判定するとともに上記分解した項毎に項を構
    成する要素の数を判定して上記判定した結果と上記トラ
    ンスレータプログラムの候補のガード部に定義されてい
    る関数定義情報とを比較し合致情報を取得する入力引数
    判定部と、上記入力引数判定部が取得した上記合致情報
    を基に上記トランスレータプログラムの候補から実行す
    るトランスレータプログラムを選択する最終関数記述選
    択判定部とを備えたことを特徴とする請求項10記載の
    プログラミング言語処理システム。
  12. 【請求項12】 上記コミットチョイス判定処理部は、
    上記トランスレータプログラムの候補より実行するトラ
    ンスレータプログラムを選択する選択条件を設定する関
    数記述選択部を備え、上記最終関数記述選択判定部は、
    上記入力引数判定部が取得した合致情報を基に上記関数
    記述選択部により設定された選択条件を比較し上記トラ
    ンスレータプログラムの候補より実行するトランスレー
    タプログラムを選択することを特徴とする請求項11記
    載のプログラミング言語処理システム。
  13. 【請求項13】 上記入力引数判定部は、上記合致情報
    を取得する過程におけるログ情報を収集する入力引数判
    定ログ収集部を備えたことを特徴とする請求項11記載
    のプログラミング言語処理システム。
  14. 【請求項14】 上記トランスレータプログラムのボデ
    ィー部には数式が処理情報として定義され、上記数式に
    は数値の型の宣言を行っていない変数と定数とが記述さ
    れ、上記トランスレータ実行処理部は、上記ボディー部
    に定義されている数式に記述されている変数を具体値に
    変換する変数置換実行部を備えたことを特徴とする請求
    項1記載のプログラミング言語処理システム。
  15. 【請求項15】 上記トランスレータ実行処理部は、上
    記変数置換実行部が変数を具体値に変換する過程におけ
    るログ情報を収集する変数置換ログ情報収集部を備えた
    ことを特徴とする請求項14記載のプログラミング言語
    処理システム。
  16. 【請求項16】 上記入力管理処理部は、上記スクリプ
    トに記述されている関数呼び出し情報のフォーマットを
    定義するフォーマット情報を入力し登録するフォーマッ
    ト情報登録部を備え、上記トランスレータデータ記憶部
    は、上記フォーマット情報登録部が入力したフォーマッ
    ト情報を記憶するフォーマット情報記憶部を備え、上記
    入力管理処理部は、上記実行スクリプト読み込み部が入
    力したスクリプトに記述されている関数呼び出し情報と
    上記フォーマット情報記憶部に記憶されているフォーマ
    ット情報とを比較して上記関数呼び出し情報の記述内容
    を確認するスクリプト確認部を備えたことを特徴とする
    請求項4記載のプログラミング言語処理システム。
  17. 【請求項17】 上記入力管理処理部は、上記スクリプ
    ト確認部が上記関数呼び出し情報の記述内容を確認した
    結果上記関数呼び出し情報の記述内容に誤りがあると判
    定した場合、上記誤りを警告するスクリプト警告部と、
    上記誤りを修正するスクリプト修正部とを備えたことを
    特徴とする請求項16のプログラミング言語処理システ
    ム。
  18. 【請求項18】 上記入力管理処理部は、上記スクリプ
    ト修正部が上記関数呼び出し情報の記述内容を修正する
    過程におけるログ情報を収集するスクリプト修正ログ情
    報収集部を備えたことを特徴とする請求項17記載のプ
    ログラミング言語処理システム。
  19. 【請求項19】 上記スクリプトは単位を示す単位情報
    を関数呼び出し情報に含み、上記実行スクリプト読み込
    み部は、上記単位情報を含んだ関数呼び出し情報が記述
    されているスクリプトを読み込むことを特徴とする請求
    項4記載のプログラミング言語処理システム。
  20. 【請求項20】 上記トランスレータプログラムのガー
    ド部は関数の中で用いる引数の記述を一部省略すること
    を示す第1の省略記号を関数定義情報に含み、上記トラ
    ンスレータプログラムのボディー部は関数が処理する内
    容を一部省略することを示す第2の省略記号を処理情報
    に含み、上記入力管理処理部は、上記第1の省略記号と
    上記第2の省略記号とを含んだトランスレータプログラ
    ムを入力し、上記トランスレータ実行処理部は、上記第
    1の省略記号と上記第2の省略記号を含んだトランスレ
    ータプログラムを実行する場合、上記第1の省略記号に
    より省略されている引数と上記第2の省略記号により省
    略されている関数が処理する内容とを上記トランスレー
    タプログラムを実行する過程において再現して、上記ト
    ランスレータプログラムの実行を継続して行うことを特
    徴とする請求項1記載のプログラミング言語処理システ
    ム。
  21. 【請求項21】 上記プログラミング言語処理システム
    は、さらに、上記トランスレータプログラムのガード部
    に定義されている関数定義情報を記述している単語とボ
    ディー部に定義されている処理情報を記述している単語
    とを用いて上記トランスレータプログラムを実行する過
    程において実行状態を確認し実行誤りを修正するデバッ
    グ関連処理部を備えたことを特徴とする請求項1記載の
    プログラミング言語処理システム。
JP15258096A 1996-06-13 1996-06-13 プログラミング言語処理システム Pending JPH09330212A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP15258096A JPH09330212A (ja) 1996-06-13 1996-06-13 プログラミング言語処理システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP15258096A JPH09330212A (ja) 1996-06-13 1996-06-13 プログラミング言語処理システム

Publications (1)

Publication Number Publication Date
JPH09330212A true JPH09330212A (ja) 1997-12-22

Family

ID=15543580

Family Applications (1)

Application Number Title Priority Date Filing Date
JP15258096A Pending JPH09330212A (ja) 1996-06-13 1996-06-13 プログラミング言語処理システム

Country Status (1)

Country Link
JP (1) JPH09330212A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000134786A (ja) * 1998-10-22 2000-05-12 Toshiba Corp 電力系統保護制御システム、電力系統保護制御システムの制御方法およびプログラムモジュールを記憶した記憶媒体
US6292936B1 (en) 1998-11-12 2001-09-18 International Business Machines Corporation Enabling multiple runtime processors in an interpreter-based embedded scripting system
US6339839B1 (en) 1998-11-12 2002-01-15 International Business Machines Corporation Enabling multiple code generators in a translator-based embedded scripting system
JP2007531946A (ja) * 2004-04-07 2007-11-08 ローベルト ボッシュ ゲゼルシャフト ミット ベシュレンクテル ハフツング データ処理装置におけるデータ整合性

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000134786A (ja) * 1998-10-22 2000-05-12 Toshiba Corp 電力系統保護制御システム、電力系統保護制御システムの制御方法およびプログラムモジュールを記憶した記憶媒体
US6292936B1 (en) 1998-11-12 2001-09-18 International Business Machines Corporation Enabling multiple runtime processors in an interpreter-based embedded scripting system
US6339839B1 (en) 1998-11-12 2002-01-15 International Business Machines Corporation Enabling multiple code generators in a translator-based embedded scripting system
JP2007531946A (ja) * 2004-04-07 2007-11-08 ローベルト ボッシュ ゲゼルシャフト ミット ベシュレンクテル ハフツング データ処理装置におけるデータ整合性

Similar Documents

Publication Publication Date Title
US5379366A (en) Method for representation of knowledge in a computer as a network database system
US6098061A (en) Computer system for interactive help using human-understandable knowledge and computer-understandable knowledge
US5211563A (en) Computer assisted learning support system and processing method therefor
US5321608A (en) Method and system for processing natural language
US6993487B2 (en) Software code comments management method and system supporting speech recognition technology
JPH08202545A (ja) ターゲット言語コードを生成するためのオブジェクト指向システム及びその方法
US20060129418A1 (en) Method and apparatus for analyzing functionality and test paths of product line using a priority graph
WO1994018631A9 (en) Method for representation of knowledge in a computer
CN114625353A (zh) 模型框架代码生成系统及方法
CN115964273A (zh) 基于深度学习的航天器测试脚本自动生成方法
Vasconcelos et al. Skeleton-based agent development for electronic institutions
Jones et al. Case studies in systematic software development
Sharma et al. Extracting high-level functional design from software requirements
Rilling et al. Beyond information silos—An omnipresent approach to software evolution
JPH09330212A (ja) プログラミング言語処理システム
Nisbet et al. Presentations of rase knowledge mark-up
Djukić et al. Handling complex representations in visual modeling tools for MDSD/DSM by means of code generator languages
JPH09146972A (ja) 自然言語対話型情報処理装置
CN113010400B (zh) 计算机工程技术文档智能生成、复盘系统和方法
Castaldo A conceptual modeling approach for the rapid development of chatbots for conversational data exploration
Parnas et al. An easily extensible toolset for tabular mathematical expressions
Alspaugh Scenario networks and formalization for scenario management
Gulla et al. Experiences with the use of a configuration language
JP3290778B2 (ja) トラブル分析支援装置
Dickson Utilization of Deep Learning for the Automatic Classification of Software Aspects