abc プロジェクト
21.7. FindEndDo 関数説明

関数名 FindEndDo
定義ファイル名pass2.cpp
定義行 1254
宣言形式 int FindEndDo ( TList * TokenList , int sPos )
概要 Doに対応する ENDDO(DOをSkipした場合のとび先)を探す。
見つからない場合は -1を返す行の先頭トークン位置で返す。
戻り値 Doに対応する ENDDOの位置。見つからない場合は -1を返す。
パラメタ説明 TokenList トークンリスト
sPos 開始位置
機能説明
備考

呼出し元関数一覧表
名称 定義ファイル名 定義行
1 Pass2_Line pass2.cpp 104

参照先一覧表
名称 種別 定義ファイル名 定義行
1 TToken クラス pass1.h 216

関数論理チャート

        |  +------------------------------------------+ 
  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      |  }  | 
            +-----+