source: dev/BasicCompiler_Common/LexicalScoping.h@ 82

Last change on this file since 82 was 75, checked in by dai_9181, 18 years ago

TYPEINFO→Typeへのリファクタリングを実施。64bitはほぼ完了。32bitが全般的に未完成。

File size: 1.3 KB
RevLine 
[4]1
2
[34]3enum 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
19class CScope{
20 int level;
21 int StartAddress;
22 SCOPE_TYPE TypeOfStatement;
23
24 DWORD *pBreakSchedule;
25 int nBreakSchedule;
26
27public:
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
[4]38class CLexicalScopes{
[34]39 CScope **ppScopes;
[4]40 int level;
[34]41
42 CScope *SearchScope( SCOPE_TYPE TypeOfStatement );
43
[4]44public:
45 CLexicalScopes();
46 ~CLexicalScopes();
47
[34]48 //初期化(関数コンパイルの開始時に呼び出される)
[4]49 void Init(int addr);
50
[34]51 // スコープを開始
52 void Start( int addr, SCOPE_TYPE TypeOfStatement );
[4]53
[34]54 //スコープを終了
55 void End();
56
57 //スコープ抜け出しステートメント
58 void Break();
59 void ExitFor();
60 void ExitWhile();
61 void ExitDo();
62
[4]63 int GetNowLevel(void);
[34]64 void SetNowLevel( int level );
[4]65 int GetStartAddress(void);
66
[34]67 //スコープ終了時のデストラクタ呼び出し
68 void CallDestructorsOfScopeEnd();
69
70 //Returnステートメント用のデストラクタ呼び出し
71 void CallDestructorsOfReturn( int BaseLevel = 0 );
[4]72};
73
74extern CLexicalScopes obj_LexScopes;
Note: See TracBrowser for help on using the repository browser.