Ignore:
Timestamp:
Feb 12, 2007, 2:09:55 PM (18 years ago)
Author:
dai_9181
Message:

DeclareのLib、AliasにConst定義された文字列定数を指定できるようにした。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler_Common/Intermediate_Step1.cpp

    r4 r54  
    414414    char *temporary,temp2[VN_SIZE];
    415415
    416     temporary=(char *)GlobalAlloc(GMEM_FIXED,lstrlen(buffer)*2);
     416    temporary=(char *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,lstrlen(buffer)*2);
    417417    for(i=0,i2=0,IsStr=0;;i++,i2++){
    418418        if(buffer[i]=='\"') IsStr^=1;
     
    594594                    if(lstrcmpi(temporary+i3,"Declare")==0){
    595595                        i2=i3;
     596                        int i9=i2;
    596597                        temporary[i2]=1;
    597598                        temporary[++i2]=ESC_DECLARE;
    598599                        i++;
    599600                        while(buffer[i]==' '||buffer[i]=='\t') i++;
     601
     602                        // Sub/Function
    600603                        for(i4=0;;i++,i4++){
    601604                            if(!IsVariableChar(buffer[i])){
     
    608611                        else if(lstrcmpi(temp2,"Function")==0) temporary[++i2]=ESC_FUNCTION;
    609612                        while(buffer[i]==' '||buffer[i]=='\t') i++;
     613
     614                        // 関数名
    610615                        for(i2++;;i++,i2++){
    611616                            if(!IsVariableChar(buffer[i])){
     
    616621                        }
    617622                        while(buffer[i]==' '||buffer[i]=='\t') i++;
     623
    618624                        for(i4=0;;i++,i4++){
    619625                            if(!IsVariableChar(buffer[i])){
     
    638644                        if(lstrcmpi(temp2,"Lib")==0) temporary[++i2]=',';
    639645                        while(buffer[i]==' '||buffer[i]=='\t') i++;
     646
    640647                        if(buffer[i]=='\"'){
    641648                            temporary[++i2]=buffer[i];
     
    649656                            }
    650657                        }
     658                        else{
     659                            for(i2++;;i++,i2++){
     660                                if(!IsVariableChar(buffer[i])){
     661                                    i2--;
     662                                    break;
     663                                }
     664                                temporary[i2]=buffer[i];
     665                            }
     666                        }
    651667                        while(buffer[i]==' '||buffer[i]=='\t') i++;
    652                         for(i4=0;;i++,i4++){
    653                             if(!IsVariableChar(buffer[i])){
    654                                 temp2[i4]=0;
    655                                 break;
     668
     669                        temporary[++i2]=',';
     670
     671                        if( memicmp( buffer + i, "Alias", 5 ) ==0 ){
     672                            i+=5;
     673                            for(i++,i2++;;i++,i2++){
     674                                temporary[i2]=buffer[i];
     675                                if(buffer[i]=='('){
     676                                    i2--;
     677                                    break;
     678                                }
     679                                if(buffer[i]=='\0') break;
    656680                            }
    657                             temp2[i4]=buffer[i];
    658                         }
    659                         if(lstrcmpi(temp2,"Alias")==0)
    660                             temporary[++i2]=',';
     681                        }
     682
     683                        temporary[++i2]=',';
     684
    661685                        i--;
    662686                    }
     
    942966    }
    943967    lstrcpy(buffer,temporary);
    944     GlobalFree(temporary);
     968    HeapDefaultFree(temporary);
    945969}
    946970void DefCommandFormat(char *buffer){
Note: See TracChangeset for help on using the changeset viewer.