Changeset 40 in dev for BasicCompiler_Common
- Timestamp:
- Jan 28, 2007, 3:48:22 AM (18 years ago)
- Location:
- BasicCompiler_Common
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler_Common/BasicFixed.h
r36 r40 54 54 #define NATURAL_TYPE(t) ((t)&MASK_NATURAL) 55 55 #define MAKE_PTR_TYPE(t,p) ((t)|((p)<<8)) 56 #define PTR_LEVEL_UP(t) MAKE_PTR_TYPE(NATURAL_TYPE(t),PTR_LEVEL(t)+1) 56 57 57 58 #define DEF_PTR_BYTE MAKE_PTR_TYPE(DEF_BYTE,1) … … 168 169 #define ESC_ENDTRY 'm' //End Try 169 170 //EXEファイル用制御エスケープシーケンス 170 #define ESC_USING ' n' //Print命令語のUsing171 #define ESC_FOR ' o' //Open命令語のFor172 #define ESC_LINENUM ' p' //行番号を示す171 #define ESC_USING 'o' //Print命令語のUsing 172 #define ESC_FOR 'p' //Open命令語のFor 173 #define ESC_LINENUM 'q' //行番号を示す 173 174 174 175 //オブジェクト指向エスケープシーケンス -
BasicCompiler_Common/Class.cpp
r31 r40 18 18 19 19 20 CMember::CMember( CClass *pobj_c, DWORD access, bool isConst, char *buffer, int NowLine ){20 CMember::CMember( CClass *pobj_c, DWORD access, bool isConst, bool isRef, char *buffer, int NowLine ){ 21 21 extern int cp; 22 22 … … 25 25 char init_buf[VN_SIZE]; 26 26 char constract_parameter[VN_SIZE]; 27 GetDimentionFormat(buffer, VarName,SubScripts,&TypeInfo,init_buf,constract_parameter);27 GetDimentionFormat(buffer,isRef,VarName,SubScripts,&TypeInfo,init_buf,constract_parameter); 28 28 29 29 //重複チェック … … 49 49 this->isConst = isConst; 50 50 51 //参照型かどうか 52 this->isRef = isRef; 53 51 54 //初期データ 52 55 InitBuf=(char *)HeapAlloc(hHeap,0,lstrlen(init_buf)+1); … … 70 73 //定数扱いかどうか 71 74 isConst = pobj->isConst; 75 76 //参照型かどうか 77 isRef = pobj->isRef; 72 78 73 79 //SubScripts … … 91 97 bool CMember::IsConst(){ 92 98 return isConst; 99 } 100 bool CMember::IsRef(){ 101 return isRef; 102 } 103 104 int CMember::GetSize(){ 105 if( IsRef() ){ 106 // 参照型 107 return PTR_SIZE; 108 } 109 110 //メンバサイズを取得 111 return GetTypeSize(TypeInfo.type,TypeInfo.u.lpIndex); 93 112 } 94 113 … … 264 283 pobj_InheritsClass = pInheritsClass; 265 284 } 266 void CClass::AddMember( DWORD dwAccess, bool isConst, char *buffer ){285 void CClass::AddMember( DWORD dwAccess, bool isConst, bool isRef, char *buffer ){ 267 286 ppobj_Member = (CMember **)HeapReAlloc( hHeap, 0, ppobj_Member, ( iMemberNum + 1 ) * sizeof(CMember *) ); 268 ppobj_Member[iMemberNum] = new CMember( this, dwAccess, isConst, buffer );287 ppobj_Member[iMemberNum] = new CMember( this, dwAccess, isConst, isRef, buffer ); 269 288 iMemberNum++; 270 289 } 271 void CClass::AddStaticMember( DWORD dwAccess, bool isConst, char *buffer, int NowLine ){290 void CClass::AddStaticMember( DWORD dwAccess, bool isConst, bool isRef, char *buffer, int NowLine ){ 272 291 ppobj_StaticMember=(CMember **)HeapReAlloc(hHeap,0,ppobj_StaticMember,(iStaticMemberNum+1)*sizeof(CMember *)); 273 ppobj_StaticMember[iStaticMemberNum]=new CMember( this, dwAccess, isConst, buffer, NowLine );292 ppobj_StaticMember[iStaticMemberNum]=new CMember( this, dwAccess, isConst, isRef, buffer, NowLine ); 274 293 iStaticMemberNum++; 275 294 } … … 439 458 //コンポジションの関係にあるメンバも検査する 440 459 for(int i=0;i < iMemberNum;i++){ 441 if(ppobj_Member[i]->TypeInfo.type==DEF_OBJECT ){460 if(ppobj_Member[i]->TypeInfo.type==DEF_OBJECT && ppobj_Member[i]->IsRef() == false){ 442 461 if(ppobj_Member[i]->TypeInfo.u.pobj_Class->IsAbstract()) 443 462 return true; … … 809 828 int i,i2,bRet=1; 810 829 for(i=0;i<pobj_c->iMemberNum;i++){ 811 if(pobj_c->ppobj_Member[i]->TypeInfo.type==DEF_OBJECT){ 830 CMember *pMember = pobj_c->ppobj_Member[i]; 831 if(pMember->TypeInfo.type==DEF_OBJECT && pMember->IsRef()==false ){ 812 832 //循環参照でないかをチェック 813 if(pobj_LoopRefCheck->check(p obj_c->ppobj_Member[i]->TypeInfo.u.pobj_Class->name)){833 if(pobj_LoopRefCheck->check(pMember->TypeInfo.u.pobj_Class->name)){ 814 834 extern int cp; 815 SetError(12 3,pobj_c->ppobj_Member[i]->TypeInfo.u.pobj_Class->name,cp);835 SetError(124,pMember->TypeInfo.u.pobj_Class->name,cp); 816 836 return 0; 817 837 } … … 819 839 pobj_LoopRefCheck->add(pobj_c->name); 820 840 821 i2=MemberVar_LoopRefCheck(p obj_c->ppobj_Member[i]->TypeInfo.u.pobj_Class);841 i2=MemberVar_LoopRefCheck(pMember->TypeInfo.u.pobj_Class); 822 842 if(bRet==1) bRet=i2; 823 843 … … 1132 1152 } 1133 1153 1154 //Ref修飾子 1155 bool isRef = false; 1156 if( basbuf[i] == 1 && basbuf[i + 1] == ESC_BYREF ){ 1157 isRef = true; 1158 i += 2; 1159 } 1160 1134 1161 if(basbuf[i]==1&&( 1135 1162 basbuf[i+1]==ESC_ABSTRACT||basbuf[i+1]==ESC_VIRTUAL||basbuf[i+1]==ESC_OVERRIDE|| … … 1209 1236 //静的メンバを追加 1210 1237 cp=i; //エラー用 1211 pobj_c->AddStaticMember( dwAccess, isConst, temporary, i);1238 pobj_c->AddStaticMember( dwAccess, isConst, isRef, temporary, i); 1212 1239 } 1213 1240 else{ 1214 1241 //メンバを追加 1215 1242 cp=i; //エラー用 1216 pobj_c->AddMember( dwAccess, isConst, temporary );1243 pobj_c->AddMember( dwAccess, isConst, isRef, temporary ); 1217 1244 1218 1245 … … 1237 1264 } 1238 1265 else{ 1266 // 文法エラーチェック 1267 if( isRef ){ 1268 SetError(1,NULL,cp); 1269 } 1270 1239 1271 //メソッドを追加 1240 1272 cp=i; //エラー用 -
BasicCompiler_Common/Class.h
r29 r40 20 20 class CMember{ 21 21 bool isConst; 22 bool isRef; 22 23 public: 23 24 char *name; … … 33 34 34 35 35 CMember( CClass *pobj_c, DWORD access, bool idConst, char *buffer, int NowLine=-1 );36 CMember( CClass *pobj_c, DWORD access, bool idConst, bool isRef, char *buffer, int NowLine=-1 ); 36 37 CMember( CMember *pobj ); 37 38 CMember(); … … 39 40 40 41 bool IsConst(); 42 bool IsRef(); 43 int GetSize(); 41 44 42 45 … … 98 101 void Inherits( CClass *pInheritsClass ); 99 102 100 void AddMember( DWORD dwAccess, bool idConst, char *buffer );101 void AddStaticMember( DWORD dwAccess, bool isConst, char *buffer, int NowLine );103 void AddMember( DWORD dwAccess, bool idConst, bool isRef, char *buffer ); 104 void AddStaticMember( DWORD dwAccess, bool isConst, bool isRef, char *buffer, int NowLine ); 102 105 void AddMethod( SUBINFO *psi,DWORD dwAccess, bool isConst, BOOL bAbstract, BOOL bVirtual ); 103 106 void AddStaticMethod(SUBINFO *psi,DWORD dwAccess); -
BasicCompiler_Common/Intermediate_Step2.cpp
r37 r40 375 375 break; 376 376 case ESC_CONST: 377 case ESC_BYREF: 377 378 KillStringSpaces(Command+2); 378 379 break; -
BasicCompiler_Common/Object.cpp
r34 r40 17 17 18 18 for(i=0;i<pobj_c->iMemberNum;i++){ 19 if(pobj_c->ppobj_Member[i]->TypeInfo.type==DEF_OBJECT){ 19 CMember *pMember = pobj_c->ppobj_Member[i]; 20 21 if(pMember->TypeInfo.type==DEF_OBJECT && pMember->IsRef() == false){ 20 22 //メンバクラスのアラインメントを取得 21 member_size=GetAlignment(p obj_c->ppobj_Member[i]->TypeInfo.u.pobj_Class);23 member_size=GetAlignment(pMember->TypeInfo.u.pobj_Class); 22 24 } 23 25 else{ 24 26 //メンバサイズを取得 25 member_size =GetTypeSize(pobj_c->ppobj_Member[i]->TypeInfo.type,pobj_c->ppobj_Member[i]->TypeInfo.u.lpIndex);27 member_size = pMember->GetSize(); 26 28 } 27 29 … … 49 51 int iMaxAlign=0; 50 52 for(i=0;i<pobj_c->iMemberNum;i++){ 51 //メンバ変数の型サイズを取得52 i2=GetTypeSize(pobj_c->ppobj_Member[i]->TypeInfo.type,pobj_c->ppobj_Member[i]->TypeInfo.u.lpIndex); 53 i f(i2==-1) return -1;53 CMember *pMember = pobj_c->ppobj_Member[i]; 54 55 i2 = pMember->GetSize(); 54 56 55 57 //アラインメントを算出 56 58 int member_size; 57 if(p obj_c->ppobj_Member[i]->TypeInfo.type==DEF_OBJECT){59 if(pMember->TypeInfo.type==DEF_OBJECT){ 58 60 //メンバクラスのアラインメントを取得 59 member_size=GetAlignment(p obj_c->ppobj_Member[i]->TypeInfo.u.pobj_Class);61 member_size=GetAlignment(pMember->TypeInfo.u.pobj_Class); 60 62 } 61 63 else{ … … 83 85 if(pMemberName){ 84 86 //メンバ指定がある場合は、オフセットを返す 85 if(lstrcmp(p obj_c->ppobj_Member[i]->name,pMemberName)==0){87 if(lstrcmp(pMember->name,pMemberName)==0){ 86 88 if(pMemberNum) *pMemberNum=i; 87 89 return offset; … … 90 92 91 93 //配列を考慮したメンバサイズを取得 92 member_size=i2 * JumpSubScripts(p obj_c->ppobj_Member[i]->SubScripts);94 member_size=i2 * JumpSubScripts(pMember->SubScripts); 93 95 94 96 //メンバサイズを加算 -
BasicCompiler_Common/Subroutine.cpp
r38 r40 687 687 /////////////////// 688 688 689 psi->isReturnRef = false; 690 689 691 if(pobj_c){ 690 692 if(lstrcmp(psi->name,pobj_c->name)==0|| … … 701 703 for(;i2>0;i2--){ 702 704 if(buffer[i2]==')') break; 705 703 706 if(buffer[i2]==1&&buffer[i2+1]==ESC_AS){ 707 if( buffer[i2-2] == 1 && buffer[i2-1] == ESC_BYREF ){ 708 //参照型 709 psi->isReturnRef = true; 710 } 711 704 712 i2+=2; 705 713 i3=0; … … 1033 1041 } 1034 1042 1035 if(psi->ReturnType==DEF_OBJECT ){1043 if(psi->ReturnType==DEF_OBJECT && psi->isReturnRef == false){ 1036 1044 i = psi->RealParmNum; 1037 1045 -
BasicCompiler_Common/Variable.cpp
r36 r40 629 629 return type; 630 630 } 631 int GetVarType(c har *NameBuffer,LONG_PTR *plpIndex,BOOL bError){631 int GetVarType(const char *NameBuffer,LONG_PTR *plpIndex,BOOL bError){ 632 632 extern BOOL bCompilingGlobal; 633 633 int i; … … 840 840 } 841 841 842 BOOL GetVarOffsetReadOnly(c har *NameBuffer,int *pType,RELATIVE_VAR *pRelativeVar,LONG_PTR *plpIndex,int *pss){842 BOOL GetVarOffsetReadOnly(const char *NameBuffer,int *pType,RELATIVE_VAR *pRelativeVar,LONG_PTR *plpIndex,int *pss){ 843 843 //読み取り専用で変数へアクセス 844 844 return GetVarOffset( … … 851 851 pss); 852 852 } 853 BOOL GetVarOffsetReadWrite(c har *NameBuffer,int *pType,RELATIVE_VAR *pRelativeVar,LONG_PTR *plpIndex,int *pss){853 BOOL GetVarOffsetReadWrite(const char *NameBuffer,int *pType,RELATIVE_VAR *pRelativeVar,LONG_PTR *plpIndex,int *pss){ 854 854 //読み書き両用で変数へアクセス 855 855 return GetVarOffset( … … 865 865 866 866 867 BOOL GetDimentionFormat(c har *buffer,char *VarName,int *SubScripts,TYPEINFO *pTypeInfo,char *InitBuf,char *ConstractParameter){867 BOOL GetDimentionFormat(const char *buffer, const bool isRef, char *VarName,int *SubScripts,TYPEINFO *pTypeInfo,char *InitBuf,char *ConstractParameter){ 868 868 int i,i2,i3,IsStr; 869 869 char variable[VN_SIZE],temporary[8192]; … … 998 998 else{ 999 999 //初期値の型を判別して自動的に型情報を付加する 1000 1001 1000 TYPEINFO BaseType = GetStringTypeInfo(); 1002 1001 int result = NumOpe_GetType( InitBuf, &BaseType, &pTypeInfo->u.lpIndex ); … … 1015 1014 } 1016 1015 1017 if( pTypeInfo->type == DEF_OBJECT && InitBuf[0] != '\0' && InitBuf[0] != '[' ){1016 if( pTypeInfo->type == DEF_OBJECT && InitBuf[0] != '\0' && InitBuf[0] != '[' && isRef == false ){ 1018 1017 lstrcpy( ConstractParameter, InitBuf ); 1019 1018 InitBuf[0] = 0; -
BasicCompiler_Common/Variable.h
r10 r40 22 22 void GetArrange(char *variable,char *variAnswer,int *SubScripts); 23 23 int GetTypeFromSimpleName(char *variable); 24 int GetVarType(c har *NameBuffer,LONG_PTR *plpIndex,BOOL bError);25 BOOL GetVarOffsetReadOnly(c har *NameBuffer,int *pType,RELATIVE_VAR *pRelativeVar,LONG_PTR *plpIndex,int *pss=0);26 BOOL GetVarOffsetReadWrite(c har *NameBuffer,int *pType,RELATIVE_VAR *pRelativeVar,LONG_PTR *plpIndex,int *pss=0);27 BOOL GetDimentionFormat(c har *buffer,char *VarName,int *SubScripts,TYPEINFO *pTypeInfo,char *InitBuf,char *ConstractParameter);24 int GetVarType(const char *NameBuffer,LONG_PTR *plpIndex,BOOL bError); 25 BOOL GetVarOffsetReadOnly(const char *NameBuffer,int *pType,RELATIVE_VAR *pRelativeVar,LONG_PTR *plpIndex,int *pss=0); 26 BOOL GetVarOffsetReadWrite(const char *NameBuffer,int *pType,RELATIVE_VAR *pRelativeVar,LONG_PTR *plpIndex,int *pss=0); 27 BOOL GetDimentionFormat(const char *buffer, const bool isRef, char *VarName,int *SubScripts,TYPEINFO *pTypeInfo,char *InitBuf,char *ConstractParameter); 28 28 BOOL GetNowStaticVarFullName(char *VarName,char *FullName); 29 29 void AddGlobalVariable(char *name,int *SubScripts,TYPEINFO *pTypeInfo,int TypeSize,char *InitBuf,char *ConstractParameter,DWORD dwFlag); -
BasicCompiler_Common/common.h
r38 r40 157 157 #define REF_PARAMETER 1 158 158 #define OBJECT_PARAMETER 2 159 #define REF_VARIABLE 4 159 160 struct VARIABLE{ 160 161 char name[255]; … … 243 244 CClass *Return_pobj_c; 244 245 }u; 246 bool isReturnRef; 245 247 246 248 DWORD CompileAddress; … … 574 576 575 577 //error.cpp 576 void SetError(int ErrorNum,c har *KeyWord,int pos);578 void SetError(int ErrorNum,const char *KeyWord,int pos); 577 579 void CompileMessage(char *buffer); 578 580 void CheckDifferentType(int VarType,LONG_PTR lpVarIndex,int CalcType,LONG_PTR lpCalcIndex,char *pszFuncName,int ParmNum); -
BasicCompiler_Common/error.cpp
r34 r40 1 1 #include "../BasicCompiler_Common/common.h" 2 2 3 BOOL GetErrorMsg(int num,c har *KeyWord,char *msg,int pos){3 BOOL GetErrorMsg(int num,const char *KeyWord,char *msg,int pos){ 4 4 extern HANDLE hHeap; 5 5 int i2; 6 6 char temporary[64]; 7 7 8 char tempKeyWord[1024]; 8 9 if(KeyWord){ 10 lstrcpy(tempKeyWord,KeyWord); 9 11 for(i2=0;;i2++){ 10 if( KeyWord[i2]=='\0') break;11 if( KeyWord[i2]==1){12 GetDefaultNameFromES( KeyWord[i2+1],temporary);13 SlideString( KeyWord+i2+2,lstrlen(temporary)-2);14 memcpy( KeyWord+i2,temporary,lstrlen(temporary));12 if(tempKeyWord[i2]=='\0') break; 13 if(tempKeyWord[i2]==1){ 14 GetDefaultNameFromES(tempKeyWord[i2+1],temporary); 15 SlideString(tempKeyWord+i2+2,lstrlen(temporary)-2); 16 memcpy(tempKeyWord+i2,temporary,lstrlen(temporary)); 15 17 } 16 18 } 17 19 } 18 19 if(num==-1||num==-2) lstrcpy(msg,KeyWord); //部分エラー 20 else{ 21 lstrcpy(tempKeyWord,""); 22 } 23 24 if(num==-1||num==-2) lstrcpy(msg,tempKeyWord); //部分エラー 20 25 21 26 if(num==3){ 22 temporary[0]= KeyWord[0];27 temporary[0]=tempKeyWord[0]; 23 28 for(i2=1;;i2++){ 24 if((!IsVariableChar( KeyWord[i2]))||i2>=255){29 if((!IsVariableChar(tempKeyWord[i2]))||i2>=255){ 25 30 temporary[i2]=0; 26 31 break; 27 32 } 28 temporary[i2]= KeyWord[i2];33 temporary[i2]=tempKeyWord[i2]; 29 34 } 30 35 … … 52 57 #if defined(JPN) 53 58 //日本語 54 if(temporary[0]) sprintf(msg,"\"%s\" の使い方が不正です", KeyWord);59 if(temporary[0]) sprintf(msg,"\"%s\" の使い方が不正です",tempKeyWord); 55 60 else lstrcpy(msg,"文法が間違っています"); 56 61 #else 57 62 //英語 58 if(temporary[0]) sprintf(msg,"How to use the \"%s\" is wrong.", KeyWord);63 if(temporary[0]) sprintf(msg,"How to use the \"%s\" is wrong.",tempKeyWord); 59 64 else lstrcpy(msg,"Syntax Error."); 60 65 #endif … … 69 74 //日本語 70 75 //////////////////// 71 if(num==-101) sprintf(msg,"[警告] %sに強制変換されています。データが失われる可能性があります。", KeyWord);72 if(num==-102) sprintf(msg,"[警告] %sに強制変換されています。", KeyWord);73 if(num==-103) sprintf(msg,"[警告] \"%s\" 型が指定されていません。Double型として扱います。", KeyWord);74 if(num==-104) sprintf(msg,"[警告] \"%s\" 戻り値の型が指定されていません。Double型として扱います。", KeyWord);75 if(num==-105) sprintf(msg,"[警告] 一時オブジェクトの解放を行えません。キャスト用オブジェクトを用意してください。", KeyWord);76 if(num==-106) sprintf(msg,"[警告] DLLファイル \"%s\" が見つかりません。", KeyWord);77 if(num==-107) sprintf(msg,"[警告] DLL関数 \"%s\" を参照できません。", KeyWord);76 if(num==-101) sprintf(msg,"[警告] %sに強制変換されています。データが失われる可能性があります。",tempKeyWord); 77 if(num==-102) sprintf(msg,"[警告] %sに強制変換されています。",tempKeyWord); 78 if(num==-103) sprintf(msg,"[警告] \"%s\" 型が指定されていません。Double型として扱います。",tempKeyWord); 79 if(num==-104) sprintf(msg,"[警告] \"%s\" 戻り値の型が指定されていません。Double型として扱います。",tempKeyWord); 80 if(num==-105) sprintf(msg,"[警告] 一時オブジェクトの解放を行えません。キャスト用オブジェクトを用意してください。",tempKeyWord); 81 if(num==-106) sprintf(msg,"[警告] DLLファイル \"%s\" が見つかりません。",tempKeyWord); 82 if(num==-107) sprintf(msg,"[警告] DLL関数 \"%s\" を参照できません。",tempKeyWord); 78 83 #else 79 84 #endif … … 91 96 if(num==2) sprintf(msg,"左のオペランドが、左辺値になっていません"); 92 97 //num==3は予約されています 93 if(num==4) sprintf(msg,"%sの相互関係が一致しません", KeyWord);98 if(num==4) sprintf(msg,"%sの相互関係が一致しません",tempKeyWord); 94 99 if(num==5) sprintf(msg,"ダブルクォートの数が一致しません"); 95 if(num==6) sprintf(msg,"\"%s\" ジャンプ先が不正です", KeyWord);100 if(num==6) sprintf(msg,"\"%s\" ジャンプ先が不正です",tempKeyWord); 96 101 if(num==7) lstrcpy(msg,"DLL名が長すぎます(拡張子を含め、16文字以下にして下さい)"); 97 102 if(num==8) lstrcpy(msg,"コンパイラが認識できない文字コードが含まれています"); 98 103 if(num==9) sprintf(msg,"型が違います"); 99 if(num==10) sprintf(msg,"\"%s\" のパラメータ指定が間違っています", KeyWord);100 if(num==11) sprintf(msg,"\"%s\" 型が違います", KeyWord);101 if(num==12) sprintf(msg,"\"%s\" の使い方が不正です", KeyWord);102 if(num==13) sprintf(msg,"\"%s\" を参照できません", KeyWord);103 if(num==14) sprintf(msg,"\"%s\" 配列指定が不正です", KeyWord);104 if(num==15) sprintf(msg,"\"%s\" はすでに定義されています", KeyWord);105 if(num==16) sprintf(msg,"\"%s\" 配列、またはポインタ以外の変数に添え字が指定されています", KeyWord);104 if(num==10) sprintf(msg,"\"%s\" のパラメータ指定が間違っています",tempKeyWord); 105 if(num==11) sprintf(msg,"\"%s\" 型が違います",tempKeyWord); 106 if(num==12) sprintf(msg,"\"%s\" の使い方が不正です",tempKeyWord); 107 if(num==13) sprintf(msg,"\"%s\" を参照できません",tempKeyWord); 108 if(num==14) sprintf(msg,"\"%s\" 配列指定が不正です",tempKeyWord); 109 if(num==15) sprintf(msg,"\"%s\" はすでに定義されています",tempKeyWord); 110 if(num==16) sprintf(msg,"\"%s\" 配列、またはポインタ以外の変数に添え字が指定されています",tempKeyWord); 106 111 if(num==17) sprintf(msg,"リソース データが不正です"); 107 if(num==18) sprintf(msg,"\"%s\"はポインタ変数型です。文字列演算を指定することはできません", KeyWord);108 if(num==19) sprintf(msg,"\"%s\"は値参照型です。ByVal指定することはできません", KeyWord);112 if(num==18) sprintf(msg,"\"%s\"はポインタ変数型です。文字列演算を指定することはできません",tempKeyWord); 113 if(num==19) sprintf(msg,"\"%s\"は値参照型です。ByVal指定することはできません",tempKeyWord); 109 114 if(num==20) lstrcpy(msg,"全角スペースが含まれています(全角スペースはコンパイラが認識できないので、半角スペースまたはタブ文字にしてください)"); 110 115 if(num==21) sprintf(msg,"If制御のブロック指定が不正です"); 111 if(num==22) sprintf(msg,"\"%s\" に対する \"End %s\" が見つかりません", KeyWord,KeyWord);112 if(num==23) sprintf(msg,"リソース ファイル \"%s\" の読み込みに失敗", KeyWord);116 if(num==22) sprintf(msg,"\"%s\" に対する \"End %s\" が見つかりません",tempKeyWord,tempKeyWord); 117 if(num==23) sprintf(msg,"リソース ファイル \"%s\" の読み込みに失敗",tempKeyWord); 113 118 if(num==24) lstrcpy(msg,"Export指定の関数のパラメータには実体オブジェクトを利用することはできません(BytePtr型などを利用して下さい)"); 114 if(num==27) sprintf(msg,"\"%s\" は定義されていません", KeyWord);115 if(num==28) sprintf(msg,"構造体パラメータはポインタ参照にしてください(%s)", KeyWord);119 if(num==27) sprintf(msg,"\"%s\" は定義されていません",tempKeyWord); 120 if(num==28) sprintf(msg,"構造体パラメータはポインタ参照にしてください(%s)",tempKeyWord); 116 121 if(num==29) sprintf(msg,"配列ポインタを要素と同時に引渡すときは、ポインタ参照(ByRef)にしてください"); 117 122 //num==30は予約されています 118 if(num==31) sprintf(msg,"\"%s\" は構造体です(メンバの参照はピリオド \".\" で区切ってください)", KeyWord);119 if(num==32) sprintf(msg,"\"%s\" は構造体ポインタです(メンバの参照は \"->\" で区切ってください)", KeyWord);123 if(num==31) sprintf(msg,"\"%s\" は構造体です(メンバの参照はピリオド \".\" で区切ってください)",tempKeyWord); 124 if(num==32) sprintf(msg,"\"%s\" は構造体ポインタです(メンバの参照は \"->\" で区切ってください)",tempKeyWord); 120 125 if(num==33) sprintf(msg,"定数式にリテラル値、または定数以外のものが含まれています"); 121 126 if(num==34) sprintf(msg,"定数はモジュールレベルで宣言して下さい"); 122 if(num==38) sprintf(msg,"\"%s\" 戻り値が存在しないプロシージャです", KeyWord);123 if(num==39) sprintf(msg,"\"%s\" はオブジェクトポインタではありません(\"->\" 参照はできません)", KeyWord);127 if(num==38) sprintf(msg,"\"%s\" 戻り値が存在しないプロシージャです",tempKeyWord); 128 if(num==39) sprintf(msg,"\"%s\" はオブジェクトポインタではありません(\"->\" 参照はできません)",tempKeyWord); 124 129 if(num==40) lstrcpy(msg,"関数の戻り値にオブジェクトを指定することはできません"); 125 130 if(num==41) lstrcpy(msg,"初期データが不正です"); 126 131 if(num==42) lstrcpy(msg,"閉じカッコ \")\" の後に不正な文字が含まれています"); 127 132 if(num==43) lstrcpy(msg,"ダブルクォートの後に不正な文字が含まれています"); 128 if(num==45) sprintf(msg,"実数に対して \"%s\" 演算子は利用できません", KeyWord);133 if(num==45) sprintf(msg,"実数に対して \"%s\" 演算子は利用できません",tempKeyWord); 129 134 if(num==46) lstrcpy(msg,"配列の添え字に整数以外の値が与えられています"); 130 135 if(num==47) lstrcpy(msg,"As演算子の右辺値に型名以外の識別子が指定されています"); 131 if(num==48) sprintf(msg,"%s演算子に対して型名が指定されています", KeyWord);136 if(num==48) sprintf(msg,"%s演算子に対して型名が指定されています",tempKeyWord); 132 137 if(num==49) lstrcpy(msg,"添え字に整数以外の型が指定されています"); 133 if(num==50) sprintf(msg,"%sに変換できません", KeyWord);138 if(num==50) sprintf(msg,"%sに変換できません",tempKeyWord); 134 139 if(num==51) lstrcpy(msg,"オブジェクト、構造体のアラインメント値は1,2,4,8,16のいずれかでなければなりません"); 135 if(num==52) sprintf(msg,"\"%s\" オーバーロードを解決できません", KeyWord);136 if(num==53) sprintf(msg,"\"%s\" 出力ファイルの書き込みに失敗しました。実行されている可能性があります", KeyWord);137 if(num==54) sprintf(msg,"対応する%sが存在しません。", KeyWord);138 if(num==55) sprintf(msg,"\"%s\" は対応するForステートメントで利用されるカウンタ変数ではありません。", KeyWord);140 if(num==52) sprintf(msg,"\"%s\" オーバーロードを解決できません",tempKeyWord); 141 if(num==53) sprintf(msg,"\"%s\" 出力ファイルの書き込みに失敗しました。実行されている可能性があります",tempKeyWord); 142 if(num==54) sprintf(msg,"対応する%sが存在しません。",tempKeyWord); 143 if(num==55) sprintf(msg,"\"%s\" は対応するForステートメントで利用されるカウンタ変数ではありません。",tempKeyWord); 139 144 if(num==56) lstrcpy(msg,"ゼロ割りが行われました。"); 140 145 if(num==57) lstrcpy(msg,"8進数のリテラル表記が不正です。"); 141 146 if(num==58) lstrcpy(msg,"16進数のリテラル表記が不正です。"); 142 if(num==59) sprintf(msg,"マニフェスト ファイル \"%s\" の読み込みに失敗。", KeyWord);147 if(num==59) sprintf(msg,"マニフェスト ファイル \"%s\" の読み込みに失敗。",tempKeyWord); 143 148 if(num==60) lstrcpy(msg,"Staticステートメントはグローバル領域では使用できません。"); 144 if(num==61) sprintf(msg,"\"%s\" は定数です。書き込みアクセスはできません。", KeyWord);145 if(num==62) sprintf(msg,"グローバル領域でのReturnは禁止されています。", KeyWord);149 if(num==61) sprintf(msg,"\"%s\" は定数です。書き込みアクセスはできません。",tempKeyWord); 150 if(num==62) sprintf(msg,"グローバル領域でのReturnは禁止されています。",tempKeyWord); 146 151 147 152 148 153 //オブジェクト関連 149 if(num==102) sprintf(msg,"\"%s\" オブジェクトは定義されていません", KeyWord);150 if(num==103) sprintf(msg,"\"%s\" メンバは定義されていません", KeyWord);151 if(num==104) sprintf(msg,"\"%s\" 参照方法が違います", KeyWord);152 if(num==105) sprintf(msg,"\"%s\" 自身のクラスを継承することはできません", KeyWord);153 if(num==106) sprintf(msg,"\"%s\" クラスは定義されていません", KeyWord);154 if(num==107) sprintf(msg,"Privateメンバ \"%s\" にアクセスすることはできません", KeyWord);155 if(num==108) sprintf(msg,"Protectedメンバ \"%s\" にアクセスすることはできません", KeyWord);156 if(num==109) sprintf(msg,"Privateメンバ関数 \"%s\" を呼び出すことはできません", KeyWord);157 if(num==110) sprintf(msg,"Protectedメンバ関数 \"%s\" を呼び出すことはできません", KeyWord);154 if(num==102) sprintf(msg,"\"%s\" オブジェクトは定義されていません",tempKeyWord); 155 if(num==103) sprintf(msg,"\"%s\" メンバは定義されていません",tempKeyWord); 156 if(num==104) sprintf(msg,"\"%s\" 参照方法が違います",tempKeyWord); 157 if(num==105) sprintf(msg,"\"%s\" 自身のクラスを継承することはできません",tempKeyWord); 158 if(num==106) sprintf(msg,"\"%s\" クラスは定義されていません",tempKeyWord); 159 if(num==107) sprintf(msg,"Privateメンバ \"%s\" にアクセスすることはできません",tempKeyWord); 160 if(num==108) sprintf(msg,"Protectedメンバ \"%s\" にアクセスすることはできません",tempKeyWord); 161 if(num==109) sprintf(msg,"Privateメンバ関数 \"%s\" を呼び出すことはできません",tempKeyWord); 162 if(num==110) sprintf(msg,"Protectedメンバ関数 \"%s\" を呼び出すことはできません",tempKeyWord); 158 163 if(num==111) lstrcpy(msg,"InheritsはClass定義内の先頭に記述する必要があります"); 159 if(num==112) sprintf(msg,"\"%s\" はクラス型ではないため、初期パラメータを指定することはできません", KeyWord);160 if(num==113) sprintf(msg,"\"%s\" コンストラクタへ渡すパラメータが不正です", KeyWord);164 if(num==112) sprintf(msg,"\"%s\" はクラス型ではないため、初期パラメータを指定することはできません",tempKeyWord); 165 if(num==113) sprintf(msg,"\"%s\" コンストラクタへ渡すパラメータが不正です",tempKeyWord); 161 166 if(num==114) lstrcpy(msg,"デストラクタはパラメータを持てません"); 162 167 if(num==115) lstrcpy(msg,"コンストラクタ及びデストラクタは戻り値を持てません"); … … 164 169 if(num==117) lstrcpy(msg,"デストラクタの名前が \"~クラス名\" になっていません"); 165 170 if(num==118) lstrcpy(msg,"参照する基底クラスが存在しません"); 166 if(num==119) sprintf(msg,"\"%s\" メンバは基底クラスで定義されていません", KeyWord);171 if(num==119) sprintf(msg,"\"%s\" メンバは基底クラスで定義されていません",tempKeyWord); 167 172 if(num==120) lstrcpy(msg,"デストラクトするオブジェクトの型が不明です"); 168 173 if(num==121) lstrcpy(msg,"New演算子にはクラス以外の型を指定できません"); … … 170 175 if(num==123) lstrcpy(msg,"ループ継承が行われました"); 171 176 if(num==124) lstrcpy(msg,"循環参照が行われました"); 172 if(num==125) sprintf(msg,"\"%s\" は抽象クラスです。インスタンス化することはできません。", KeyWord);177 if(num==125) sprintf(msg,"\"%s\" は抽象クラスです。インスタンス化することはできません。",tempKeyWord); 173 178 if(num==126) lstrcpy(msg,"オペレータのオーバーロードをクラスの外で行うことはできません。"); 174 179 if(num==127) lstrcpy(msg,"Override修飾子の指定が無い状況でオーバーライドを行うことはできません。"); 175 180 if(num==128) lstrcpy(msg,"オーバーライドを行うときはアクセシビリティを同一にしなければなりません。"); 176 if(num==129) sprintf(msg,"静的メンバ \"%s\" は定義されていません。", KeyWord);177 if(num==130) sprintf(msg,"\"%s\" はオブジェクト定数です。書き込みアクセスはできません。", KeyWord);181 if(num==129) sprintf(msg,"静的メンバ \"%s\" は定義されていません。",tempKeyWord); 182 if(num==130) sprintf(msg,"\"%s\" はオブジェクト定数です。書き込みアクセスはできません。",tempKeyWord); 178 183 if(num==131) lstrcpy(msg,"Const定義されたメソッド内でクラスメンバへの書き込みアクセスはできません。"); 179 184 if(num==132) lstrcpy(msg,"明示的なコンストラクタ呼び出しと初期値の指定を同時に行うことはできません。"); 180 185 181 186 //Enum関連 182 if(num==150) sprintf(msg,"\"%s\" 値が定義されていません", KeyWord);183 if(num==151) sprintf(msg,"\"%s\" 列挙リストに登録されていません", KeyWord);187 if(num==150) sprintf(msg,"\"%s\" 値が定義されていません",tempKeyWord); 188 if(num==151) sprintf(msg,"\"%s\" 列挙リストに登録されていません",tempKeyWord); 184 189 185 190 //リンカ 186 if(num==200) sprintf(msg,"\"%s\" 未解決です (リンク エラー)", KeyWord);187 if(num==201) sprintf(msg,"\"%s\" の読み込みに失敗", KeyWord);191 if(num==200) sprintf(msg,"\"%s\" 未解決です (リンク エラー)",tempKeyWord); 192 if(num==201) sprintf(msg,"\"%s\" の読み込みに失敗",tempKeyWord); 188 193 189 194 //原因不明 … … 197 202 if(num==2) sprintf(msg,"Left operand must be l-value."); 198 203 //num==3は予約されています 199 if(num==4) sprintf(msg,"Correlation of %s is wrong.", KeyWord);204 if(num==4) sprintf(msg,"Correlation of %s is wrong.",tempKeyWord); 200 205 if(num==5) sprintf(msg,"Correlation of double quotes is wrong."); 201 if(num==6) sprintf(msg,"\"%s\" Label not found.", KeyWord);206 if(num==6) sprintf(msg,"\"%s\" Label not found.",tempKeyWord); 202 207 if(num==7) lstrcpy(msg,"The DLL name is too long. Must be 16 characters or less."); 203 208 if(num==8) lstrcpy(msg,"The inaccurate characters are contained."); 204 209 if(num==9) sprintf(msg,"Type is wrong."); 205 if(num==10) sprintf(msg,"\"%s\" Rule of parameter is wrong.", KeyWord);206 if(num==11) sprintf(msg,"\"%s\" Type is wrong.", KeyWord);207 if(num==12) sprintf(msg,"\"%s\" Not a valid use.", KeyWord);208 if(num==13) sprintf(msg,"Cannot refer to \"%s\".", KeyWord);209 if(num==14) sprintf(msg,"\"%s\" Array argument(s) out of bound.", KeyWord);210 if(num==15) sprintf(msg,"\"%s\" is already defined.", KeyWord);211 if(num==16) sprintf(msg,"\"%s\" Argument(s) following variable which is not pointer or array.", KeyWord);210 if(num==10) sprintf(msg,"\"%s\" Rule of parameter is wrong.",tempKeyWord); 211 if(num==11) sprintf(msg,"\"%s\" Type is wrong.",tempKeyWord); 212 if(num==12) sprintf(msg,"\"%s\" Not a valid use.",tempKeyWord); 213 if(num==13) sprintf(msg,"Cannot refer to \"%s\".",tempKeyWord); 214 if(num==14) sprintf(msg,"\"%s\" Array argument(s) out of bound.",tempKeyWord); 215 if(num==15) sprintf(msg,"\"%s\" is already defined.",tempKeyWord); 216 if(num==16) sprintf(msg,"\"%s\" Argument(s) following variable which is not pointer or array.",tempKeyWord); 212 217 if(num==17) sprintf(msg,"Invalid resource data."); 213 if(num==18) sprintf(msg,"\"%s\" Invalid operation on a pointer variable.", KeyWord);214 if(num==19) sprintf(msg,"\"%s\" is already to be passed by value. You cannot use \"ByVal\".", KeyWord);218 if(num==18) sprintf(msg,"\"%s\" Invalid operation on a pointer variable.",tempKeyWord); 219 if(num==19) sprintf(msg,"\"%s\" is already to be passed by value. You cannot use \"ByVal\".",tempKeyWord); 215 220 if(num==21) sprintf(msg,"Wrong structure of \"If\" block."); 216 if(num==22) sprintf(msg,"No matching \"End %s\" found for \"%s\".", KeyWord,KeyWord);217 if(num==23) sprintf(msg,"Cannot read the resource file \"%s\".", KeyWord);221 if(num==22) sprintf(msg,"No matching \"End %s\" found for \"%s\".",tempKeyWord,tempKeyWord); 222 if(num==23) sprintf(msg,"Cannot read the resource file \"%s\".",tempKeyWord); 218 223 if(num==24) lstrcpy(msg,"Must not use String type as an argument for exported function. (Use BytePtr type instead.)"); 219 if(num==27) sprintf(msg,"\"%s\" Undefined procedure.", KeyWord);220 if(num==28) sprintf(msg,"\"%s\" Structure must not be passed by value. (Use \"ByRef\".)", KeyWord);224 if(num==27) sprintf(msg,"\"%s\" Undefined procedure.",tempKeyWord); 225 if(num==28) sprintf(msg,"\"%s\" Structure must not be passed by value. (Use \"ByRef\".)",tempKeyWord); 221 226 if(num==29) sprintf(msg,"Array must not be passed by value. (Use \"ByRef\".)"); 222 227 //num==30は予約されています 223 if(num==31) sprintf(msg,"\"%s\" is a struct. (Use period \".\" to refer to the members.)", KeyWord);224 if(num==32) sprintf(msg,"\"%s\" is a pointer of struct. (Use arrow \"->\" to refer to the members.)", KeyWord);228 if(num==31) sprintf(msg,"\"%s\" is a struct. (Use period \".\" to refer to the members.)",tempKeyWord); 229 if(num==32) sprintf(msg,"\"%s\" is a pointer of struct. (Use arrow \"->\" to refer to the members.)",tempKeyWord); 225 230 if(num==33) sprintf(msg,"Constant formula has a thing that is not literal value or constant value."); 226 231 if(num==34) sprintf(msg,"Constant formula must be defined in the module level."); 227 if(num==38) sprintf(msg,"\"%s\" is a procedure without a return value.", KeyWord);228 if(num==39) sprintf(msg,"\"%s\" is not object pointer. \"->\" is invalid.", KeyWord);232 if(num==38) sprintf(msg,"\"%s\" is a procedure without a return value.",tempKeyWord); 233 if(num==39) sprintf(msg,"\"%s\" is not object pointer. \"->\" is invalid.",tempKeyWord); 229 234 if(num==40) lstrcpy(msg,"Cannot set a object to return value."); 230 235 if(num==41) lstrcpy(msg,"Init data is wrong."); … … 233 238 234 239 //オブジェクト関連 235 if(num==102) sprintf(msg,"\"%s\" The object is not defined.", KeyWord);236 if(num==103) sprintf(msg,"\"%s\" The member is not defined.", KeyWord);237 if(num==104) sprintf(msg,"\"%s\" The reference character is different.", KeyWord);238 if(num==105) sprintf(msg,"\"%s\" An own class is not inheritable.", KeyWord);239 if(num==106) sprintf(msg,"\"%s\" It class is not defined.", KeyWord);240 if(num==107) sprintf(msg,"\"%s\" Cannot access the private member.", KeyWord);241 if(num==108) sprintf(msg,"\"%s\" Cannot access the protected member.", KeyWord);242 if(num==109) sprintf(msg,"\"%s\" Cannot call the private member.", KeyWord);243 if(num==110) sprintf(msg,"\"%s\" Cannot call the protected member.", KeyWord);240 if(num==102) sprintf(msg,"\"%s\" The object is not defined.",tempKeyWord); 241 if(num==103) sprintf(msg,"\"%s\" The member is not defined.",tempKeyWord); 242 if(num==104) sprintf(msg,"\"%s\" The reference character is different.",tempKeyWord); 243 if(num==105) sprintf(msg,"\"%s\" An own class is not inheritable.",tempKeyWord); 244 if(num==106) sprintf(msg,"\"%s\" It class is not defined.",tempKeyWord); 245 if(num==107) sprintf(msg,"\"%s\" Cannot access the private member.",tempKeyWord); 246 if(num==108) sprintf(msg,"\"%s\" Cannot access the protected member.",tempKeyWord); 247 if(num==109) sprintf(msg,"\"%s\" Cannot call the private member.",tempKeyWord); 248 if(num==110) sprintf(msg,"\"%s\" Cannot call the protected member.",tempKeyWord); 244 249 if(num==111) lstrcpy(msg,"The Inherits phrase must be described to the 1st line of class module"); 245 if(num==112) sprintf(msg,"\"%s\" is not class object. Therefor you cannot set the parameter for constructor.", KeyWord);246 if(num==113) sprintf(msg,"\"%s\" The parameter for constructor is wrong.", KeyWord);250 if(num==112) sprintf(msg,"\"%s\" is not class object. Therefor you cannot set the parameter for constructor.",tempKeyWord); 251 if(num==113) sprintf(msg,"\"%s\" The parameter for constructor is wrong.",tempKeyWord); 247 252 if(num==114) lstrcpy(msg,"Destructor cannot have a parameter."); 248 253 if(num==115) lstrcpy(msg,"Constructor and Destructor cannot have a return value."); … … 250 255 if(num==117) lstrcpy(msg,"Destructors name must be \"~ClassName\"."); 251 256 if(num==118) lstrcpy(msg,"Super class is not found."); 252 if(num==119) sprintf(msg,"\"%s\" The member is not defined in the super class.", KeyWord);257 if(num==119) sprintf(msg,"\"%s\" The member is not defined in the super class.",tempKeyWord); 253 258 254 259 //Enum関連 255 if(num==150) sprintf(msg,"\"%s\" The value is not set", KeyWord);256 if(num==151) sprintf(msg,"\"%s\" is not found from enum lists.", KeyWord);260 if(num==150) sprintf(msg,"\"%s\" The value is not set",tempKeyWord); 261 if(num==151) sprintf(msg,"\"%s\" is not found from enum lists.",tempKeyWord); 257 262 258 263 //リンカ 259 if(num==200) sprintf(msg,"\"%s\" Unknown error.", KeyWord);264 if(num==200) sprintf(msg,"\"%s\" Unknown error.",tempKeyWord); 260 265 #endif 261 266 262 267 return 1; 263 268 } 264 void SetError(int num,c har *KeyWord,int pos){269 void SetError(int num,const char *KeyWord,int pos){ 265 270 extern HANDLE hHeap; 266 271 extern HWND hMainDlg;
Note:
See TracChangeset
for help on using the changeset viewer.