#include "../BasicCompiler_Common/common.h" void KillSpaces(char *str1,char *str2){ int i,i2,i3,IsStr; for(i=0,i2=0,IsStr=0;;i++,i2++){ if((str1[i]==' '||str1[i]=='\t')&&IsStr==0){ i3=i+1; while(str1[i3]==' '||str1[i3]=='\t') i3++; if(i!=0){ if(i==1){ if(IsVariableChar(str1[i-1])&& IsVariableChar(str1[i3])){ //識別子間にある省略すべきでない空白 str2[i2++]=' '; } } else{ if(str1[i-2]!=1&&IsVariableChar(str1[i-1])&& IsVariableChar(str1[i3])){ //識別子間にある省略すべきでない空白 str2[i2++]=' '; } } } i=i3; } if(str1[i]=='\"') IsStr^=1; str2[i2]=str1[i]; if(str1[i]=='\0') break; } } void KillStringSpaces(char *str){ char *s2; extern HANDLE hHeap; s2=(char *)HeapAlloc(hHeap,0,lstrlen(str)+1); lstrcpy(s2,str); KillSpaces(s2,str); HeapDefaultFree(s2); return; } BOOL RemoveStringQuotes(char *str){ int i; if(str[0]!='\"') return 0; for(i=0;;i++){ str[i]=str[i+1]; if(str[i]=='\"') break; } str[i]=0; if(str[i+2]!='\0') return 0; return 1; } void RemoveStringPare(char *str){ int i; i=lstrlen(str); if(str[0]!='('||str[i-1]!=')') return; SlideString(str+1,-1); str[i-2]=0; } void RemoveStringBracket(char *str){ int i; i=lstrlen(str); if(str[0]!='['||str[i-1]!=']') return; SlideString(str+1,-1); str[i-2]=0; } void SetStringQuotes(char *str){ int i; if(str[0]=='\"') return; i=lstrlen(str); SlideString(str,1); str[0]='\"'; str[i+1]='\"'; str[i+2]=0; } int FormatString_EscapeSequence(char *buffer){ int i2,i3,i4; for(i2=0,i3=0;;i2++,i3++){ if(IsDBCSLeadByte(buffer[i3])){ buffer[i2++]=buffer[i3++]; buffer[i2]=buffer[i3]; if(buffer[i3]=='\0') break; continue; } if(buffer[i3]=='\\'){ switch(buffer[i3+1]){ case '\\': buffer[i2]='\\'; i3++; break; case '0': buffer[i2]='\0'; i3++; break; case 'n': buffer[i2]='\n'; i3++; break; case 'q': buffer[i2]='\"'; i3++; break; case 'r': buffer[i2]='\r'; i3++; break; case 't': buffer[i2]='\t'; i3++; break; case 'x': //16進表記 char temporary[8]; temporary[0]=buffer[i3+2]; temporary[1]=buffer[i3+3]; temporary[2]=0; CharUpper(temporary); i4=temporary[0]-0x30; if(i4<0||9"); break; case ESC_MOD: lstrcpy(name,"Mod"); break; case ESC_AND: lstrcpy(name,"And"); break; case ESC_OR: lstrcpy(name,"Or"); break; case ESC_XOR: lstrcpy(name,"Xor"); break; case ESC_NOT: lstrcpy(name,"Not"); break; case ESC_AS: lstrcpy(name,"As"); break; case ESC_THEN: lstrcpy(name,"Then"); break; case ESC_ELSE: lstrcpy(name,"Else"); break; case ESC_IF: lstrcpy(name,"If"); break; case ESC_ELSEIF: lstrcpy(name,"ElseIf"); break; case ESC_ENDIF: lstrcpy(name,"End If"); break; case ESC_DEF: lstrcpy(name,"Def"); break; case ESC_DECLARE: lstrcpy(name,"Declare"); break; case ESC_ABSTRACT: lstrcpy(name,"Abstract"); break; case ESC_VIRTUAL: lstrcpy(name,"Virtual"); break; case ESC_OVERRIDE: lstrcpy(name,"Override"); break; case ESC_SUB: lstrcpy(name,"Sub"); break; case ESC_ENDSUB: lstrcpy(name,"End Sub"); break; case ESC_EXITSUB: lstrcpy(name,"Exit Sub"); break; case ESC_FUNCTION: lstrcpy(name,"Function"); break; case ESC_ENDFUNCTION: lstrcpy(name,"End Function"); break; case ESC_EXITFUNCTION: lstrcpy(name,"Exit Function"); break; case ESC_BYVAL: lstrcpy(name,"ByVal "); break; case ESC_BYREF: lstrcpy(name,"ByRef "); break; case ESC_TYPE: lstrcpy(name,"Type"); break; case ESC_ENDTYPE: lstrcpy(name,"End Type"); break; case ESC_EXITFOR: lstrcpy(name,"Exit For"); break; case ESC_EXITWHILE: lstrcpy(name,"Exit While"); break; case ESC_EXITDO: lstrcpy(name,"Exit Do"); break; case ESC_SELECTCASE: lstrcpy(name,"Select Case"); break; case ESC_CASE: lstrcpy(name,"Case"); break; case ESC_CASEELSE: lstrcpy(name,"Case Else"); break; case ESC_ENDSELECT: lstrcpy(name,"End Select"); break; case ESC_CONST: lstrcpy(name,"Const"); break; case ESC_TYPEDEF: lstrcpy(name,"TypeDef"); break; case ESC_WITH: lstrcpy(name,"With"); break; case ESC_ENDWITH: lstrcpy(name,"End With"); break; case ESC_CDECL: lstrcpy(name,"cdecl"); break; case ESC_MACRO: lstrcpy(name,"Macro"); break; case ESC_ENDMACRO: lstrcpy(name,"End Macro"); break; case ESC_EXITMACRO: lstrcpy(name,"Exit Macro"); break; case ESC_EXPORT: lstrcpy(name,"Export"); break; case ESC_CONTINUE: lstrcpy(name,"Continue"); break; case ESC_CLASS: lstrcpy(name,"Class"); break; case ESC_ENDCLASS: lstrcpy(name,"End Class"); break; case ESC_INTERFACE: lstrcpy(name,"Interface"); break; case ESC_ENDINTERFACE: lstrcpy(name,"End Interface"); break; case ESC_ENUM: lstrcpy(name,"Enum"); break; case ESC_ENDENUM: lstrcpy(name,"End Enum"); break; } } void GetCalcName(int idCalc,char *name){ switch(idCalc){ case CALC_XOR: lstrcpy(name,"xor"); break; case CALC_OR: lstrcpy(name,"or"); break; case CALC_AND: lstrcpy(name,"and"); break; case CALC_NOT: lstrcpy(name,"Not"); break; case CALC_PE: lstrcpy(name,"<="); break; case CALC_QE: lstrcpy(name,">="); break; case CALC_NOTEQUAL: lstrcpy(name,"<>"); break; case CALC_SUBSITUATION: case CALC_EQUAL: lstrcpy(name,"="); break; case CALC_P: lstrcpy(name,"<"); break; case CALC_Q: lstrcpy(name,">"); break; case CALC_SHL: lstrcpy(name,"<<"); break; case CALC_SHR: lstrcpy(name,">>"); break; case CALC_ADDITION: lstrcpy(name,"+"); break; case CALC_SUBTRACTION: lstrcpy(name,"-"); break; case CALC_MOD: lstrcpy(name,"mod"); break; case CALC_PRODUCT: lstrcpy(name,"*"); break; case CALC_QUOTIENT: lstrcpy(name,"/"); break; case CALC_INTQUOTIENT: lstrcpy(name,"\\"); break; case CALC_AS: lstrcpy(name,"As"); break; case CALC_MINUSMARK: lstrcpy(name,"-"); break; case CALC_POWER: lstrcpy(name,"^"); break; case CALC_ARRAY_GET: lstrcpy(name,"[]"); break; case CALC_ARRAY_SET: lstrcpy(name,"[]="); break; } } BOOL IsFile(char *path){ WIN32_FIND_DATA wfd; HANDLE hFind; hFind=FindFirstFile(path,&wfd); if(hFind==INVALID_HANDLE_VALUE){ return 0; } FindClose(hFind); return 1; } BOOL GetFolder(HWND hWnd,char *folder,char *OpenFolderTitle){ BROWSEINFO BrowseInfo; LPITEMIDLIST pidlBrowse; LPMALLOC g_pMalloc; char temporary[MAX_PATH]; BrowseInfo.hwndOwner=hWnd; BrowseInfo.pszDisplayName=temporary; BrowseInfo.pidlRoot=NULL; BrowseInfo.lpszTitle=OpenFolderTitle; BrowseInfo.ulFlags=BIF_RETURNONLYFSDIRS; BrowseInfo.lpfn=NULL; BrowseInfo.lParam=(LPARAM)0; BrowseInfo.iImage=0; pidlBrowse=SHBrowseForFolder(&BrowseInfo); if(pidlBrowse){ if(SHGetMalloc(&g_pMalloc)!=0) return 0; SHGetPathFromIDList(pidlBrowse,folder); g_pMalloc->Free(pidlBrowse); g_pMalloc->Release(); return 1; } return 0; } void ShortPathToLongPath(const char *ShortPath,char *LongPath){ HANDLE hFind; WIN32_FIND_DATA wfd; int i; char dummy[MAX_PATH]; for(i=0;i