abc プロジェクト
21.10. MakeTokStrTbl 関数説明

関数名 MakeTokStrTbl
定義ファイル名pass1.cpp
定義行 585
宣言形式 void MakeTokStrTbl ( TStringList * TokStrTbl )
概要 トークン名と、TokIdの対応テーブルを作成する。
作成したテーブルは、字句解析で使用される。
戻り値 なし
パラメタ説明 TokStrTbl 作成するトーン名とTokIdの対応テーブル格納先。
機能説明
備考

呼出し元関数一覧表
名称 定義ファイル名 定義行
1 Pass1_2 pass1.cpp 317

呼出し先関数一覧表
名称 定義ファイル名 定義行
1 AddObject

2 Sort

関数論理チャート

        |  +--------------------------------------------+ 
   585  +--+ void MakeTokStrTbl(TStringList *TokStrTbl) | 
   586     | {                                          | 
           +--+-----------------------------------------+ 
   587        +--- // キーワード(単語)
   588        |                           
   589        |    // プログラム関連      
   590        +--- TokStrTbl->AddObject("PROGRAM",(TObject *)tid_PROGRAM);
   591        +--- TokStrTbl->AddObject("SUBROUTINE",(TObject *)tid_SUBROUTINE);
   592        +--- TokStrTbl->AddObject("FUNCTION",(TObject *)tid_FUNCTION);
   593        +--- TokStrTbl->AddObject("MODULE",(TObject *)tid_MODULE);
   594        +--- TokStrTbl->AddObject("INTERFACE",(TObject *)tid_INTERFACE);
   595        +--- TokStrTbl->AddObject("CONTAINS",(TObject *)tid_CONTAINS);
   596        +--- TokStrTbl->AddObject("USE",(TObject *)tid_USE);
   597        +--- TokStrTbl->AddObject("INCLUDE",(TObject *)tid_INCLUDE);
   598        +--- // データ宣言
   599        +--- TokStrTbl->AddObject("COMMON",(TObject *)tid_COMMON);
   600        +--- TokStrTbl->AddObject("INTEGER",(TObject *)tid_INTEGER);
   601        +--- TokStrTbl->AddObject("REAL",(TObject *)tid_REAL);
   602        +--- TokStrTbl->AddObject("DOUBLEPRECISION",(TObject *)tid_DOUBLEPRECISION);
   603        +--- TokStrTbl->AddObject("CHARACTER",(TObject *)tid_CHARACTER);
   604        +--- TokStrTbl->AddObject("LOGICAL",(TObject *)tid_LOGICAL);
   605        +--- TokStrTbl->AddObject("COMPLEX",(TObject *)tid_COMPLEX);
   606        +--- TokStrTbl->AddObject("IMPLICIT",(TObject *)tid_IMPLICIT);
   607        +--- TokStrTbl->AddObject("TYPE",(TObject *)tid_TYPE);
   608        +--- TokStrTbl->AddObject("NAMELIST",(TObject *)tid_NAMELIST);
   609        +--- TokStrTbl->AddObject("ALLOCATABLE",(TObject *)tid_ALLOCATABLE);
   610        +--- TokStrTbl->AddObject("POINTER",(TObject *)tid_POINTER);
   611        +--- TokStrTbl->AddObject("TARGET",(TObject *)tid_TARGET);
   612        +--- TokStrTbl->AddObject("SAVE",(TObject *)tid_SAVE);
   613        +--- TokStrTbl->AddObject("PRIVATE",(TObject *)tid_PRIVATE);
   614        +--- TokStrTbl->AddObject("PUBLIC",(TObject *)tid_PUBLIC);
   615        +--- TokStrTbl->AddObject("EXTERNAL",(TObject *)tid_EXTERNAL);
   616        +--- TokStrTbl->AddObject("INTRINSIC",(TObject *)tid_INTRINSIC);
   617        +--- TokStrTbl->AddObject("INTENT",(TObject *)tid_INTENT);
   618        +--- TokStrTbl->AddObject("OPTIONAL",(TObject *)tid_OPTIONAL);
   619        +--- TokStrTbl->AddObject("WHERE",(TObject *)tid_WHERE);
   620        +--- // 動的記憶割付け
   621        +--- TokStrTbl->AddObject("ALLOCATE",(TObject *)tid_ALLOCATE);
   622        +--- TokStrTbl->AddObject("DEALLOCATE",(TObject *)tid_DEALLOCATE);
   623        +--- TokStrTbl->AddObject("NULLIFY",(TObject *)tid_NULLIFY);
   624        +--- // 制御文
   625        +--- TokStrTbl->AddObject("IF",(TObject *)tid_IF);
   626        +--- TokStrTbl->AddObject("THEN",(TObject *)tid_THEN);
   627        +--- TokStrTbl->AddObject("ELSE",(TObject *)tid_ELSE);
   628        +--- TokStrTbl->AddObject("ELSEIF",(TObject *)tid_ELSEIF);
   629        +--- TokStrTbl->AddObject("ENDIF",(TObject *)tid_ENDIF);
   630        +--- TokStrTbl->AddObject("DO",(TObject *)tid_DO);
   631        +--- TokStrTbl->AddObject("ENDDO",(TObject *)tid_ENDDO);
   632        +--- TokStrTbl->AddObject("SELECT",(TObject *)tid_SELECT);
   633        +--- TokStrTbl->AddObject("CASE",(TObject *)tid_CASE);
   634        +--- TokStrTbl->AddObject("GOTO",(TObject *)tid_GOTO);
   635        +--- TokStrTbl->AddObject("DOWHILE",(TObject *)tid_DOWHILE);
   636        +--- TokStrTbl->AddObject("CALL",(TObject *)tid_CALL);
   637        +--- TokStrTbl->AddObject("RETURN",(TObject *)tid_RETURN);
   638        +--- TokStrTbl->AddObject("STOP",(TObject *)tid_STOP);
   639        +--- TokStrTbl->AddObject("END",(TObject *)tid_END);
   640        +--- // 入出力
   641        +--- TokStrTbl->AddObject("READ",(TObject *)tid_READ);
   642        +--- TokStrTbl->AddObject("WRITE",(TObject *)tid_WRITE);
   643        +--- TokStrTbl->AddObject("PRINT",(TObject *)tid_PRINT);
   644        +--- TokStrTbl->AddObject("BACKSPACE",(TObject *)tid_BACKSPACE);
   645        +--- TokStrTbl->AddObject("INQUIRE",(TObject *)tid_INQUIRE);
   646        +--- TokStrTbl->AddObject("REWIND",(TObject *)tid_REWIND);
   647        +--- TokStrTbl->AddObject("CLOSE",(TObject *)tid_CLOSE);
   648        +--- TokStrTbl->AddObject("OPEN",(TObject *)tid_OPEN);
   649        +--- TokStrTbl->AddObject("ENDFILE",(TObject *)tid_ENDFILE);
   650        +--- TokStrTbl->AddObject("FORMAT",(TObject *)tid_FORMAT);
   651        |    
   652        +--- // その他
   653        +--- TokStrTbl->AddObject("ASSOCIATED",(TObject *)tid_ASSOCIATED);
   654        +--- TokStrTbl->AddObject("CONTINUE",(TObject *)tid_CONTINUE);
   655        +--- TokStrTbl->AddObject("CYCLE",(TObject *)tid_CYCLE);
   656        +--- TokStrTbl->AddObject("DATA",(TObject *)tid_DATA);
   657        +--- TokStrTbl->AddObject("DIMENSION",(TObject *)tid_DIMENSION);
   658        +--- TokStrTbl->AddObject("EXIT",(TObject *)tid_EXIT);
   659        +--- TokStrTbl->AddObject("PARAMETER",(TObject *)tid_PARAMETER);
   660        |    
   661        +--- // キーワード(文字)
   662        +--- TokStrTbl->AddObject(",",(TObject *)tid_Kannma);
   663        +--- TokStrTbl->AddObject(";",(TObject *)tid_LineEnd);
   664        +--- TokStrTbl->AddObject(":",(TObject *)tid_Koron);
   665        +--- TokStrTbl->AddObject("::",(TObject *)tid_KoronKoron);
   666        |    
   667        +--- // 演算子
   668        +--- TokStrTbl->AddObject("=",(TObject *)tid_Set);
   669        +--- TokStrTbl->AddObject("(",(TObject *)tid_Kakko);
   670        +--- TokStrTbl->AddObject(")",(TObject *)tid_Kokka);
   671        +--- TokStrTbl->AddObject("+",(TObject *)tid_Opr);
   672        +--- TokStrTbl->AddObject("-",(TObject *)tid_Opr);
   673        +--- TokStrTbl->AddObject("*",(TObject *)tid_Opr);
   674        +--- TokStrTbl->AddObject("/",(TObject *)tid_Opr);
   675        +--- TokStrTbl->AddObject("**",(TObject *)tid_Opr);
   676        +--- TokStrTbl->AddObject("<",(TObject *)tid_Opr);
   677        +--- TokStrTbl->AddObject(".LT.",(TObject *)tid_Opr);
   678        +--- TokStrTbl->AddObject("<=",(TObject *)tid_Opr);
   679        +--- TokStrTbl->AddObject(".LR.",(TObject *)tid_Opr);
   680        +--- TokStrTbl->AddObject(">",(TObject *)tid_Opr);
   681        +--- TokStrTbl->AddObject(".GT.",(TObject *)tid_Opr);
   682        +--- TokStrTbl->AddObject(">=",(TObject *)tid_Opr);
   683        +--- TokStrTbl->AddObject(".GE.",(TObject *)tid_Opr);
   684        +--- TokStrTbl->AddObject("==",(TObject *)tid_Opr);
   685        +--- TokStrTbl->AddObject(".EQ.",(TObject *)tid_Opr);
   686        +--- TokStrTbl->AddObject("/=",(TObject *)tid_Opr);
   687        +--- TokStrTbl->AddObject(".NE.",(TObject *)tid_Opr);
   688        |    
   689        +--- TokStrTbl->AddObject(".NOT.",(TObject *)tid_Opr);
   690        +--- TokStrTbl->AddObject(".AND.",(TObject *)tid_Opr);
   691        +--- TokStrTbl->AddObject(".OR.",(TObject *)tid_Opr);
   692        +--- TokStrTbl->AddObject(".EQV.",(TObject *)tid_Opr);
   693        +--- TokStrTbl->AddObject(".NEQV.",(TObject *)tid_Opr);
   694        +--- TokStrTbl->AddObject("//",(TObject *)tid_Opr);
   695        |    
   696        +--- TokStrTbl->Sort();
            +-+---+ 
   697      |  }  | 
            +-----+