Changeset 42 in dev for BasicCompiler_Common


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

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.