Changeset 42 in dev


Ignore:
Timestamp:
Jan 29, 2007, 2:56:22 AM (13 years ago)
Author:
dai_9181
Message:

EnumメンバにOpenやPrintを指定できないバグを修正。
DLLコンパイル時に静的メンバが認識されないバグを修正。

Files:
5 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler32/Compile_ProcOp.cpp

    r40 r42  
    4343        //GC用の変数を定義
    4444        InitGCVariables();
     45
     46        //クラスに属する静的メンバを定義
     47        CMember::InitStaticMember();
    4548
    4649        GetGlobalDataForDll();
  • BasicCompiler32/MakePeHdr.cpp

    r15 r42  
    311311    obp=0;
    312312
     313    //レキシカルスコープ情報を初期化
     314    obj_LexScopes.Init(obp);
     315
    313316
    314317
     
    348351        //未完成
    349352        //OpBuffer[obp++]=(char)0xCC;
    350 
    351         //レキシカルスコープ情報を初期化
    352         obj_LexScopes.Init(obp);
    353353
    354354        //push ebp
  • BasicCompiler64/Compile_ProcOp.cpp

    r40 r42  
    4444        //GC用の変数を定義
    4545        InitGCVariables();
     46
     47        //クラスに属する静的メンバを定義
     48        CMember::InitStaticMember();
    4649
    4750        GetGlobalDataForDll();
  • BasicCompiler64/MakePeHdr.cpp

    r15 r42  
    274274    pobj_BlockReg=new CBlockReg;
    275275
     276    //レキシカルスコープ情報を初期化
     277    obj_LexScopes.Init(obp);
     278
    276279
    277280
     
    314317        //未完成
    315318        //OpBuffer[obp++]=(char)0xCC;
    316 
    317         //レキシカルスコープ情報を初期化
    318         obj_LexScopes.Init(obp);
    319319
    320320        //sub rsp,スタックフレームサイズ
  • BasicCompiler_Common/Intermediate_Step2.cpp

    r40 r42  
    365365    char com[8192],pam[8192];
    366366
     367    static int nCountOfNonGlobalScope = 0;
     368
    367369    if(Command[0]==1){
    368370        switch(Command[1]){
     
    408410                KillStringSpaces(Command+2);
    409411                break;
     412
    410413            case ESC_ENUM:
     414                nCountOfNonGlobalScope++;
     415                KillStringSpaces(Command+2);
     416                break;
     417
     418            case ESC_ENDENUM:
     419                nCountOfNonGlobalScope--;
     420                break;
     421
    411422            case ESC_INHERITS:
    412423            case ESC_VIRTUAL:
     
    441452    //マクロによるコマンド
    442453    i2=1;
    443     if(lstrcmpi(com,"Open")==0) ComOpen(Command+i,pam,NowLine);
    444     else if(lstrcmpi(com,"Close")==0) ComClose(Command+i,pam);
    445     else if(lstrcmpi(com,"Field")==0||
    446         lstrcmpi(com,"Get")==0||
    447         lstrcmpi(com,"Put")==0) ComField(Command+i,pam);
    448     else if(lstrcmpi(com,"Line")==0) ComLine(Command+i,pam,NowLine);
    449     else if(lstrcmpi(com,"Circle")==0) ComCircle(Command+i,pam,NowLine);
    450     else if(lstrcmpi(com,"PSet")==0) ComPSet(Command+i,pam,NowLine);
    451     else if(lstrcmpi(com,"Paint")==0) ComPaint(Command+i,pam,NowLine);
    452 
    453     else if(
    454         lstrcmpi(com,"EXEC")==0||
    455         lstrcmpi(com,"INPUT")==0||
    456         lstrcmpi(com,"PRINT")==0||
    457         lstrcmpi(com,"RANDOMIZE")==0||
    458         ( lstrcmpi(com,"WRITE")==0 && isPare == false )||
    459         lstrcmpi(com,"MSGBOX")==0||
    460         lstrcmpi(com,"WINDOW")==0||
    461         lstrcmpi(com,"DELWND")==0||
    462         lstrcmpi(com,"INSMENU")==0||
    463         lstrcmpi(com,"CHDIR")==0||
    464         lstrcmpi(com,"MKDIR")==0||
    465         lstrcmpi(com,"KILL")==0||
    466         lstrcmpi(com,"CLS")==0||
    467         lstrcmpi(com,"COLOR")==0||
    468         lstrcmpi(com,"LOCATE")==0
    469         ){
    470         KillSpaces(Command+i,pam);
    471 
    472         //大文字に変換
    473         CharUpper(com);
    474 
    475         sprintf(Command,"%s(%s)",com,pam);
    476         return;
    477     }
    478 
     454    if( nCountOfNonGlobalScope == 0 ){
     455        //グローバル
     456        if(lstrcmpi(com,"Open")==0) ComOpen(Command+i,pam,NowLine);
     457        else if(lstrcmpi(com,"Close")==0) ComClose(Command+i,pam);
     458        else if(lstrcmpi(com,"Field")==0||
     459            lstrcmpi(com,"Get")==0||
     460            lstrcmpi(com,"Put")==0) ComField(Command+i,pam);
     461        else if(lstrcmpi(com,"Line")==0) ComLine(Command+i,pam,NowLine);
     462        else if(lstrcmpi(com,"Circle")==0) ComCircle(Command+i,pam,NowLine);
     463        else if(lstrcmpi(com,"PSet")==0) ComPSet(Command+i,pam,NowLine);
     464        else if(lstrcmpi(com,"Paint")==0) ComPaint(Command+i,pam,NowLine);
     465
     466        else if(
     467            lstrcmpi(com,"EXEC")==0||
     468            lstrcmpi(com,"INPUT")==0||
     469            lstrcmpi(com,"PRINT")==0||
     470            lstrcmpi(com,"RANDOMIZE")==0||
     471            ( lstrcmpi(com,"WRITE")==0 && isPare == false )||
     472            lstrcmpi(com,"MSGBOX")==0||
     473            lstrcmpi(com,"WINDOW")==0||
     474            lstrcmpi(com,"DELWND")==0||
     475            lstrcmpi(com,"INSMENU")==0||
     476            lstrcmpi(com,"CHDIR")==0||
     477            lstrcmpi(com,"MKDIR")==0||
     478            lstrcmpi(com,"KILL")==0||
     479            lstrcmpi(com,"CLS")==0||
     480            lstrcmpi(com,"COLOR")==0||
     481            lstrcmpi(com,"LOCATE")==0
     482            ){
     483            KillSpaces(Command+i,pam);
     484
     485            //大文字に変換
     486            CharUpper(com);
     487
     488            sprintf(Command,"%s(%s)",com,pam);
     489            return;
     490        }
     491
     492        else i2=0;
     493    }
    479494    else i2=0;
    480495    if(i2){
Note: See TracChangeset for help on using the changeset viewer.