21.15. Pass2 関数説明 |
関数名 | Pass2 |
---|---|
定義ファイル名 | pass2.cpp |
定義行 | 56 |
宣言形式 | void Pass2 ( TList * TokenList , TList * ValDataList ) |
概要 | 構文解析と変数リストを作成し、変数の型などを設定する。 1)モジュール構造識別(モジュール IDを割り振って、異なるモジュールの区 別) 2)DO , IF , GOTO など 飛び先 (参照先)をセット ・ネスト構造の番号をつける。(Root = 0) 3)変数定義 (REAL*8 ) などの情報から、変数一覧(ValDataList)を作成し リンクを設定する。(モジュールが異なる変数は、別物とする) また、変数の型、バイトサイズも保持すること。(一時変数作成の場合に必 要) 4)変数、関数、定数の区別を行う。 |
戻り値 | |
パラメタ説明 | TokenList トークンリスト ValDataList 変数リスト |
機能説明 | |
備考 |
名称 | 定義ファイル名 | 定義行 | |
---|---|---|---|
1 | TMainF::FormActivate | main.cpp | 299 |
名称 | 定義ファイル名 | 定義行 | |
---|---|---|---|
1 | Pass2_Line | pass2.cpp | 104 |
2 | ResetModule | pass2.cpp | 1291 |
名称 | 定義ファイル名 | 定義行 | |
---|---|---|---|
1 | Indent | pass2.cpp | 22 |
2 | ModuleIdx | pass2.cpp | 20 |
3 | NestLevel | pass2.cpp | 21 |
名称 | 種別 | 定義ファイル名 | 定義行 | |
---|---|---|---|---|
1 | TToken | クラス | pass1.h | 216 |
関数論理チャート | +--------------------------------------------------+ 56 +--+ void Pass2(TList *TokenList,TList *ValDataList) | 57 | { | +--+-----------------------------------------------+ 58 +--- int i,j,sPos; 59 +--- TToken *Token; 60 | 61 +--- ModuleIdx = 0; 62 +--- NestLevel = 0; 63 +--- Indent = 0; 64 +--- ResetModule(); 65 +--- sPos = 1; // 先頭のtid_nullと最後の tid_nullはSkip | +--------------------------------------------+ 66 +--+ for(i = 1 ; i < TokenList->Count-1 ; i++){ | | +--+-----------------------------------------+ 67 | +--- Token = (TToken *)TokenList->Items[i]; | | +------------------------------------------------------------+ 68 | +--+ if(Token->TokId != tid_LineEnd){ // 1行単位で解析を行う。 | | | +--+---------------------------------------------------------+ | | | +------------+ 69 | | +--+ continue; | | | | +------------+ | | +-+---+ 70 | | | } | | | +-----+ | | +------------------------------------------------------------------------------+ 71 | +--+ for(j = sPos ; j <= i ; j++){ // 行単位に現在の ModuleIdx,NestLevelをセット | | | +--+---------------------------------------------------------------------------+ 72 | | +--- Token = (TToken *)TokenList->Items[j]; 73 | | +--- Token->ModuleIdx = ModuleIdx; 74 | | +--- Token->NestLevel = NestLevel; 75 | | +--- Token->Indent = Indent; | | +-+---+ 76 | | | } | | | +-----+ 77 | +--- Pass2_Line(TokenList,sPos,i,ValDataList); 78 | +--- sPos = i+1; | +-+---+ 79 | | } | | +-----+ +-+---+ 80 | } | +-----+