JP2005038212A - プログラム変換方法及び装置及びプログラム変換プログラム及びプログラム変換プログラムを格納した記憶媒体 - Google Patents
プログラム変換方法及び装置及びプログラム変換プログラム及びプログラム変換プログラムを格納した記憶媒体 Download PDFInfo
- Publication number
- JP2005038212A JP2005038212A JP2003274940A JP2003274940A JP2005038212A JP 2005038212 A JP2005038212 A JP 2005038212A JP 2003274940 A JP2003274940 A JP 2003274940A JP 2003274940 A JP2003274940 A JP 2003274940A JP 2005038212 A JP2005038212 A JP 2005038212A
- Authority
- JP
- Japan
- Prior art keywords
- program
- type
- conversion
- processing system
- mathematical expression
- 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
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
【課題】 数式システムにおいて、入力されたプログラムの構文解析の結果に基づき、型変換が必要な演算にのみ型変換を適用する。
【解決手段】 本発明は、プログラム言語に予め定義されていない未定義の型をユーザが使用する際に、プログラムの字句解析を行った後、型情報データーベースを参照して構文解析を行い、構文解析の結果に基づき型変換が必要な箇所のみに変換規則データーベースに基づいた型変換を行う。
【選択図】 図1
【解決手段】 本発明は、プログラム言語に予め定義されていない未定義の型をユーザが使用する際に、プログラムの字句解析を行った後、型情報データーベースを参照して構文解析を行い、構文解析の結果に基づき型変換が必要な箇所のみに変換規則データーベースに基づいた型変換を行う。
【選択図】 図1
Description
本発明は、プログラム変換方法及び装置及びプログラム変換プログラム及びプログラム変換プログラムを格納した記憶媒体に係り、特に、数式処理システムの機能拡張を行うためのプログラム変換方法及び装置及びプログラム変換プログラム及びプログラム変換プログラムを格納した記憶媒体に関する。
数式処理システムにおいて、予め定義されている以外の型の数を扱う場合、そのシステムが完全にオブジェクト指向であれば、その型についてクラス定義を行うことにより既存のプログラムをそのまま利用できる。しかし、数式処理システムの中には、オブジェクト指向が不十分であるものもあり、その場合は、新しい型の定義や演算の定義と合わせて、プログラム変換などの種々の処理を人手によって行っている。このため、多大な労力と時間を要するという問題がある。
この人手による作業の問題を解決する方法として、プログラムを自動的に変換する方法がある(例えば、特許文献1参照)。
しかしながら、プログラムを自動的に変換する方法によって変換されたプログラムは、新しい型が決して代入されることのない部分の変換も行うため、人手によって変換されたプログラムに比べて、実行効率が劣るという問題がある。
本発明は、上記の点を解決し、完全にはオブジェクト指向になっていない数式処理システムにおいて、新しい型を定義した場合に、既存のプログラムを自動変換し、新しい型に対しても計算可能とするプログラム変換方法及び装置及びプログラム変換プログラム及びプログラム変換プログラムを格納した記憶媒体を提供することを目的とする。
図1は、本発明の原理を説明するための図である。
本発明は、数式処理システムにおける、新しい型の定義に伴う既存プログラムの基本演算部分を変換するためのプログラム変換方法において、
既存プログラムを入力し(ステップ1)、
入力された既存プログラムの字句解析を行い(ステップ2)、
数式処理システムにおいて予め定義された型を出力とする関数名と該関数名の型を格納した型情報データーベースを参照して、構文解析を行い(ステップ3)、
前記数式処理システムにおいて予め定義された型のみが代入される部分については変換しない変換規則を含む変換規則データーベースを参照し、構文解析されたプログラムを変換し(ステップ4)、
変換されたプログラムを出力する(ステップ5)。
既存プログラムを入力し(ステップ1)、
入力された既存プログラムの字句解析を行い(ステップ2)、
数式処理システムにおいて予め定義された型を出力とする関数名と該関数名の型を格納した型情報データーベースを参照して、構文解析を行い(ステップ3)、
前記数式処理システムにおいて予め定義された型のみが代入される部分については変換しない変換規則を含む変換規則データーベースを参照し、構文解析されたプログラムを変換し(ステップ4)、
変換されたプログラムを出力する(ステップ5)。
図2は、本発明の原理構成図である。
本発明は、数式処理システムにおける、新しい型の定義に伴う既存プログラムの基本演算部分を変換するためのプログラム変換装置であって、
数式処理システムにおいて予め定義された型を出力とする関数名と該関数名の型を格納した型情報データーベース60と、
数式処理システムにおいて予め定義された型のみが代入される部分については変換しない変換規則を含む変換規則が蓄積された変換規則データーベース70と、
既存プログラムを入力する入力手段10と、
入力された既存プログラムの字句解析を行う字句解析手段20と、
型情報が蓄積された型情報データーベース60を参照して、構文解析を行う構文解析手段30と、
変換規則データーベース70を参照して、構文解析されたプログラムを変換する変換手段40と、
変換されたプログラムを出力する出力手段50と、を有する。
数式処理システムにおいて予め定義された型を出力とする関数名と該関数名の型を格納した型情報データーベース60と、
数式処理システムにおいて予め定義された型のみが代入される部分については変換しない変換規則を含む変換規則が蓄積された変換規則データーベース70と、
既存プログラムを入力する入力手段10と、
入力された既存プログラムの字句解析を行う字句解析手段20と、
型情報が蓄積された型情報データーベース60を参照して、構文解析を行う構文解析手段30と、
変換規則データーベース70を参照して、構文解析されたプログラムを変換する変換手段40と、
変換されたプログラムを出力する出力手段50と、を有する。
本発明は、数式処理システムにおける、新しい型の定義に伴う既存プログラムの基本演算部分を変換するためのプログラム変換プログラムであって、
既存プログラムを入力するステップと、
入力された既存プログラムの字句解析を行うステップと、
数式処理システムにおいて予め定義された型を出力とする関数名と該関数名の型を格納した型情報データーベースを参照して、構文解析を行うステップと、
数式処理システムにおいて予め定義された型のみが代入される部分については変換しない変換規則を含む変換規則データーベースを参照し、構文解析されたプログラムを変換するステップと、
変換されたプログラムを出力するステップと、からなる。
既存プログラムを入力するステップと、
入力された既存プログラムの字句解析を行うステップと、
数式処理システムにおいて予め定義された型を出力とする関数名と該関数名の型を格納した型情報データーベースを参照して、構文解析を行うステップと、
数式処理システムにおいて予め定義された型のみが代入される部分については変換しない変換規則を含む変換規則データーベースを参照し、構文解析されたプログラムを変換するステップと、
変換されたプログラムを出力するステップと、からなる。
本発明は、数式処理システムにおける、新しい型の定義に伴う既存プログラムの基本演算部分を変換するためのプログラム変換プログラムを格納した記憶媒体であって、
既存プログラムを入力するステップと、
入力された既存プログラムの字句解析を行うステップと、
数式処理システムにおいて予め定義された型を出力とする関数名と該関数名の型を格納した型情報データーベースを参照して、構文解析を行うステップと、
数式処理システムにおいて予め定義された型のみが代入される部分については変換しない変換規則を含む変換規則データーベースを参照し、構文解析されたプログラムを変換するステップと、
変換されたプログラムを出力するステップと、からなるプログラムを格納する。
既存プログラムを入力するステップと、
入力された既存プログラムの字句解析を行うステップと、
数式処理システムにおいて予め定義された型を出力とする関数名と該関数名の型を格納した型情報データーベースを参照して、構文解析を行うステップと、
数式処理システムにおいて予め定義された型のみが代入される部分については変換しない変換規則を含む変換規則データーベースを参照し、構文解析されたプログラムを変換するステップと、
変換されたプログラムを出力するステップと、からなるプログラムを格納する。
本発明によれば、数式処理において、新しい型を定義したとき、基本演算部分及び型変換用のプログラムのみを予め用意しておけば、残りのプログラムは、本発明のプログラム変換方法あるいは、装置あるいは、記憶媒体に記録されているプログラムにより変換するだけで、そのまま使用可能である。
また、一度変換されたプログラムは、さらに新しい型を定義したときも、新しい型についての基本演算のプログラムのみ用意すれば、そのまま使用することが可能である。
さらに、不必要な型の確認処理が抑制されるよう変換を行うので、変換されたプログラムは、従来の方法(特開平11−224200)のみによって変換した場合よりも実行時の効率が良いものとなる。
以下、図面と共に本発明の実施の形態を説明する。
最初に、数式処理システムにおいて、新しい型を定義し、その型を持つ数の計算を行うことを考える。
ここでは、例として、対象とする数式処理システムには、有理数及びその間の加減乗除算、大小比較、絶対値の基本演算が定義され、さらに浮動小数及びその間の加減乗除算、大小比較、絶対値の基本演算が定義され、浮動小数の丸めのモードとして四捨五入、−∞丸め、及び、+∞丸めが用意されているものとする。
このシステムに新しく区間数という型を定義し、さらに、区間数係数の多項式の計算を行おうとする場合について説明する。
区間数は、a1≦a2なる浮動小数の対[a1,a2]で表され、a1≦b≦a2なる数bの集合を意味する。また、区間数の基本演算の定義は、図3に示したとおりである。但し、浮動小数の計算において、o<、o>(oは+,−,*,/のいずれか)は、それぞれ、丸めのモードとして、−∞丸め、+∞丸めを表す。区間係数多項式の加減乗算は、各次数毎に係数をまとめて、それを区間数の演算で計算するものとする。
例えば、図4に示す、有理数係数の一変数多項式f(x)のL1ノルムを計算するL1というプログラムによって説明する(多項式f(x)=cnxn+cn−1xn−1+・・・+c0のL1ノルムは│cn│+│cn−1│+・・・+│c0│で定義される)。なお、同図において、「L1:=proc(f,x)」とは、L1の仮引数がfとxであることを意味し、「local d,i,res;」は、この関数の中で用いる局所変数の宣言である(数式処理のプログラム言語は、型の宣言の無いものが多い)。degree(f,x)は、fのxについての次数を返す関数、また、「for i from 0 to d do...end do;」は、iが0からdまで値を1ずつ増やしながらの繰り返しを示し、absは、絶対値を返す関数、coeff(f,x,i)は、fにおけるxのi乗の係数を返す関数である。
もし、完全にオブジェクト指向の数式処理システムならば、ユーザは基本演算の定義を変更して、図4のプログラムのままで区間数係数多項式のL1ノルムを計算することが可能である。
しかし、ユーザによる基本演算の定義変更が不可能な場合は、図5のようにプログラムを書き換え、プログラム中の基本演算、例えば、加算「+」があれば、その部分をadd2intervalという二引数関数に書き換え、図6に示す「add2interval」というプログラムを用意し、区間数同士の加算が可能になるように準備する必要がある。また、この例では、区間数の絶対値を返す関数「absinterval」も必要である。なお、このプログラム「L1interval」は、区間数係数の多項式を受け付けるが、通常の有理数係数の多項式の計算はできない。ユーザは、入力する多項式の種類によって、「L1」あるいは、「L1interval」のどちらを使用するのか決める必要がある。
一方、このプログラムを従来の方法(特開平11−224200)により変換した結果を図7に示す。この例では、新しい型(区間数)についてはリストを用いて表現し、その第一成分に型名(interval)、第二成分にデータそのものを入れるものとする。図8のプログラム「convertinterval」は、有理数を区間数に変換するものであり、「evalfd」、「evalfu」は、入力された値を予め定めておいた精度の浮動小数に変換するもので、変換の際、「evalfd」は、−∞丸め、「evalfu」は+∞丸めを行うものである。また、図9にある「add2.n」の「.」は文字列の連結を表すものであり、例えば、nが文字列「interval」であるとき、「add2.n」は「add2interval」を表す。また、「larger」は大小判定をするプログラムで、「add2」と同じく用意しておく。
この変換により、有理数係数、区間数係数のいずれの多項式にも対応可能となるが、forループの変数iのように整数値しかとらない部分についても、区間数にも対応できるように変換されるため、変換したプログラムの実行時に型を調べるための余計な処理が発生し、効率が落ちることとなる。
本発明は、新しく定義した型が決して代入されない部分については変換をしないことにより、プログラム実行時の効率を上げるプログラム変換処理を行うものである。
以下に、本発明のプログラム変換処理について説明する。
今、新しく定義する区間数の型名を「interval」とし、図3に従って区間数の間の基本演算を定義する。
新しい型の定義に伴って、ユーザは、元々数式処理システムに定義されている型から新しく定義する型への変換をするプログラム、及び、図3に現れる基本演算を定義するプログラムを用意する。例えば、型変換プログラムは、図8、二引数の加算「add2」は図10に示した通りである。なお、システムに元々定義されている以外の型については、リストを用いて表現し、その第一成分に型名、第二成分にデータそのものを入れるものとする。
さらに、ユーザは、プログラムの変換によっても新しく定義された型を出力することなく、数式処理システムにおいて予め定義された型を出力とする関数名とその型を格納した型情報データーベース60を用意しておく。図11は、型情報データーベース60に格納される情報の例を示す。
また、基本演算部分の変換規則を図11に示す。但し、‖・‖は、「・」の部分が省略される場合があることを示す。この言語においては、繰り返し部分で、「for<name>」と指定した場合、「from<expr>」が省略されたときには、<name>の初期値は1であり、「by<expr>」が省略されたときには、<name>は1ずつ増えるものとする。
図12に示す変換規則の適用のしかたは以下の通りである。
・基本演算番号1から13までについては、基本演算を記述しているプログラム(基本演算プログラムとも略す)が正常に実行された場合、即ち、構文解析をする際、その基本演算プログラムが正常に動作した(エラーメッセージではなく数値を返してきた)と仮定した場合、ある規則の(a)に現れるすべての<expr>,<expr1>,<expr2>が数式処理システムにおいて予め定義された型のみをとる場合は何も変換しない。そうでなければ、(a)のパターンがあれば、それを同じ番号の(b)のパターンに書き換える。
・基本演算番号14については、プログラムが正常に実行された場合、(a)の<exper1>が数式処理システムにおいて予め定義された型のみをとる場合には何も変換しない。そうでない場合は、それを(b)のパターンに書き換える。
・基本演算番号15,16については、プログラムが正常に実行された場合、(a)の<expr1>,<expr2>の両方が数式処理システムおいて予め定義された型をとる場合には何も変換しない。
<expr1>が数式処理システムにおいて予め定義された型のみをとり、<expr2>が新しく定義された型をとる場合には同じ番号の(b1)に書き換える。それ以外の場合には(b2)に書き換える。
・基本演算番号17については、プログラムが正常に実行された場合、(a)の<expr1>,<expr2>,<expr3>の全てが数式処理システムにおいて予め定義された型のみをとる場合には何も変換しない。
<expr1>,<expr2>の両方が数式処理システムにおいて予め定義された型のみをとり、<expr3>が新しく定義された型をとり得る場合には(b1)に書き換える。
それ以外の場合には(b2)に書き換える。
構文解析部30において関数名が抽出された場合、型情報データーベース60を参照し、その関数名が型情報データーベース60に存在するか否かを調べる。存在する場合、この関数の出力の型はプログラムの変換によっても新しく定義された型となることはなく、数式処理システムにおいて予め定義された型である。
図13は、本発明の一実施の形態におけるプログラム変換装置の構成を示す。同図に示すプログラム変換装置は、入力部10、字句解析部20、構文解析部30、変換部40、出力部50、型情報データーベース60、変換規則データーベース70から構成される。
型情報データーベース60は、プログラムの型に関する情報を格納する。
変換規則データーベース70は、図12に示すような変換規則を格納する。
入力部10は、変換対象となるプログラムを入力する。
字句解析部20は、入力されたプログラムの字句を解析する。
構文解析部30は、型情報データーベース60を参照して字句解析されたプログラムの構文を解析する。
変換部40は、変換規則データーベース70に登録されている変換規則に基づいて構文解析されたプログラムを変換する。
出力部50は、変換されたプログラムを出力する。
実際に図12及び上記の適用法を実現する手法としては、例えば、以下のような手段がある。
今、考えている数式処理システムの構文規則において、<expr>が図14のようにBNF(Backus
Naur Form)で定義されているものとする。このとき、この構文規則を図15のように細分化する。但し、<exprold>とは、数式処理システムで予め定義されていた型しか取らないものを指し、<exprnew>とは、それ以外を指す。図13の構文解析部30においては、細分化した構文規則により解析を行い、それに基づいて書き換えを行う。例として、細分化した構文規則に基づいた変換規則のうち、図12の基本演算番号1,3,15にあたる部分を書き出したものが図16である。
Naur Form)で定義されているものとする。このとき、この構文規則を図15のように細分化する。但し、<exprold>とは、数式処理システムで予め定義されていた型しか取らないものを指し、<exprnew>とは、それ以外を指す。図13の構文解析部30においては、細分化した構文規則により解析を行い、それに基づいて書き換えを行う。例として、細分化した構文規則に基づいた変換規則のうち、図12の基本演算番号1,3,15にあたる部分を書き出したものが図16である。
新しく定義した型が決して代入されない、即ち、予め定義された型しか代入されない部分の抽出は以下のように行う。
構文解析部30において関数名が抽出された場合、型情報データーベース60を参照し、その関数名が型情報データーベース60に存在するか否かを調べる。存在する場合、この関数の出力の型は、プログラムの変換によっても新しく定義された型となることはない。即ち、数式処理システムにおいて予め定義された型となる。従って、この関数値が代入される変数については、新しく定義した型が決して代入されない、ということがわかる。
また、プログラムの中で、入力データとは無関係に、変数に直接数値が代入されている部分も新しく定義した型が決して代入されない場所である。
以下、上記の構成の動作を具体的なプログラムの一部を例として説明する。
[例1]L1ノルムを計算する例:
前述の図4のL1ノルムを計算するプログラムL1については、字句解析部20、構文解析部30により、「for i from 0 to do ・・・end do」の部分が図16の15.1(a)である。よって、同図の15.1(b)の書き換えが適用され、図17に示したプログラムに変換して出力する。
前述の図4のL1ノルムを計算するプログラムL1については、字句解析部20、構文解析部30により、「for i from 0 to do ・・・end do」の部分が図16の15.1(a)である。よって、同図の15.1(b)の書き換えが適用され、図17に示したプログラムに変換して出力する。
なお、従来の方法(特開平11−224200)の方法を適用して書き換えたプログラムは、前述の図7に示すとおりである。変数iの数を1増加させる際に、図7に記載されたプログラムでは、i:=add2(i,1)によって、プログラム「add2」を呼び、「add2」の中で変数iの型を調べた上で、i+1を実行する。一方、図17に記載されるプログラムでは、プログラム「add2」を呼ぶことなく、直接i+1を実行する。この処理の差は、プログラム実行時の実行効率の差を生じさせる。即ち、従来の方法(特開平11−224200)の方法と比較して、本発明の方法は、不要なプログラムの呼び出し及び不要な型の確認を行わないために、プログラムを実行する計算機資源をより効率的に利用することを可能にする。
[例2]加算を含む例:
まず、図18の例を考える。
まず、図18の例を考える。
字句解析部20、構文解析部30により、「a+b」の部分が図16の3.3(a)である(この部分だけではa,bにどのような型が入るかわからないため)。よって、同図3.3(b)の変換規則に従い、加算「+」のところを「add2」という二引数の関数に書き換え、図19に示したプログラムに変換して出力する。
次に、図20の例について考える。図11の型情報データーベース60を参照することにより、構文解析部30において、「degree」は整数値のみ返すので、「degree(f,x)+degree(g,x);」の部分は、「<exprold>+<exprold>」と解釈される。図16の基本演算番号3のところに適用する変換規則がないため、書き換えは起きない。
参考のため、図20に示すプログラムを従来の方法(特開平11−224200)の方法のみを適用して書き換えたプログラムを図21に示す。
degree(f,x)とdegree(g,x)とを加える際に、図21に記載されているプログラムでは、add2(degree(f,x),degree(g,x))によって、プログラム「add2」を呼び、「add2」の中で関数「degree」から帰ってきた値の方を調べた上で、degree(f,x)+degree(g,x)を実行する。一方、図20に記載されているプログラムでは、プログラム「add2」を呼び出すことなく、直接degree(f,x)+degree(g,x)を実行する。
この差によって、プログラム実行時において、実行効率の差が生じる。即ち、従来の方法(特開平11−224200)と比較して、本発明の方法は、不要なプログラムの呼び出し及び不要な型の確認を行わないために、プログラムを実行する計算機資源を効率的に利用することを可能にする。
[例3]分岐条件を含む例:
まず、図22の例を考える。字句解析部20、構文解析部30により、「if n> a then ...end if」の部分が図12の基本演算番号10である。この部分だけではn,aにどのような型が入るかわからないために、変換規則に従い、不等号「>」のところを「larger」という二引数の関数に書き換え、図23に示したプログラムに変換して出力する。
まず、図22の例を考える。字句解析部20、構文解析部30により、「if n> a then ...end if」の部分が図12の基本演算番号10である。この部分だけではn,aにどのような型が入るかわからないために、変換規則に従い、不等号「>」のところを「larger」という二引数の関数に書き換え、図23に示したプログラムに変換して出力する。
次に、図24の例を考える。字句解析部20、構文解析部30により、「nops(S)>3」の部分が図12の基本演算番号10である。同図において、「nops」は数式処理システムで予め定義されている集合の元の数を返す関数とする。よって、図11の型情報データーベース60を参照することにより、構文解析部30において「<expr1>」は正常処理の場合、整数値のみを返すことがわかり、<expr2>が整数値のみを取る(3のみをとる)ことと合わせ、この部分は、「<exprold>><exprold>」と解釈される。よって、「変換規則を適用しない」という規則が適用され、書き換えは起きない。
参考のため、図24に示すプログラムを従来の方法(特開平11−224200)のみを適用して書き換えたプログラムを図25に示す。
nops(S)と3との大小を比較する際に、図25に記載されているプログラムでは、larger(nops(S),3)によって、プログラム「larger」を呼び、「larger」の中で関数nopsから返ってきた値の型を調べた上でnops(S)と3の大小を比較する。一方、図25に記載されているプログラムでは、プログラム「larger」を呼ぶことなく、直接nops(S)と3の大小を比較する。
この差によって、プログラム実行時において、実行効率の差が生じる。即ち、従来の方法(特開平11−224200)と比較して、本発明の方法は、不要なプログラムの呼び出し及び不要な型の確認を行わないために、プログラムを実行する計算機資源をより効率的に利用することが可能となる。
[例4]繰り返し部分を含む例:
まず、図26の例を考える。字句解析部20、構文解析部30により、「for i from a by s to b do ...end do」の部分が図12の基本演算番号17である。この部分だけでは、i,a,s,bにどのような型が入るか分からないために、変換規則に従い、図27に示したプログラムに変換して出力する。
まず、図26の例を考える。字句解析部20、構文解析部30により、「for i from a by s to b do ...end do」の部分が図12の基本演算番号17である。この部分だけでは、i,a,s,bにどのような型が入るか分からないために、変換規則に従い、図27に示したプログラムに変換して出力する。
次に、図28の例を考える。字句解析部20、構文解析部30により、「for i from 1 to nops(S) do...end do」の部分が図12の基本演算番号15である。同図において、nopsは、図24と同じものとする。よって、図11の型情報データーベース60を参照することにより、正常処理の場合、整数値のみを返すので、<expr2>は整数値のみをとる。<expr1>が整数値のみをとる(1のみをとる)ことと合わせ、この部分は、「for <name> from <exprold> to <exprold>do <statseq> end do」と解釈される。図16の基本演算番号15のところに適用する変換規則がないため、書き換えは起きない。
参考のため、図28に示すプログラムに従来の方法(特開平11−224200)のみを適用して書き換えたプログラムを図29に示す。
変数iの値とnops(S)の値の大小を比較する際に、図29に示すプログラムでは、larger(i,nops(S))によって、プログラム「larger」を呼び、「larger」の中で関数nopsから返ってきた値の型を調べた上で、iとnops(S)の大小を比較する。一方、図28に記載されているプログラムでは、プログラム「larger」を呼ぶことなく、直接iとnops(S)の大小を比較する。また、変数iの数を1増加させる際に、図29に記載されているプログラムでは、i:=add2(i,1)によって、プログラム「add2」を呼び、「add2」の中で変数iの型を調べた上で、i+1を実行するが、図28に記載のプログラムでは、プログラム「add2」を呼ぶことなく、直接i+1を実行する。
この処理の差は、プログラム実行時の実行効率の差を生じさせる。即ち、従来の方法(特開平11−224200)と比較して、本発明の方法は、不要なプログラムの呼び出し及び不要な型の確認を行わないために、プログラムを実行する計算機資源をより効率的に利用することを可能にする。
なお、上記の動作をプログラムとして構築し、プログラム変換装置として利用されるコンピュータにインストールし、CPU等の制御手段により実行する、または、ネットワークを介して流通させることが可能である。
また、構築されたプログラムをプログラム変換装置として利用されるコンピュータに接続されるハードディスク装置や、フレキシブルディスク、CD−ROM等の可搬記憶媒体に格納しておき、実行時にコンピュータにインストールすることも可能である。
なお、本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
本発明は、数式処理システムの拡張機能としてプログラムを変換するためのシステムに利用可能である。
10 入力手段、入力部
20 字句解析手段、字句解析部
30 構文解析手段、構文解析部
40 変換手段、変換部
50 出力手段、出力部
60 型情報データーベース
70 変換規則データーベース
20 字句解析手段、字句解析部
30 構文解析手段、構文解析部
40 変換手段、変換部
50 出力手段、出力部
60 型情報データーベース
70 変換規則データーベース
Claims (4)
- 数式処理システムにおける、新しい型の定義に伴う既存プログラムの基本演算部分を変換するためのプログラム変換方法において、
前記既存プログラムを入力し、
入力された前記既存プログラムの字句解析を行い、
前記数式処理システムにおいて予め定義された型を出力とする関数名と該関数名の型を格納した型情報データーベースを参照して、構文解析を行い、
前記数式処理システムにおいて予め定義された型のみが代入される部分については変換しない変換規則を含む変換規則データーベースを参照し、構文解析されたプログラムを変換し、
変換されたプログラムを出力することを特徴とするプログラム変換方法。 - 数式処理システムにおける、新しい型の定義に伴う既存プログラムの基本演算部分を変換するためのプログラム変換装置であって、
前記数式処理システムにおいて予め定義された型を出力とする関数名と該関数名の型を格納した型情報データーベースと、
前記数式処理システムにおいて予め定義された型のみが代入される部分については変換しない変換規則を含む変換規則が蓄積された変換規則データーベースと、
前記既存プログラムを入力する入力手段と、
入力された前記既存プログラムの字句解析を行う字句解析手段と、
前記型情報データーベースを参照して、構文解析を行う構文解析手段と、
前記変換規則データーベースを参照して、構文解析されたプログラムを変換する変換手段と、
変換されたプログラムを出力する出力手段と、を有することを特徴とするプログラム変換装置。 - 数式処理システムにおける、新しい型の定義に伴う既存プログラムの基本演算部分を変換するためのプログラム変換プログラムであって、
前記既存プログラムを入力するステップと、
入力された前記既存プログラムの字句解析を行うステップと、
前記数式処理システムにおいて予め定義された型を出力とする関数名と該関数名の型を格納した型情報データーベースを参照して、構文解析を行うステップと、
前記数式処理システムにおいて予め定義された型のみが代入される部分については変換しない変換規則を含む変換規則データーベースを参照し、構文解析されたプログラムを変換するステップと、
変換されたプログラムを出力するステップと、からなることを特徴とするプログラム変換プログラム。 - 数式処理システムにおける、新しい型の定義に伴う既存プログラムの基本演算部分を変換するためのプログラム変換プログラムを格納した記憶媒体であって、
前記既存プログラムを入力するステップと、
入力された前記既存プログラムの字句解析を行うステップと、
前記数式処理システムにおいて予め定義された型を出力とする関数名と該関数名の型を格納した型情報データーベースを参照して、構文解析を行うステップと、
前記数式処理システムにおいて予め定義された型のみが代入される部分については変換しない変換規則を含む変換規則データーベースを参照し、構文解析されたプログラムを変換するステップと、
変換されたプログラムを出力するステップと、からなるプログラムを格納したことを特徴とするプログラム変換プログラムを格納した記憶媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003274940A JP2005038212A (ja) | 2003-07-15 | 2003-07-15 | プログラム変換方法及び装置及びプログラム変換プログラム及びプログラム変換プログラムを格納した記憶媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003274940A JP2005038212A (ja) | 2003-07-15 | 2003-07-15 | プログラム変換方法及び装置及びプログラム変換プログラム及びプログラム変換プログラムを格納した記憶媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005038212A true JP2005038212A (ja) | 2005-02-10 |
Family
ID=34211756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003274940A Pending JP2005038212A (ja) | 2003-07-15 | 2003-07-15 | プログラム変換方法及び装置及びプログラム変換プログラム及びプログラム変換プログラムを格納した記憶媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005038212A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110167404A1 (en) * | 2010-01-06 | 2011-07-07 | Microsoft Corporation | Creating inferred symbols from code usage |
-
2003
- 2003-07-15 JP JP2003274940A patent/JP2005038212A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110167404A1 (en) * | 2010-01-06 | 2011-07-07 | Microsoft Corporation | Creating inferred symbols from code usage |
US9298427B2 (en) * | 2010-01-06 | 2016-03-29 | Microsoft Technology Licensing, Llc. | Creating inferred symbols from code usage |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3430252B2 (ja) | ソースコード変換方法、ソースコード変換プログラムを記録した記録媒体及びソースコード変換装置 | |
US9122540B2 (en) | Transformation of computer programs and eliminating errors | |
US20100199269A1 (en) | Program optimization device and program optimization method | |
JP2007528059A (ja) | ソフトウェアのモデル化、抽象、および分析のためのシステムと方法 | |
WO2015159501A1 (ja) | 検証性質統合装置、検証性質統合方法および検証性質統合プログラムが記録された記憶媒体 | |
US8874411B2 (en) | Processing system, method, and program for modeling system | |
US9075630B1 (en) | Code evaluation of fixed-point math in the presence of customizable fixed-point typing rules | |
JP2009181446A (ja) | プログラム生成装置およびブロック線図生成装置 | |
US6728953B1 (en) | Selectively enabling expression folding during program compilation | |
US7694283B2 (en) | Method and apparatus for generating specification data | |
US20150020051A1 (en) | Method and apparatus for automated conversion of software applications | |
US7895584B1 (en) | Translation of a program in a dynamically-typed language to a program in a hardware description language | |
JP2879099B1 (ja) | 抽象構文木処理方法、抽象構文木処理プログラムを記録したコンピュータ読み取り可能な記録媒体、抽象構文木データを記録したコンピュータ読み取り可能な記録媒体、及び、抽象構文木処理装置 | |
JP2005038212A (ja) | プログラム変換方法及び装置及びプログラム変換プログラム及びプログラム変換プログラムを格納した記憶媒体 | |
CN112270176B (zh) | 深度学习框架中模式转换的方法、装置和计算机存储介质 | |
Coors et al. | Integer code generation for the TI TMS320C62X | |
Moyen et al. | Loop quasi-invariant chunk motion by peeling with statement composition | |
JPH11224200A (ja) | プログラム変換方法及び装置及びプログラム変換プログラムを格納した記憶媒体 | |
US5437035A (en) | Method and apparatus for compiling a program incending a do-statement | |
Yaglamunov | Correctness proofs for C library functions with Frama-C | |
Hanebutte et al. | Pre-Quantized Deep Learning Models Codified in ONNX to Enable Hardware/Software Co-Design | |
Messerschmidt et al. | Correctness preservation and complexity of simple RL-automata | |
JP2674489B2 (ja) | ベクトル化処理装置 | |
JP3003459B2 (ja) | プログラム作成支援装置 | |
Doi et al. | Bit-length optimization method for high-level synthesis based on non-linear programming technique |