#include "stdafx.h" #include #include #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; } } const std::string &FormatEscapeSequenceStringToDefaultString( const std::string &source ) { int maxLength = (int)source.size(); char *temporary = (char *)malloc( source.size() + 8192 ); lstrcpy( temporary, source.c_str() ); for( int i=0; i0 ) { char temp3[255]; wsprintf( temp3, " %s", temp2 ); lstrcpy( temp2, temp3 ); } if( iFree(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