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