(57)【特許請求の範囲】
【請求項１】
入力された原始プログラムを保持する原始プログラム保持手段と、
前記原始プログラム保持手段に保持した原始プログラムに行番号を持たない行がある場合に、該原始プログラムに所定の増分値をとる内部行番号を付与する行番号作成手段と、 前記行番号作成手段が内部行番号を付与した原始プログラムを構文解析して実行形式プログラムに翻訳する翻訳手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記原始プログラムのユーザ行番号有無の指定の別を識別する情報を記憶する行番号情報フラグ記憶手段と、
前記原始プログラム保持手段に保持した原始プログラムを読み込み、ユーザ行番号を持たない行があるか検索する検索手段と、
前記検索手段で検索した結果に基づき、前記原始プログラムのユーザ行番号を持たない行の有無を識別する情報を記憶する行番号識別フラグ記憶手段と、
をさらに備え、
前記行番号作成手段は、前記行番号情報フラグ記憶手段にユーザ行番号無の指定が記憶されている場合、または、ユーザ行番号有の指定が記憶されていて、且つ、前記行番号識別フラグ記憶手段にユーザ行番号を持たない行有が記憶されている場合に、前記原始プログラム保持手段に保持した原始プログラムに所定の増分値をとる内部行番号を付与する
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記翻訳手段は、前記行番号情報フラグ記憶手段にユーザ行番号有の指定が記憶されていて、且つ、前記行番号識別フラグ記憶手段にユーザ行番号を持たない行無が記憶されている場合には、前記原始プログラム保持手段に保持した原始プログラムを構文解析して実行形式プログラムに翻訳する
ことを特徴とする請求項２に記載の情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は，原始プログラムを実行形式プログラムに翻訳する情報処理装置に関する。
【０００２】
プログラムを開発する場合，編集，翻訳，実行を統一した環境のもとで行うプログラム開発ツールを使用する。このようなツールを使用してプログラムを開発するとき，ユーザは，原始プログラムに行番号が付与されているか，あるいは付与されていないかを宣言し，ツールはその宣言に従って翻訳を行う。
【０００３】
【従来の技術】
図５は従来の技術である。
図５において，
１００は入力装置であって，原始プログラム１００’を入力するものである。
【０００４】
１００’は原始プログラムである。
１０１は情報処理装置である。
１０２は出力装置であって，ディスプレイ，プリンタ等である。
【０００５】
１１１はコンパイラである。
１１３は構文解析部であって，原始プログラム１００’の構文解析をしてリストを作成するものである。
【０００６】
１１４は構文解析の処理部である。
１１５は内部行番号作成部であって，内部行番号を自動生成するものである。内部行番号は，例えば，初期値１，増分値１でプログラムの先頭行から順次付与するものである。
【０００７】
１１６はリスト作成部であって，翻訳されたプログラムのリスト，エラーメッセージ等のリストを作成するものである。
１１７は実行形式プログラム作成部であって，翻訳された各行のプログラム
をリンクして実行形式のプログラムとするものである。
【０００８】
１２２は行番号情報保持部であって，原始プログラムに行番号があるかないかを表すユーザにより指定された行番号情報を保持するものである。
１２５は行番号情報判定部であって，ユーザにより設定された行番号情報が行番号有りを指定するものであるか（行番号情報フラグがオン），あるいは行番号なし（行番号フラグがオフ）を指定するものであるかを判定するものである。
【０００９】
１２６はリスト出力部であって，コンパイラ１１１で作成されたリスト（実行形式プログラム，エラーメッセージ等のリスト）を外部装置に出力するものである。
【００１０】
１２８は制御部であって，構文解析部１１３，実行形式プログラム作成部１１７，リスト出力部１２６を制御するものである。
図６により図５の構成の動作を説明する。
【００１１】
図６は従来のコンパイラのリスト作成の動作のフローチャートである。
Ｓ１  ユーザは入力装置１００により原始プログラムに行番号を付与したか，あるいは付与していないかの行番号情報を指定する。その情報は行番号情報保持部１２２に保持される。
【００１２】
Ｓ２  入力された原始プログラムを保持する（図５において，入力された原始プログラムの保持部は図示を省略されている）。
Ｓ３  行番号情報判定部１２５は行番号情報保持部１２２の保持する行番号情報を判定する。行番号有り（行番号情報フラグがオン）であればＳ４に進み，行番号無し（行番号情報フラグがオフ）であればＳ１０に進む。
【００１３】
Ｓ４，Ｓ５  構文解析の処理部１１４は原始プログラム１００’を１行ずつ読み，行番号が付与されているか，あるいは付与されていないかを行毎に判定する。行番号が付与されていればＳ６に進み，付与されていなければＳ７に進む。
【００１４】
Ｓ６  構文解析の処理部１１４は付与されている行番号を使用する。
Ｓ７  構文解析の処理部１１４は，行番号を付与されていない行に対して行番号００００を付与する。
【００１５】
Ｓ８  行番号００００の行にエラーメッセージを付与する。
Ｓ９，全ての行を読んだか判定し，読んでいなければＳ４以降の処理を繰り返し，読んでいればＳ１３に進む。
【００１６】
Ｓ１０，Ｓ１１  Ｓ３において，行番号情報判定部１２５が行番号無しであると判定した場合には，内部行番号作成部１１５は原始プログラムを１行ずつ読み，行番号を自動設定する（初期値１，増分値１）。
【００１７】
Ｓ１２  全ての行を読んだか判定し，読んでいなければＳ１０以降の処理を繰り返し，読んでいればＳ１３に進む。
Ｓ１３，Ｓ１４    リスト作成部１１６はリストを作成し，リスト出力部１２６は出力装置１０２に実行形式プログラム，エラーメッセージ等のリストを出力する。
【００１８】
【発明が解決しようとする課題】
従来は，原始プログラムに行番号が付いているとしてユーザが宣言した場合において，行番号を付与されていない行がある時は，その行に行番号００００を付与し，行番号００００とエラーメッセージを表示するようにしていた。そのため，そのメッセージが実際の原始プログラムのどの行に対するエラーメッセージであるのか分かり難かった。
【００１９】
また，従来はユーザの宣言は絶対的なものであり，行番号情報を行番号があるものとしてユーザが宣言した場合には，翻訳に際してコンパイラ自身の判断でその宣言を変更し内部行番号を付与することはしなかった。しかし，ユーザは行番号情報の設定の内容を意識して行うとは限らず，ほとんどのユーザは標準設定されている指定をそのまま使用しているだけである。そのため，宣言の内容に係わらずコンパイラの判断で内部行番号を自動設定して翻訳をした方が良い場合にも，ユーザの指定した宣言で翻訳処理がなされていた。
【００２０】
本発明は，コンパイラが柔軟に原始プログラムの内容を判断し，ユーザの宣言と異なる方法で処理した方が良い場合にはコンパイラはユーザの宣言と異なる方法で翻訳する情報処理装置を提供することを目的とする。
【００２１】
【課題を解決するための手段】
本発明は，入力された原始プログラムを保持する原始プログラム保持部と，原始プログラムの構文解析をして実行形式プログラムに翻訳するコンパイラを有する情報処理装置において，コンパイラは原始プログラムに行番号を持たない行が含まれているとき，行番号が付与されていないことを自動的に検出し，原始プログラムが行番号を持たないものとして内部行番号を自動的に付与し，内部行番号に従って翻訳するようにした。
【００２２】
図１は本発明の基本構成を示す図である。
図１において，
１は入力装置であって，キーボード，磁気ディスク装置等である。
【００２３】
２は情報処理装置である。
３は出力装置であって，ディスプレイ，プリンタ，磁気ディスク装置等である。
【００２４】
１１は原始プログラム（ソースプログラム）である。
２１は原始プログラム保持部であって，入力された原始プログラムを保持するものである。保持された原始プログラムには，ユーザの付与した行番号と行番号作成部２６が自動的に付与する内部行番号を持つものである。原始プログラム保持部２１において，内部行番号は行番号作成部２６の作成した内部行番号であり，ユーザ付与行番号はユーザの付与した行番号である。ユーザ付与行番号において行番号０００２と０００３の間の１行に行番号の欠落がある。内部行番号はその欠落した行に対して行番号０００３を自動設定し，その次の行に０００４を自動設定している。
【００２５】
２２はコンパイラであって，原始プログラム１１を実行形式プログラム（図示せず）に翻訳するものである。
２３は行番号情報保持部であって，原始プログラム１１が行番号を付与されているものであるか，あるいは行番号を付与されていないものであるかを表す行番号情報（行番号情報フラグ）を保持するものである。例えば，行番号有りの時，行番号情報フラグはオン，行番号無しの時は行番号情報フラグをオフとする。
【００２６】
２４は行番号識別フラグ保持部であって，行番号識別フラグ作成部２７の作成した行番号識別フラグを保持するものである。行番号識別フラグは，例えば，行番号有りはオフ，行番号無しはオンである。
【００２７】
２５は構文解析部であって，原始プログラム１１に行番号が付与されている場合にはその行番号に従って構文解析をし，行番号情報判定部２９の判定が行番号無し，あるいは，行番号情報判定部２９の判定が行番号有りとするものであっても行番号の付け落とし等で行番号がない時には自動的に内部行番号を付与し，内部行番号に従って構文解析をするものである。
【００２８】
２６は行番号作成部であって，原始プログラム１１に自動的に内部行番号を作成するものである。
２７は行番号識別フラグ作成部であって，行番号情報が行番号有りである場合に原始プログラム１１の行番号の有無を判定するものである。行番号識別フラグは，例えば行番号情報が行番号有り（オン）の場合にオフに初期設定され，行番号が欠落している場合にオンとするものである。
【００２９】
２８はリスト作成部であって，リスト作成（実行形式プログラム，エラーメッセージ等）をするものである。
２９は行番号情報判定部であって，行番号情報保持部２３に保持されている行番号情報の内容（オンもしくはオフ）を判定するものである。
【００３０】
３０はリスト出力部であって，作成リストを出力装置３に出力するために保持するものである。
図１の本発明の基本構成の動作を説明する。以下において，例えば，行番号情報の行番号無しは行番号情報フラグをオフとし，行番号情報の行番号有りは行番号情報フラグをオンとするものとする。また，行毎の行番号の有無を表す行番号識別フラグは行番号有りはオフ，行番号無しはオンとする。
【００３１】
ユーザの作成した原始プログラム１１が情報処理装置２に入力され，原始プログラム保持部２１に保持される。ユーザにより行番号情報が入力され，行番号情報保持部２３に保持される。行番号情報が行番号有りの場合に行番号情報フラグはオン，無しの場合にオフとするものとする。
【００３２】
構文解析部２５は，行番号情報判定部２９の判定結果に従って，行番号情報が行番号無し（オフ）であれば原始プログラム１１に内部行番号を作成し，原始プログラム保持部２１に設定する。行番号情報保持部２３の行番号情報がオン（行番号有り）であって，全ての行に行番号が付与されている場合にはユーザの作成した行番号に従って翻訳するが，原始プログラム１１に行番号の欠落等で行番号が付与されていないことを検出した場合には，原始プログラム１１に対して自動的に内部行番号（例えば，初期値１，増分値１）を付与し，原始プログラム保持部２１の原始プログラムに保持する。この時，原始プログラム保持部２１にはユーザの設定した行番号と内部行番号の両方が設定される。そして，行番号識別フラグ作成部２７は行番号識別フラグを作成し，行番号識別フラグ保持部２４に保持する。例えば，行番号の欠落等で行番号が付与されていない時は行番号識別フラグ保持部２４の行番号識別フラグをオンにする。また，構文解析部２５は行番号情報フラグがオフ（行番号無し）の時は内部行番号により翻訳を行う。あるいは，行番号情報フラグがオン（行番号有り）で行番号識別フラグがオフ（行番号が全ての行に付与されている）の時にはユーザの付与した行番号により翻訳を行う。
【００３３】
リスト出力部３０は上記のような翻訳処理で作成されたプログラム，エラーメッセージ等のリストを保持し，出力装置３に出力する。
なお，上記において，行番号情報保持部２３の行番号情報が行番号有り（オン）の場合には，自動的に内部行番号を生成し，原始プログラム保持部２１にユーザ作成の行番号と内部行番号の両方を自動的に設定するようにしても良い。そして，行番号情報フラグがオンであっても行番号識別フラグがオンの場合には，構文解析，リスト作成において内部行番号を使用し，行番号情報フラグがオンで行番号識別フラグがオフの場合にユーザ設定の行番号を使用する点は上記と同様である。
【００３４】
本発明によれば，原始プログラムの行番号の欠落を自動的に判定し，行番号の付け忘れ等で行番号が付与されていない場合，あるいは行番号を付与しなかったが行番号情報保持部２３には行番号有りを設定したままで処理しているような場合でも，自動的に内部行番号を付与し，構文解析をするので，エラーと判定されるケースを少なくすることができ，エラーメッセージが出されてもその行番号の位置を容易に判断することができる。そのため，本発明によればプログラムの開発作業の能率を大幅に向上させることができる。
【００３５】
【発明の実施の形態】
図２は本発明のシステム構成の実施例である。
図２において，
５１は入力装置であって，キーボード等である。
【００３６】
５２は磁気ディスク装置であって，原始プログラム６１を保持するものである。
５３は情報処理装置である。
【００３７】
５５は磁気装置である。
５６は表示装置である。
５７は印刷装置である。
【００３８】
６１は原始プログラムであって，磁気ディスク装置５２に格納されているものである。
６２は行番号情報であって，入力装置５１によりユーザが指定して入力するものである。
【００３９】
６３は行番号情報保持部であって，行番号情報を保持するものである。行番号情報は行番号有り（オン）が標準設定されている。
６４は共通情報保持部であって，制御部６８，構文解析部７０等から共通にアクセスすることのできるデータを保持する領域である。
【００４０】
６５は行番号識別フラグ保持部である。
６６は原始プログラム保持部である。原始プログラム保持部６６において，内部行番号は行番号作成部７２の作成した内部行番号であり，ユーザ付与行番号はユーザの付与した行番号である。ユーザ付与行番号において行番号０００２と０００３の間の１行に行番号の欠落がある。内部行番号はその欠落した行に対して行番号０００３を自動設定し，その次の行に０００４を自動設定している。
【００４１】
６７はコンパイラである。
６９は行番号情報判定部である。
７０は構文解析部である。
【００４２】
７１は構文解析処理部であって，原始プログラム６１の構文解析を行うものである。
７２は行番号作成部である。
【００４３】
７３は行番号識別フラグ作成部である。
７４はリスト作成部である。
７５はリスト出力部である。
【００４４】
７６は実行形式プログラム作成部であって，各行の翻訳されたプログラムをリンクして実行形式プログラムを作成するものである。
図３，図４を参照して，図２のシステム構成の実施例を説明する。
【００４５】
図３，図４は本発明のコンパイラのフローチャートである。
Ｓ１，Ｓ２  行番号情報判定部６９は行番号情報保持部６３を参照し，行番号情報の行番号情報フラグのオン（行番号有り）もしくはオフ（行番号無し）を判定する。行番号情報が行番号有りであればＳ３に進み，行番号無しであればＳ２２に進む。
【００４６】
Ｓ３  行番号情報が行番号有りであるので，制御部６８は行番号識別フラグ保持部６５の行番号識別フラグをオフに初期設定する。
Ｓ４  構文解析部７０は原始プログラム６１を１行読む。
【００４７】
Ｓ５  構文解析部７０は読み込んだ行の行番号の有無を判定する。行番号がなければＳ６で行番号識別フラグをオンとする。行番号があればＳ７に進む。
Ｓ６  行番号識別フラグをオンにする。
【００４８】
Ｓ７  ユーザの付与した行番号と行番号作成部７２の作成した内部行番号を原始プログラム保持部６６に設定する。
Ｓ８  全ての行を読んだか判定する。全ての行を読んでいなければＳ４に戻って次の行を読み，Ｓ５以降の処理を繰り返す。全て読んでいればＳ９に進む。
【００４９】
Ｓ９，Ｓ１０，Ｓ１１，Ｓ１２  構文解析部７０は行番号情報が行番号なし（行番号情報フラグがオフ）かあるいは行番号識別フラグがオンであるか判定し，行番号情報フラグがオフもしくは行番号識別フラグがオンであれば，内部行番号を使用する。また，行番号情報フラグがオンであって，行番号識別フラグがオフであればユーザの付与した行番号を使用する。
【００５０】
Ｓ２２，Ｓ２３  Ｓ２でユーザの指定した行番号情報が行番号無し（行番号情報フラグがオフ）であれば，構文解析部７０は原始プログラムを１行読み込み，行番号作成部７２は内部行番号を付与する。
【００５１】
Ｓ２４  全ての行を読んだか判定する。全ての行を読んでいなければＳ２２に戻って次の行を読み，Ｓ２３の処理を繰り返す。全て読んでいれば，Ｓ９に進み，Ｓ９以降の処理をする。
【００５２】
【発明の効果】
本発明によれば，原始プログラムの行番号の欠落等を自動的に判定し，ユーザが行番号を付け落とした等で行番号が付与されていない場合，あるいは行番号を付与しなかったが行番号情報設定部には行番号有りを設定して処理したような場合でも，コンパイラが自動的に内部行番号を付与して構文解析を行う。そのため，行番号の欠落のためにエラー箇所が分からないということがなくなり，プログラム開発の能率が大幅に向上する。
【図面の簡単な説明】
【図１】本発明の基本構成を示す図である。
【図２】本発明のシステム構成の実施例を示す図である。
【図３】本発明のコンパイラのフローチャートを示す図である。
【図４】本発明のコンパイラのフローチャートを示す図である。
【図５】従来の技術を示す図である。
【図６】従来のコンパイラのリスト作成の動作のフローチャートを示す図である。
【符号の説明】
１：入力装置
２：情報処理装置
３：出力装置
１１：原始プログラム
２１：原始プログラム保持部
２２：コンパイラ
２４：行番号識別フラグ保持部
２５：構文解析部
２６：行番号作成部
２７：行番号識別フラグ作成部
２８：リスト作成部
２９：行番号情報判定部
３０：リスト出力部
【図１】
0003665392.tif 000002
【図２】
0003665392.tif 000003
【図３】
0003665392.tif 000004
【図４】
0003665392.tif 000005
【図５】
0003665392.tif 000006
【図６】
0003665392.tif 000007