#include "common.h" #ifdef _AMD64_ #include "../BasicCompiler64/opcode.h" #else #include "../BasicCompiler/opcode.h" #endif CLexicalScopes obj_LexScopes; CLexicalScopes::CLexicalScopes(){ level=0; } CLexicalScopes::~CLexicalScopes(){ } void CLexicalScopes::Init(int addr){ level=0; StartAddresses[level]=addr; } void CLexicalScopes::LevelUp(int addr){ level++; StartAddresses[level]=addr; } void CLexicalScopes::LevelDown(void){ //デストラクタを呼ぶ CallDestrouctorsOfScope(); //スコープレベルを下げる level--; if(level<0){ SetError(300,NULL,cp); return; } extern BOOL bCompilingGlobal; VARIABLE *pVar; int num; if(bCompilingGlobal){ //グローバル領域をコンパイルしているとき extern VARIABLE *GlobalVar; extern int MaxGlobalVarNum; pVar=GlobalVar; num=MaxGlobalVarNum; } else{ //ローカル領域をコンパイルしているとき extern VARIABLE *LocalVar; extern int MaxLocalVarNum; pVar=LocalVar; num=MaxLocalVarNum; } for(int i=0;i