JPH02187828A - エラースキップ方式 - Google Patents

エラースキップ方式

Info

Publication number
JPH02187828A
JPH02187828A JP733689A JP733689A JPH02187828A JP H02187828 A JPH02187828 A JP H02187828A JP 733689 A JP733689 A JP 733689A JP 733689 A JP733689 A JP 733689A JP H02187828 A JPH02187828 A JP H02187828A
Authority
JP
Japan
Prior art keywords
entry
error
skip
error skip
stack
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
JP733689A
Other languages
English (en)
Inventor
Kazuko Kadoi
角井 和子
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP733689A priority Critical patent/JPH02187828A/ja
Publication of JPH02187828A publication Critical patent/JPH02187828A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はエラースキップ方式に関し、特に入れ子措造を
持つ文が許されておりさらにその入れ子構造において再
帰的な構造を持つ文が許されているプログラム言語で記
述されたソースプログラムのコンパイラによる横文解析
においてエラースキップ(横文解析において構文的エラ
ーが発生した場合にあらかじめ定められている所定の語
まで横文解析をスキツプする処理)を行うエラースキッ
プ方式に関する。
〔従来の技術〕
従来、この種のエラースキップ方式では、静的にチェー
ニングされたエラースキップテーブル(ソースプログラ
ム中の一定の範囲(il1文解析の単位。その最小単位
が文である)に対応してその範囲中で構文的エラーが発
生した場合に行われるエラースキップを止めるいくつか
の語を保持しているテーブル)が利用されてエラースキ
ップが行われていた。
この場合に、静的なチェーニングが行われているので、
ソースプログラム中の文に対応するエラースキップテー
ブル間のチェーニング(文に対応するエラースキップテ
ーブル同士のチェーニング)を行うことはできなかった
〔発明が解決しようとする課題〕
上述した従来のエラースキップ方式では、静的にチェー
ニングされたエラースキップテーブルが利用されており
、ソースプログラム中の文に対応するエラースキップテ
ーブルは最新の文(横文解析中の文)に対応するエラー
スキップテーブルしか有効に存在していないので、エラ
ースキップの幅が大きくなり (エラースキップが止ま
る可能性が少なくなり)、綿密な横文解析を行うことが
できないという欠点がある。
本発明の目的は、上述の点に鑑み、文に対応するエラー
スキップテーブル間の動的なチェーニングを行い、綿密
な横文解析を可能にするエラースキップ方式を提供する
ことにある。
〔課題を解決するための手段〕
本発明のエラースキップ方式は、入れ子構造を持つ文が
許されておりさらにその入れ子構造において再す1■的
な構造を持つ文が許されているプログラム3語で記述さ
れたソースプログラムの横文解析において、ソースプロ
グラム中の各文に対応するエラースキップテーブルのア
ドレスをスタックテーブルのエントリに登録することに
より文に対応するエラースキップテーブル間の動的なチ
ェーニングを行うテーブル登録手段と、ソースプログラ
ム中のある文に対応するエラースキ、ブチ−プルのアド
レスが前記テーブル登録手段によりスタックテーブルの
エントリに登録されたときにそれまでに同一のエラース
キップテーブルのアドレスの登録が行われているか否か
を調べその調査結果をスタックテーブルのエントリ中の
フラグに反映する同一エラースキップテーブルサーチ手
段と、構文的エラーの検出時に前記テーブル登録手段お
よび前記同一エラースキップテーブルサーチ手段により
調整されているスタックテーブルに基づき同一のエラー
スキップテーブルのサーチを回避してエラースキップを
行いエラースキップが止まったときにスタックテーブル
のエントリ中のフラグの書換えを行うエラースキップ手
段と、ソースプログラム中のある文に関する横文解析が
正常に完結する毎に完結した文に対応するエラースキッ
プテーブルのアドレスを有するエントリをスタックテー
ブルから削除するテーブル解放手段とを有する。
〔作用〕
本発明のエラースキップ方式では、テーブル登録手段が
ソースプログラム中の各文に対応するエラースキップテ
ーブルのアドレスをスタックテーブルのエントリに登録
することにより文に対応するエラースキップテーブル間
の動的なチェーニングを行い、同一エラースキノブテー
ブルサーチ手段がソースプログラム中のある文に対応す
るエラースキップテーブルのアドレスがテーブル登録手
段によりスタックテーブルのエントリに登録されたとき
にそれまでに同一のエラースキップテーブルのアドレス
の登録が行われているか否かを調べその調査結果をスタ
ックテーブルのエントリ中のフラグに反映し、エラース
キップ手段が構文的エラーの検出時にテーブル登録手段
および同一エラースキノブテーブルサーチ手段により調
整されているスタックテーブルに基づき同一のエラース
キップテーブルのサーチを回避してエラースキンプを行
いエラースキップが止まったときにスタックテーブルの
エントリ中のフラグの書換えを行い、テーブル解放手段
がソースプログラム中のある文に関する横文解析が正常
に完結する毎に完結した文に対応するエラースキップテ
ーブルのアドレスを有するエントリをスタックテーブル
から削除する。
〔実施例〕
次に、本発明について図面を参照して説明する。
第1図は、本発明のエラースキップ方式の一実施例の構
成を示すブロック図である。本実施例のエラースキップ
方式は、テーブル登録手段1と、同一エラースキンプテ
ーブルサーチ手段2と、エラースキップ手段3と、テー
ブル解放手段4と、ソースプログラム5と、コントロー
ラ6と、エラースキップテーブル7と、スタックテーブ
ル8とを含んで構成されている(図中で実線の矢線はデ
ータの流れを示しており、破線の矢線は制御の流れを示
している)。
第2図を参照すると、同一エラースキンプテブルサーチ
手段2の処理は、先頭エントリ抽出ステ、プ21と、最
新エントリ判定ステップ22と、同一エラースキノブテ
ーブル判定ステップ23と、エントリ中フラグオフステ
ップ24と、次エントリ抽出ステップ25とからなる。
第3図を参照すると、エラースキップ手段3における同
一エラースキンプテーブルサーチ回避処理は、l設定ス
テップ31(1は0または正整数)と、ri=OJ判定
ステップ32と、i番目エントリ中フラグオン判定ステ
ップ33と、エラースキップステップ34と、iM少ス
ステップ35からなる(iはメモリ (図示せず)上の
領域に設定される)。
第4図を参照すると、エラースキップ手段3におけるフ
ラグ書換えおよびエントリ削除処理は、jおよびに設定
ステップ41(Jおよびkは0または正整数)と、l”
k=0J判定ステップ42と、l設定ステップ43(l
は0または正整数)と、「1−〇」判定ステップ44と
、同一エラースキップテーブル判定ステップ45と、e
番目エントリ中フラグオンステップ46と、1番目エン
トリ削除ステップ47と、」およびに減少ステップ48
と、1減少ステツプ49とからなる(j、におよびPは
メモリ上の領域に設定される)。
第5図を参照すると、テーブル解放手段4の処理は、m
B定ステ、プ51 (mは0または正整Ik)と、rm
=OJ判定ステップ52と、同一エラースキノブテーブ
ル判定ステップ53と、m番目エントリ中フラグオンス
テップ54と、最新エントリ削除ステップ55と、m残
少ステップ56とからなる(mはメモリ上の領域に設定
される)。
第6図は、スタックテーブル8の構成およびエラースキ
ップテーブル7とスタックテーブル8との関係を示す図
である。この図を参照すると、スタックテーブル8は、
フラグおよびエラースキップテーブル7のアドレスを示
すエラースキップテーブルアドレスから構成されている
いくつかのエントリを有している。
次に、このように構成された本実施例のエラースギツブ
方式の動作について説明する。
ソースプログラム5中のある文の横文解析が行われる際
には、コンパイラ(図示せず)の1つの機能であるコン
トローラ6から起動されたテーブル登録手段lは、当該
文に対応するエラースキップテーブル7のアドレス(エ
ラースキップテーブルアドレス)をスタックテーブル8
の最新エントリ (その時点で最後にエラースキップテ
ーブルアドレスが登録されているエントリの次のエント
リ)に登録し、その最新エントリ中のフラグをオン(O
N)に設定する(これにより、文に対応するエラースキ
ップテーブル7の間の動的なチェーニング(文に対応す
るエラ−スキップテーブル7同士の動的なチェーニング
)が行われる)。
このようなスタックテーブル8のエントリへの登録の際
に、テーブル登録手段lの指示に基づいて同一エラース
キップテーブルサーチ手段2は以下に示す処理を行う(
第2図参照)。
まず、スタックテーブル8中の先頭のエントリを抽出し
くステップ21)、そのエントリ (以下、抽出エント
リという)が最新エントリであるか否かを判定する(ス
テップ22)。
この判定で抽出エントリが最新エントリである場合には
、処理を終了する。
ステップ22の判定で抽出エントリが最新エントリでは
ない場合には、最新エントリ中のエラースキップテーブ
ルアドレスと抽出エントリ中のエラースキップテーブル
アドレスとが等しいか否かを判定する(ステップ23)
この判定で両者が等しい場合には、抽出エントリ中のフ
ラグをオフ(OFF)に設定する(ステップ24)。
ステップ23の判定で両者が等しくない場合またはステ
ップ24の処理が終了した場合には、スタックテーブル
s中の次のエントリを抽出しくステ・ノブ25)、その
エントリを新たな抽出エントリとしてステップ22〜2
5の処理および判定を繰り返す。
コンパイラの横文解析によってソースプログラム5中の
構文的エラーが検出された場合には、コントローラ6か
ら起動されたエラースキップ手段3は構文的エラーが検
出された語以後の各語について以下に示す処理を行う。
初めに、同一のエラースキップテーブル7 (同一の文
に対応するエラースキップテーブル7)のサーチを回避
するための処理(同一エラースキップテーブルサーチ凹
避処理)を行う(第3図参照)。
すなわち、まず】にスタックテーブル8の現在のエント
リの個数を退避する(ステップ31)。
次に、以下に示す処理がスタックテーブル8中の全ての
エントリについて終了したか否かを判断するためにiが
0であるか否かを判定する(ステップ32)。
この判定でiが0である場合には、処理を終了する。
ステップ32の判定でiが0でない場合には、スタック
テーブル8内のi番目のエントリ中のフラグがオンであ
るか否かを判定する(ステップ32)。
この判定でi番目のエントリ中のフラグがオンである場
合には、そのエントリに登録されているエラースキップ
テーブル7に基づいてエラースキップに関する処理(当
該エラースキップテーブル7に処理の対象となっている
語が保持されていればエラースキップを止め、保持され
ていなければエラースキップを続ける処理)をjテう(
ステップ34)。
ステップ33の判定でi番目のエントリ中のフラグがオ
フである場合またはステップ34のエラースキ・2プに
関する処理でエラースキップが止まらなかった場合には
、iから1を減じ(ステップ35)、ステップ32に制
御を戻す。
エラースキ、プが止まらない場合には、上述のようなス
テップ32〜35の処理および判定をスタックテーブル
8のエントリの個数回だけ繰り返す(ステ・2プ32の
判定でiが0になるまで繰り返される)。
ステップ34に示すエラースキップに関する処理におい
てエラースキップが止まった場合には、フラグ書換えお
よびエントリ削除処理を行う(第4図参照)。
すなわち、jにスタックテーブル8の全てのエントリの
個数を退避し、kにスタックテーブル8のエラースー1
′ノブが止まったエラースキップテブル7に対応するエ
ントリから最新エントリまでの個数から1を減した値を
退避する(ステップ41次に、以下に示す処理が最新エ
ントリからエラースキップが止まったエラースキップテ
ーブル7に対応するエントリにまで達したか否かを判断
するためにkが0であるか否かを判定する(ステップ4
2)。
この判定でkが0である場合には、処理を終了する。
ステップ42の判定でkが0でない場合には、lにスタ
ックテーブル8の最初(先頭)のエントリからエラース
キップが止まったエラースキップテーブル7に対応する
エントリまでのエントリの個数から1を減じた値を退避
する(ステップ43)。
次に、以下に示す処理がエラースキップが止まったエラ
ースキップテーブル7に対応するエントリから最初のエ
ントリにまで達したか否かを判断するために!がOであ
るか否かを判定する(ステツブ44)。
この判定でlがOでない場合には、スタックテーブル8
のj番目のエントリに対応するエラースキンブテーフ゛
ルアとスタソクテーフ゛ル8の1番目のエントリに対応
するエラースキップテーブル7とが同一であるか否か(
両エントリ中のエラースキップテーブルアドレスが同一
であるか否か)を判定する(ステップ45)。
この判定で両者が同一である場合には、β番目のエント
リ中のフラグをオンに設定する(ステップ46)。
ステップ44の判定でPがOである場合またはステップ
46の処理が終了した場合には、スタックテーブル8の
j番目のエントリを削除しくステップ47) 、jおよ
びkから1を減じ(ステップ48)、ステップ42に制
御を戻す。
ステップ45の判定で両者が同一でない場合には、lか
ら1を減じ(ステップ49)、ステップ44に制御を戻
す。
上述のようなステップ42〜49の処理および判定をス
テップ42の判定でkがOになるまで繰り返して処理を
終了する。
ソースプログラム5中のある文の横文解析がエラーが生
じることなく正常に完結した場合には、コントローラ6
から起動されたテーブル解放手段4は以下に示す処理を
行う(第5図参照)。
まず、mにスタックテーブル8のエントリの個数から1
を減じた値を退避する(ステップ51)。
次に、以下に示す処理がスタックテーブル8中の最新エ
ントりの1つ前のエントリから最初のエントリにまで達
したか否かを判断するためにmが0であるか否かを判定
する(ステップ52)。
この判定でmがOでない場合には、スタックテーブル8
の最新エントリ中のエラースキンブテーフ゛ルアドレス
とスタソクテーフ゛ル8のm番目のエントリ中のエラー
スキップテーブルアドレスとが同一であるか否かを判定
する(ステップ53)。
この判定で両者が同一である場合には、m番目のエント
り中のフラグをオンに設定しくステップ54)、最新エ
ントリ (横文解析が正常に完結した文に対応するエラ
ースキップテーブル7のアドレスを有するエントリ)を
スタックテーブル8から削除する (ステップ55)。
ステップ53の判定で両者が同一でない場合には、mか
ら1を減じ(ステップ56)、ステップ52に制御を戻
す。
ステップ52の判定でmがOである場合(最初のエント
リに関する上述の処理が終了した場合)には、最新エン
トリをスタックテーブル8から削除する (ステップ5
5)。
〔発明の効果〕
以上説明したように本発明は、ソースプログラム中の各
文に対応するエラースキップテーブルのアドレスをスタ
ックテーブルのエントリに登録すること等により、ソー
スプログラム中の文に対応するエラースキップテーブル
間の動的なチェーニングを行うことができ、最新の文よ
りも浅いレベル(入れ吊構造に関しての浅いレベル)の
文に対応するエラースキップテーブルは全て有効に存在
させておくことができ、入れ吊構造を持つ文が許されて
おりさらにその入れ吊構造において再帰的なjllj造
を持つ文が許されているプログラム言語で記述されたソ
ースプログラムのコンパイル時において綿密な横文解析
を行うことができるという効果がある。
【図面の簡単な説明】
第1図は本発明の一実施例の構成を示すブロック図、 第2図は第1図中の同一エラースキンプテーブルサーチ
手段の処理を示す流れ図、 第3図は第1図中のエラースキップ手段によるエラース
キップテーブルサーチ回避処理を示す流れ図、 第4図は第1図中のエラースキップ手段によるフラグ書
換えおよびエントリ削除処理を示す流れ図、 第5図は第1図中のテーブル解放手段の処理を示す流れ
図、 第6図は第1図中のスタックテーブルの構成およびエラ
ースキップテーブルとスタックテーブルとの関係を示す
図である。 図において、 ■・・・テーブル登録手段、 2・・・同一エラースキノブテーブルサーチ手段、 3・・・エラースキップ手段、 4・・・テーブル解放手段、 5・・・ソースプログラム、 6・・・コントローラ、 7・・・エラースキップテーブル、 8・・・スタックテーブルである。

Claims (1)

  1. 【特許請求の範囲】 入れ子構造を持つ文が許されておりさらにその入れ子構
    造において再帰的な構造を持つ文が許されているプログ
    ラム言語で記述されたソースプログラムの横文解析にお
    いて、 ソースプログラム中の各文に対応するエラースキップテ
    ーブルのアドレスをスタックテーブルのエントリに登録
    することにより文に対応するエラースキップテーブル間
    の動的なチェーニングを行うテーブル登録手段と、 ソースプログラム中のある文に対応するエラースキップ
    テーブルのアドレスが前記テーブル登録手段によりスタ
    ックテーブルのエントリに登録されたときにそれまでに
    同一のエラースキップテーブルのアドレスの登録が行わ
    れているか否かを調べその調査結果をスタックテーブル
    のエントリ中のフラグに反映する同一エラースキップテ
    ーブルサーチ手段と、 構文的エラーの検出時に前記テーブル登録手段および前
    記同一エラースキップテーブルサーチ手段により調整さ
    れているスタックテーブルに基づき同一のエラースキッ
    プテーブルのサーチを回避してエラースキップを行いエ
    ラースキップが止まったときにスタックテーブルのエン
    トリ中のフラグの書換えを行うエラースキップ手段と、 ソースプログラム中のある文に関する構文解析が正常に
    完結する毎に完結した文に対応するエラースキップテー
    ブルのアドレスを有するエントリをスタックテーブルか
    ら削除するテーブル解放手段と を有することを特徴とするエラースキップ方式。
JP733689A 1989-01-13 1989-01-13 エラースキップ方式 Pending JPH02187828A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP733689A JPH02187828A (ja) 1989-01-13 1989-01-13 エラースキップ方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP733689A JPH02187828A (ja) 1989-01-13 1989-01-13 エラースキップ方式

Publications (1)

Publication Number Publication Date
JPH02187828A true JPH02187828A (ja) 1990-07-24

Family

ID=11663105

Family Applications (1)

Application Number Title Priority Date Filing Date
JP733689A Pending JPH02187828A (ja) 1989-01-13 1989-01-13 エラースキップ方式

Country Status (1)

Country Link
JP (1) JPH02187828A (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61150037A (ja) * 1984-12-25 1986-07-08 Fujitsu Ltd 構文解析エラ−情報出力処理方式

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61150037A (ja) * 1984-12-25 1986-07-08 Fujitsu Ltd 構文解析エラ−情報出力処理方式

Similar Documents

Publication Publication Date Title
Needham et al. The Cambridge CAP computer and its protection system
US5146593A (en) Procedure call interface
US20080320282A1 (en) Method And Systems For Providing Transaction Support For Executable Program Components
JP2526020B2 (ja) 例外条件処理方法及び装置
CN107122203B (zh) 一种配置文件的设置方法及装置
JPH02187828A (ja) エラースキップ方式
US7849470B2 (en) System and method for extending a programming language to include multiple dissimilar object systems
JPS63245738A (ja) プログラム未定義デ−タ項目の自動修正方式
JPH06222916A (ja) オンラインリアルタイム処理装置
CN110597846B (zh) 一种ksql处理方法和装置
DE102009038177B4 (de) Ablaufverfolgung in einem laufenden Computersystem
JPH0588879A (ja) プログラム開発支援システム
JP3120434B2 (ja) プログラム動作解析方法
JPS61213936A (ja) 高級言語プログラムのステツプ実行方式
JP2812443B2 (ja) 文字処理装置
CN107632934B (zh) 一种C-sharp中函数复制方法及装置
JPH0778087A (ja) コンパイラ装置
JP2547874B2 (ja) プログラムチェック装置
CN117370375A (zh) 数据库中数据类型的处理方法、介质与计算机设备
US20120117546A1 (en) Run-time Module Interdependency Verification
HK40120198A (zh) 基於ai、rpa和ai agent的代码生成方法、装置和设备
JPH06266562A (ja) オブジェクト指向言語処理システムにおける目的コードサイズ最適化方式
JP2655612B2 (ja) 外部参照更新方式
JPH0566949A (ja) 関数定義コンパイルドコード呼出し方式
JPH0498322A (ja) コンパイラの作成方法