Changeset 34 in dev for BasicCompiler_Common/LexicalScoping.h
- Timestamp:
- Jan 14, 2007, 6:11:23 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler_Common/LexicalScoping.h
r4 r34 1 1 2 2 3 enum SCOPE_TYPE{ 4 //ベース 5 SCOPE_TYPE_BASE, 6 7 //分岐 8 SCOPE_TYPE_IF, 9 10 //ループ 11 SCOPE_TYPE_DO, 12 SCOPE_TYPE_FOR, 13 SCOPE_TYPE_WHILE, 14 15 //ケース分け 16 SCOPE_TYPE_SELECT, 17 }; 18 19 class CScope{ 20 int level; 21 int StartAddress; 22 SCOPE_TYPE TypeOfStatement; 23 24 DWORD *pBreakSchedule; 25 int nBreakSchedule; 26 27 public: 28 CScope( int level, int addr, SCOPE_TYPE TypeOfStatement ); 29 ~CScope(); 30 31 int GetStartAddress(); 32 SCOPE_TYPE GetTypeOfStatement(); 33 34 void Break(); 35 void RunScheduleOfBreak(); 36 }; 37 3 38 class CLexicalScopes{ 39 CScope **ppScopes; 4 40 int level; 5 int StartAddresses[1024]; 41 42 CScope *SearchScope( SCOPE_TYPE TypeOfStatement ); 43 6 44 public: 7 45 CLexicalScopes(); 8 46 ~CLexicalScopes(); 9 47 48 //初期化(関数コンパイルの開始時に呼び出される) 10 49 void Init(int addr); 11 50 12 void LevelUp(int addr); 13 void LevelDown(void); 51 // スコープを開始 52 void Start( int addr, SCOPE_TYPE TypeOfStatement ); 53 54 //スコープを終了 55 void End(); 56 57 //スコープ抜け出しステートメント 58 void Break(); 59 void ExitFor(); 60 void ExitWhile(); 61 void ExitDo(); 14 62 15 63 int GetNowLevel(void); 64 void SetNowLevel( int level ); 16 65 int GetStartAddress(void); 66 67 //スコープ終了時のデストラクタ呼び出し 68 void CallDestructorsOfScopeEnd(); 69 70 //Returnステートメント用のデストラクタ呼び出し 71 void CallDestructorsOfReturn( int BaseLevel = 0 ); 17 72 18 73 private:
Note:
See TracChangeset
for help on using the changeset viewer.