abc プロジェクト
関数名 | FindEndDo |
定義ファイル名 | pass2.cpp |
定義行 | 1254 |
宣言形式 | int FindEndDo ( TList * TokenList , int sPos ) |
概要 | Doに対応する ENDDO(DOをSkipした場合のとび先)を探す。 見つからない場合は -1を返す行の先頭トークン位置で返す。 |
戻り値 | Doに対応する ENDDOの位置。見つからない場合は -1を返す。 |
パラメタ説明 | TokenList トークンリスト sPos 開始位置 |
機能説明 | |
備考 | |
呼出し元関数一覧表
参照先一覧表
関数論理チャート
| +------------------------------------------+
1254 +--+ int FindEndDo(TList *TokenList,int sPos) |
1255 | { |
+--+---------------------------------------+
1256 +--- int i;
1257 +--- int Level = 0;
1258 +--- TToken *Token;
1259 |
| +----------------------------------------------+
1260 +--+ for(i = sPos ; i < TokenList->Count ; i++){ |
| +--+-------------------------------------------+
1261 | +--- Token = (TToken *)TokenList->Items[i];
| | +------------------------------+
1262 | +--+ if(Token->TokId == tid_DO){ |
| | +--+---------------------------+
1263 | | +--- Level++;
| | +-+---+
1264 | | | } |
| | +-+---+
| | +-+-------------------------------------+
1264 | | | else if(Token->TokId == tid_ENDDO){ |
| | +-+-------------------------------------+
1265 | | +--- Level--;
| | | +------------------+
1266 | | +--+ if(Level == 0){ |
| | | +--+---------------+
| | | | +------------+
1267 | | | +--+ return i; |
| | | | +------------+
| | | +-+---+
1268 | | | | } |
| | | +-----+
| | +-+---+
1269 | | | } |
| | +-----+
| +-+---+
1270 | | } |
| +-----+
| +------------+
1271 +--+ return -1; |
| +------------+
+-+---+
1272 | } |
+-----+