/*****************************************************************************/
/*	ＡＩＧライブラリ　言語モジュールＳＴＫ
			エラーコード
		Copyright (C) 1994-96 by AIG-SOFT			     */
/*****************************************************************************/
/*
	エラー処理自体は、各コマンド処理ファイル内で行えばよいが、
	エラーコード自体は全てここに書くようにする。
	これは、エラー番号の重複を防ぐのと、エラーの詳細を外部で認識出来る
	ようにするためである。
*/
/*****************************************************************************/

#ifndef	__AIG_STKERR__
#define	__AIG_STKERR__	1	// ヘッダー読み込みシンボル

/*****************************************************************************/
// >0 : error
// 	 1-49:予約
// 	50-99:変数処理系のエラー(vserr.h)
// shortの範囲に納めること

// 文法的なエラー
#define	SYNTAX		100	// 文法エラー
#define	DEVZERO		101	// ０で割ろうとした
#define	ARGILL		102	// 引数の型がおかしい
#define	ARGOVER		104	// 引数が多すぎる
#define	CMTERR1		105	// 行内コメントが深すぎる
#define	CMTERR2		106	// 行内コメントが異常
#define NULLERR		107	// 空文字列は使えない
#define	ARGERR		108	// 引数の値がおかしい
#define	VTYPEERR	109	// 変数の型が違う
#define	ATYPEERR	110	// 要素の型が違う
#define	STRCERR		111	// 文字列が"で括られていない
#define	NOTOKEN		112	// トークンが１つもない
#define	ADRSERR		113	// アドレスがおかしい
#define	STR1ERR		114	// 固定文字列のモードがおかしい
#define	NORESUME	115	// resume出来ない
#define	TKNOVER		116	// １トークンが長すぎる
// nstackに関するエラー
#define	NSTKFULL	130	// nstackがいっぱい
#define	NSTKEMP		131	// nstackが空
#define REVPOVER	136	// (が多すぎる
#define	REVPNONE	137	// '('がないのに')',').'がある
#define	NTOPERR		138	// ntopがおかしい
#define NSTKERR		139	// 数値スタックが残っている
#define	NPOVER		140	// [Nが多すぎる
#define	NPNONE		141	// [Nがないのに]Nがある
// lstackに関するエラー
#define	LSTKFULL	160	// lstackがいっぱい
#define	LSTKEMP		161	// lstackが空
#define	LBLOVER		162	// ラベルがこれ以上定義できない
#define	LBLDBL		163	// ラベルの２重定義
#define	LBLNMERR	164	// ラベル名がおかしい
#define	LBNDEF		165	// 未定義ラベル参照
#define LSTKERR		168	// ラベルスタックが残っている
#define	LBLNONE		169	// ラベルが存在しない
#define	LTOPERR		170	// ltopがおかしい
#define	LPNONE		171	// [Lがないのに]Lがある
#define	LPOVER		172	// [Lが多すぎる
// rstackに関するエラー
#define	RSTKFULL	180	// rstackがいっぱい
#define	RSTKEMP		181	// rstackが空
#define	RSTKNONE	182	// １つ上のループカウンターはない
#define RSTKERR		183	// ループスタックが残っている
#define	RTOPERR		184	// rtopがおかしい
#define	RPNONE		185	// [Rがないのに]Rがある
#define	RPOVER		186	// [Rが多すぎる
// 制御構文に関するエラー
#define	REPERR		200	// repeatループが異常
#define	FORERR		201	// forループが異常
#define	WHILEERR	202	// whileループが異常
#define	IFERR		204	// endifがない
#define	NOSEND		205	// sendがない
#define	DEFAULTDBL	206	// defaultが多重にある
#define	CASEERR		207	// CASEが異常
#define	CASENUM		208	// CASEの前に数値がない
#define	BRKERR		210	// breakが異常
#define	CONTERR		211	// continueが異常
#define	RETERR		212	// returnが異常
#define	LBLERR		213	// ラベルが異常
#define	SENDOVER	214	// sendが多過ぎる
// 変数に関するエラー
#define	LOCOVER		250	// ローカルエリアが深すぎる
#define	LOCNONE		251	// ローカルエリアはない
#define	LOCERR		252	// ローカル変数領域が閉じていない
#define	VARNOILL	253	// 変数指定数がおかしい
// 配列に関するエラー
#define	AROVER		260	// 配列領域が拡大出来ない
#define	ARSZOVER	261	// 配列領域サイズを越える
#define	ARYOUSO		262	// 配列要素番号がおかしい
#define ARSZERR		263	// 配列サイズがおかしい
#define	JIGENERR	264	// 配列の次元がおかしい
#define	ARYLOCAL	265	// ローカル変数に配列を定義しようとした
// システム初期化に関するエラー
#define	STKOPEN		300	// ＳＴＫ初期化エラー
#define	LBLOPEN		301	// ラベル処理初期化エラー
#define	VAROPEN		302	// 変数処理初期化エラー
#define	NGAAREA		303	// 配列エリアが確保できない
#define	LOCOPEN		306	// ローカルエリアが初期化できない
#define	COMOPEN		307	// コマンド処理が初期化できない
#define	COM2MACH	308	// コマンドが多すぎる
#define	CODEAREA	351	// 中間コードエリアが確保できない
// 500〜899はユーザーエラー定義用
// 警告
#define CTRLC		900	// CTRL-C(BREAK)が押された
// どうしようもないエラー
#define	SYSERR		999	// システムエラー（これが出たらシステムのバグ）

/*****************************************************************************/
// エラーテーブルの外部参照宣言

#ifndef DEFERR
extern	ERRMES ERRstk[];
#endif

/*****************************************************************************/
#endif
/*****************************************************************************/
