Changeset 465 in dev for trunk/ab5.0/abdev
- Timestamp:
- Mar 24, 2008, 8:05:20 PM (17 years ago)
- Location:
- trunk/ab5.0/abdev
- Files:
-
- 2 added
- 61 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ab5.0/abdev/BasicCompiler32/BasicCompiler.vcproj
r461 r465 1266 1266 > 1267 1267 </File> 1268 <File 1269 RelativePath="..\BasicCompiler_Common\src\Messenger.cpp" 1270 > 1271 </File> 1268 1272 <Filter 1269 1273 Name="Langauge Classes" … … 1471 1475 > 1472 1476 </File> 1477 <File 1478 RelativePath="..\BasicCompiler_Common\include\Messenger.h" 1479 > 1480 </File> 1473 1481 <Filter 1474 1482 Name="Language Classes" -
trunk/ab5.0/abdev/BasicCompiler32/CParameter.cpp
r437 r465 239 239 char temp2[255]; 240 240 sprintf(temp2,"%s関数の第%dパラメータ",procName.c_str(),i2+1); 241 SetError(19,temp2,cp);241 compiler.errorMessenger.Output(19,temp2,cp); 242 242 continue; 243 243 } … … 306 306 } 307 307 else{ 308 SetError(300,NULL,cp);308 compiler.errorMessenger.Output(300,NULL,cp); 309 309 } 310 310 } … … 368 368 if( dummyType.IsObject() ){ 369 369 if( !dummyType.GetClass().IsEqualsOrSubClass( &varType.GetClass() ) ){ 370 SetError(11,Parms[i2],cp);370 compiler.errorMessenger.Output(11,Parms[i2],cp); 371 371 } 372 372 } 373 373 else if( dummyType.IsStruct() ){ 374 374 if( !dummyType.GetClass().IsEquals( &varType.GetClass() ) ){ 375 SetError(11,Parms[i2],cp);375 compiler.errorMessenger.Output(11,Parms[i2],cp); 376 376 } 377 377 } … … 382 382 } 383 383 else{ 384 SetError(11,Parms[i2],cp);384 compiler.errorMessenger.Output(11,Parms[i2],cp); 385 385 } 386 386 } -
trunk/ab5.0/abdev/BasicCompiler32/Compile_Calc.cpp
r461 r465 130 130 compiler.codeGenerator.op_fstp_basereg( DEF_DOUBLE, REG_ESP ); 131 131 } 132 else SetError(9,NULL,cp);132 else compiler.errorMessenger.Output(9,NULL,cp); 133 133 } 134 134 void ChangeTypeToSingle(int OldType){ … … 198 198 compiler.codeGenerator.op_fstp_basereg( DEF_SINGLE, REG_ESP ); 199 199 } 200 else SetError(9,NULL,cp);200 else compiler.errorMessenger.Output(9,NULL,cp); 201 201 } 202 202 … … 254 254 } 255 255 } 256 else SetError(9,NULL,cp);256 else compiler.errorMessenger.Output(9,NULL,cp); 257 257 } 258 258 void ChangeTypeToLong(int OldType){ … … 393 393 } 394 394 else{ 395 SetError(300,NULL,cp);395 compiler.errorMessenger.Output(300,NULL,cp); 396 396 } 397 397 } … … 411 411 //ダブルクォートは不正なのでエラー扱い 412 412 variable[i]=0; 413 SetError(3,variable,cp);413 compiler.errorMessenger.Output(3,variable,cp); 414 414 return; 415 415 } … … 458 458 if(GetVarType(variable,Type(),0)){ 459 459 //変数リストに該当したとき 460 SetError(1,NULL,cp);460 compiler.errorMessenger.Output(1,NULL,cp); 461 461 } 462 462 else{ … … 465 465 { 466 466 //定数リストに該当したとき 467 SetError(1,NULL,cp);467 compiler.errorMessenger.Output(1,NULL,cp); 468 468 } 469 469 else{ 470 470 //変数リスト、定数リストに該当しないとき 471 SetError(3,variable,cp);471 compiler.errorMessenger.Output(3,variable,cp); 472 472 } 473 473 } … … 491 491 492 492 if(Command[i+1]=='\0'){ 493 SetError(1,NULL,cp);493 compiler.errorMessenger.Output(1,NULL,cp); 494 494 return; 495 495 } … … 531 531 532 532 if( lstrcmpi( variable, "This" ) == 0 ){ 533 SetError(133,NULL,cp);533 compiler.errorMessenger.Output(133,NULL,cp); 534 534 return; 535 535 } … … 593 593 if( !TermOpeOnlyVariable( variable, varType, VarRelativeVar, true ) ) 594 594 { 595 SetError();595 compiler.errorMessenger.OutputFatalError(); 596 596 return; 597 597 } 598 598 599 599 if(varType.GetBasicType()&FLAG_PTR){ 600 SetError(14,variable,cp);600 compiler.errorMessenger.Output(14,variable,cp); 601 601 return; 602 602 } … … 614 614 compiler.GetObjectModule().meta.GetBlittableTypes().GetClass( calcType ).GetStaticMethods().Enum( "_Create", userProcs ); 615 615 if( userProcs.size() != 1 ){ 616 SetError();616 compiler.errorMessenger.OutputFatalError(); 617 617 return; 618 618 } -
trunk/ab5.0/abdev/BasicCompiler32/Compile_Calc_PushVar.cpp
r308 r465 21 21 } 22 22 else if(pRelativeVar->dwKind==VAR_REFGLOBAL){ 23 SetError(300,NULL,cp);23 compiler.errorMessenger.Output(300,NULL,cp); 24 24 } 25 25 else if(pRelativeVar->dwKind==VAR_LOCAL){ … … 68 68 //64ビットの場合はedx:eaxにロード 69 69 if(reg!=REG_EAX){ 70 SetError(300,NULL,cp);70 compiler.errorMessenger.Output(300,NULL,cp); 71 71 return; 72 72 } -
trunk/ab5.0/abdev/BasicCompiler32/Compile_CallProc.cpp
r461 r465 135 135 } 136 136 else{ 137 SetError(300,NULL,cp);137 compiler.errorMessenger.Output(300,NULL,cp); 138 138 } 139 139 } … … 163 163 pMethod = pobj_c->GetStaticMethods().GetMethodPtr( pUserProc ); 164 164 if( !pMethod ){ 165 SetError(300,NULL,cp);165 compiler.errorMessenger.Output(300,NULL,cp); 166 166 return false; 167 167 } … … 181 181 //同一クラスオブジェクトの場合はプライベートアクセスを容認する 182 182 if( pMethod->IsNoneAccess() ){ 183 SetError(109,pUserProc->GetName(),cp);183 compiler.errorMessenger.Output(109,pUserProc->GetName(),cp); 184 184 return false; 185 185 } … … 188 188 if( pMethod->IsPrivate() 189 189 || pMethod->IsNoneAccess() ){ 190 SetError(109,pUserProc->GetName(),cp);190 compiler.errorMessenger.Output(109,pUserProc->GetName(),cp); 191 191 return false; 192 192 } 193 193 if( !pMethod->GetUserProc().GetParentClass().IsEqualsOrSubClass( pobj_c ) && pMethod->IsProtected() ){ 194 SetError(110,pUserProc->GetName(),cp);194 compiler.errorMessenger.Output(110,pUserProc->GetName(),cp); 195 195 return false; 196 196 } … … 200 200 //クラス内部からの呼び出し(継承によるACCESS_NONのみをエラーとする) 201 201 if( pMethod->IsNoneAccess() ){ 202 SetError(109,pUserProc->GetName(),cp);202 compiler.errorMessenger.Output(109,pUserProc->GetName(),cp); 203 203 return false; 204 204 } … … 296 296 if( !resultType.IsObject() ) 297 297 { 298 SetError();298 compiler.errorMessenger.OutputFatalError(); 299 299 } 300 300 … … 344 344 if( vtblMasterListIndex != 0 ) 345 345 { 346 SetError();346 compiler.errorMessenger.OutputFatalError(); 347 347 } 348 348 } -
trunk/ab5.0/abdev/BasicCompiler32/Compile_Func.cpp
r461 r465 263 263 || type.IsObjectPtr() && referenceKind == RefPointer ) ) 264 264 { 265 SetError(104,ObjectName,cp);265 compiler.errorMessenger.Output(104,ObjectName,cp); 266 266 } 267 267 … … 305 305 if( vtblMasterListIndex != 0 ) 306 306 { 307 SetError();307 compiler.errorMessenger.OutputFatalError(); 308 308 } 309 309 } … … 400 400 { 401 401 extern int cp; 402 SetError(1,NULL,cp);402 compiler.errorMessenger.Output(1,NULL,cp); 403 403 return; 404 404 } … … 460 460 GetOverloadSubHash( name, subs ); 461 461 if( subs.size() == 0 ){ 462 SetError(27,name,cp);462 compiler.errorMessenger.Output(27,name,cp); 463 463 return; 464 464 } … … 480 480 ) ) 481 481 { 482 SetError(67, name, cp );482 compiler.errorMessenger.Output(67, name, cp ); 483 483 } 484 484 } … … 491 491 ) ) 492 492 { 493 SetError(66, name, cp );493 compiler.errorMessenger.Output(66, name, cp ); 494 494 } 495 495 } … … 497 497 498 498 if(!pUserProc){ 499 SetError(27,name,cp);499 compiler.errorMessenger.Output(27,name,cp); 500 500 return; 501 501 } … … 504 504 pUserProc=GetSubHash(name); 505 505 if(!pUserProc){ 506 SetError(27,name,cp);506 compiler.errorMessenger.Output(27,name,cp); 507 507 return; 508 508 } … … 531 531 Type tempType; 532 532 if( !compiler.StringToType( typeName, tempType ) ){ 533 SetError(3,typeName,cp);533 compiler.errorMessenger.Output(3,typeName,cp); 534 534 return; 535 535 } … … 597 597 } 598 598 else{ 599 SetError(134,NULL,cp );599 compiler.errorMessenger.Output(134,NULL,cp ); 600 600 } 601 601 } … … 680 680 } 681 681 if(!tempType.IsWhole()){ 682 SetError(11,Parameter,cp);682 compiler.errorMessenger.Output(11,Parameter,cp); 683 683 return; 684 684 } -
trunk/ab5.0/abdev/BasicCompiler32/Compile_Object.cpp
r391 r465 22 22 23 23 if(bSomeObjects){ 24 SetError();24 compiler.errorMessenger.OutputFatalError(); 25 25 26 26 //push ebx … … 64 64 } 65 65 else{ 66 SetError();66 compiler.errorMessenger.OutputFatalError(); 67 67 } 68 68 … … 110 110 if(pClass->IsAbstract()){ 111 111 //抽象クラスだったとき 112 SetError(125,pClass->GetName(),cp);112 compiler.errorMessenger.Output(125,pClass->GetName(),cp); 113 113 } 114 114 … … 119 119 Type tempType; 120 120 NumOpe(objectSizeStr,Type(),tempType); 121 if( !tempType.IsWhole() ) SetError(49,NULL,cp);121 if( !tempType.IsWhole() ) compiler.errorMessenger.Output(49,NULL,cp); 122 122 ChangeTypeToLong(tempType.GetBasicType()); 123 123 … … 269 269 return; 270 270 } 271 if(!( tempType.IsObjectPtr() || tempType.IsVoidPtr() )) SetError(122,NULL,cp);271 if(!( tempType.IsObjectPtr() || tempType.IsVoidPtr() )) compiler.errorMessenger.Output(122,NULL,cp); 272 272 273 273 //pop eax -
trunk/ab5.0/abdev/BasicCompiler32/Compile_ProcOp.cpp
r461 r465 197 197 } 198 198 else{ 199 SetError();199 compiler.errorMessenger.OutputFatalError(); 200 200 } 201 201 } … … 242 242 { 243 243 if(pGotoLabelSchedule->GetName().size()>0){ 244 SetError(6,pGotoLabelSchedule->GetName(),pGotoLabelSchedule->GetSourceCodePos());244 compiler.errorMessenger.Output(6,pGotoLabelSchedule->GetName(),pGotoLabelSchedule->GetSourceCodePos()); 245 245 } 246 246 else{ 247 247 char temporary[255]; 248 248 sprintf(temporary,"%d",pGotoLabelSchedule->GetLineNum()); 249 SetError(6,temporary,pGotoLabelSchedule->GetSourceCodePos());249 compiler.errorMessenger.Output(6,temporary,pGotoLabelSchedule->GetSourceCodePos()); 250 250 } 251 251 } … … 273 273 } 274 274 else{ 275 SetError();275 compiler.errorMessenger.OutputFatalError(); 276 276 } 277 277 } … … 285 285 286 286 if( pUserProc->GetLocalVars().size() ){ 287 SetError();287 compiler.errorMessenger.OutputFatalError(); 288 288 return; 289 289 } … … 311 311 { 312 312 // 既にコード生成が行われている場合はエラー 313 SetError();313 compiler.errorMessenger.OutputFatalError(); 314 314 } 315 315 … … 531 531 } 532 532 if(!(temporary[0]=='('&&temporary[lstrlen(temporary)-1]==')')){ 533 SetError(1,NULL,cp);533 compiler.errorMessenger.Output(1,NULL,cp); 534 534 } 535 535 RemoveStringPare(temporary); … … 618 618 //With情報のメモリを解放 619 619 for(i3=0;i3<WithInfo.num;i3++){ 620 SetError(22,"With",WithInfo.pWithCp[i3]);620 compiler.errorMessenger.Output(22,"With",WithInfo.pWithCp[i3]); 621 621 HeapDefaultFree(WithInfo.ppName[i3]); 622 622 } … … 710 710 else 711 711 { 712 SetError();712 compiler.errorMessenger.OutputFatalError(); 713 713 } 714 714 } -
trunk/ab5.0/abdev/BasicCompiler32/Compile_Set_Var.cpp
r461 r465 50 50 } 51 51 52 SetError(1,NULL,cp);52 compiler.errorMessenger.Output(1,NULL,cp); 53 53 } 54 54 … … 155 155 if(type==DEF_DOUBLE){ 156 156 // TODO: 実装 157 SetError();157 compiler.errorMessenger.OutputFatalError(); 158 158 } 159 159 else if(type==DEF_SINGLE){ 160 160 // TODO: 実装 161 SetError();161 compiler.errorMessenger.OutputFatalError(); 162 162 } 163 163 else if(type==DEF_INT64||type==DEF_QWORD){ … … 180 180 if(!IsWholeNumberType(type)){ 181 181 //不正な型の場合 182 SetError(9,NULL,cp);182 compiler.errorMessenger.Output(9,NULL,cp); 183 183 return; 184 184 } … … 327 327 else if(pRelative->dwKind==VAR_REFGLOBAL){ 328 328 // 今は使われていない 329 SetError();329 compiler.errorMessenger.OutputFatalError(); 330 330 331 331 if(pRelative->bOffsetOffset){ -
trunk/ab5.0/abdev/BasicCompiler32/Compile_Statement.cpp
r435 r465 16 16 //ダブルクォートは不正なのでエラー扱い 17 17 leftTerm[i]=0; 18 SetError(3,leftTerm,cp);18 compiler.errorMessenger.Output(3,leftTerm,cp); 19 19 return; 20 20 } … … 48 48 (leftTerm[0]==1&&leftTerm[1]==ESC_PSMEM) 49 49 )){ 50 SetError(1,NULL,cp);50 compiler.errorMessenger.Output(1,NULL,cp); 51 51 return; 52 52 } … … 76 76 if(pUserProc){ 77 77 if( !pUserProc->IsMacro() ){ 78 SetError(10,Command,cp);78 compiler.errorMessenger.Output(10,Command,cp); 79 79 } 80 80 … … 117 117 118 118 // どこにも当てはまらなかったため、失敗 119 SetError(1,NULL,cp);119 compiler.errorMessenger.Output(1,NULL,cp); 120 120 } 121 121 … … 126 126 for(i=0;;i++){ 127 127 if(Parameter[i]=='\0'){ 128 SetError(21,NULL,cp);128 compiler.errorMessenger.Output(21,NULL,cp); 129 129 return; 130 130 } … … 355 355 compiler.codeGenerator.ContinueAreaBegin(); 356 356 357 if(!Parameter[0]) SetError(10,"While",cp);357 if(!Parameter[0]) compiler.errorMessenger.Output(10,"While",cp); 358 358 359 359 const PertialSchedule *pWhilePertialSchedule = NULL; … … 483 483 i=GetOneParameter(Parameter,0,temporary); 484 484 if(!Parameter[i]){ 485 SetError(12,"For",cp);485 compiler.errorMessenger.Output(12,"For",cp); 486 486 goto ErrorStep; 487 487 } … … 496 496 } 497 497 if(temporary[i2]=='\0'){ 498 SetError(12,"For",cp);498 compiler.errorMessenger.Output(12,"For",cp); 499 499 goto ErrorStep; 500 500 } … … 514 514 if(Parameter[i]){ 515 515 i=GetOneParameter(Parameter,i,StepNum); 516 if(Parameter[i]) SetError(12,"For",cp);516 if(Parameter[i]) compiler.errorMessenger.Output(12,"For",cp); 517 517 } 518 518 else lstrcpy(StepNum,"1"); … … 578 578 if(szNextVariable[0]){ 579 579 if(lstrcmp(szNextVariable,variable)!=0){ 580 SetError(55,szNextVariable,cp);580 compiler.errorMessenger.Output(55,szNextVariable,cp); 581 581 } 582 582 } … … 608 608 GetCustomToken( variable, Parameter, i, ESC_IN, true ); 609 609 if(!Parameter[i]){ 610 SetError(12,"Foreach",cp);610 compiler.errorMessenger.Output(12,"Foreach",cp); 611 611 isError = true; 612 612 goto ErrorStep; … … 667 667 if(szNextVariable[0]){ 668 668 if(lstrcmp(szNextVariable,variable)!=0){ 669 SetError(55,szNextVariable,cp);669 compiler.errorMessenger.Output(55,szNextVariable,cp); 670 670 } 671 671 } … … 691 691 int i,i2,i3; 692 692 693 if(Parameter[0]) SetError(10,"Do",cp);693 if(Parameter[0]) compiler.errorMessenger.Output(10,"Do",cp); 694 694 695 695 //Continueアドレスのバックアップとセット … … 894 894 void OpcodeExitSub(void){ 895 895 if( UserProc::IsGlobalAreaCompiling() ){ 896 SetError(12,"Exit Sub/Function",cp);896 compiler.errorMessenger.Output(12,"Exit Sub/Function",cp); 897 897 return; 898 898 } … … 942 942 if(basbuf[i]=='\0'){ 943 943 selectSchedules.pop_back(); 944 SetError(22,"Select",cp);944 compiler.errorMessenger.Output(22,"Select",cp); 945 945 return; 946 946 } … … 1163 1163 1164 1164 if(selectSchedules.back().typeSize==-1){ 1165 SetError(30,"Case",cp);1165 compiler.errorMessenger.Output(30,"Case",cp); 1166 1166 return; 1167 1167 } … … 1282 1282 i=GetOneParameter(Parameter,0,temporary); 1283 1283 if(!Parameter[i]){ 1284 SetError(1,NULL,cp);1284 compiler.errorMessenger.Output(1,NULL,cp); 1285 1285 return; 1286 1286 } … … 1291 1291 } 1292 1292 if(!resultType.IsWhole()){ 1293 SetError(11,Parameter,cp);1293 compiler.errorMessenger.Output(11,Parameter,cp); 1294 1294 return; 1295 1295 } … … 1300 1300 i=GetOneParameter(Parameter,i,temporary); 1301 1301 if(Parameter[i]){ 1302 SetError(1,NULL,cp);1302 compiler.errorMessenger.Output(1,NULL,cp); 1303 1303 return; 1304 1304 } -
trunk/ab5.0/abdev/BasicCompiler32/Compile_Var.cpp
r461 r465 35 35 else{ 36 36 //エラー 37 SetError(1,NULL,cp);37 compiler.errorMessenger.Output(1,NULL,cp); 38 38 return; 39 39 } … … 185 185 if( !pMember ) 186 186 { 187 if(isErrorEnabled) SetError(103,VarName,cp);187 if(isErrorEnabled) compiler.errorMessenger.Output(103,VarName,cp); 188 188 return false; 189 189 } … … 196 196 //同一クラスオブジェクトの場合はプライベートアクセスを容認する 197 197 if(pMember->IsNoneAccess()){ 198 if(isErrorEnabled) SetError(107,VarName,cp);198 if(isErrorEnabled) compiler.errorMessenger.Output(107,VarName,cp); 199 199 return false; 200 200 } … … 203 203 if((bPrivateAccess==0&&pMember->IsPrivate())|| 204 204 pMember->IsNoneAccess()){ 205 if(isErrorEnabled) SetError(107,VarName,cp);205 if(isErrorEnabled) compiler.errorMessenger.Output(107,VarName,cp); 206 206 return false; 207 207 } 208 208 else if(bPrivateAccess==0&&pMember->IsProtected()){ 209 if(isErrorEnabled) SetError(108,VarName,cp);209 if(isErrorEnabled) compiler.errorMessenger.Output(108,VarName,cp); 210 210 return false; 211 211 } … … 219 219 ){ 220 220 //Const定義の変数に書き込みアクセスをしようとした場合 221 SetError(61,VarName,cp);221 compiler.errorMessenger.Output(61,VarName,cp); 222 222 } 223 223 … … 237 237 else{ 238 238 if(lpPtrOffset[0]){ 239 if(isErrorEnabled) SetError(16,member,cp);239 if(isErrorEnabled) compiler.errorMessenger.Output(16,member,cp); 240 240 return false; 241 241 } … … 250 250 //配列オフセット 251 251 if(!GetArrayOffset(pMember->GetSubscripts(),array,pMember->GetType())){ 252 if(isErrorEnabled) SetError(14,member,cp);252 if(isErrorEnabled) compiler.errorMessenger.Output(14,member,cp); 253 253 return false; 254 254 } … … 263 263 if( resultType.IsObject() || resultType.IsStruct() ){ 264 264 if( refType != RefDot ){ 265 if(isErrorEnabled) SetError(104,member,cp);265 if(isErrorEnabled) compiler.errorMessenger.Output(104,member,cp); 266 266 return false; 267 267 } … … 279 279 if( ( resultType.IsObjectPtr() || resultType.IsStructPtr() ) 280 280 && refType != RefDot ){ 281 if(isErrorEnabled) SetError(104,member,cp);281 if(isErrorEnabled) compiler.errorMessenger.Output(104,member,cp); 282 282 return false; 283 283 } … … 293 293 if( ( resultType.IsObjectPtr() || resultType.IsStructPtr() ) 294 294 && refType != RefPointer ){ 295 if(isErrorEnabled) SetError(104,member,cp);295 if(isErrorEnabled) compiler.errorMessenger.Output(104,member,cp); 296 296 return false; 297 297 } … … 307 307 //ppObj[n]->member 308 308 if( refType != RefPointer ){ 309 if(isErrorEnabled) SetError(104,member,cp);309 if(isErrorEnabled) compiler.errorMessenger.Output(104,member,cp); 310 310 return false; 311 311 } … … 321 321 } 322 322 else{ 323 if(isErrorEnabled) SetError(104,member,cp);323 if(isErrorEnabled) compiler.errorMessenger.Output(104,member,cp); 324 324 return false; 325 325 } … … 403 403 else{ 404 404 if(lpPtrOffset[0]){ 405 SetError(16,variable,cp);405 compiler.errorMessenger.Output(16,variable,cp); 406 406 pRelativeVar->dwKind=NON_VAR; 407 407 return false; … … 485 485 compiler.pCompilingClass->IsCompilingDestructor() == false 486 486 ){ 487 SetError(131, NULL, cp );487 compiler.errorMessenger.Output(131, NULL, cp ); 488 488 } 489 489 … … 577 577 } 578 578 579 if(isErrorEnabled) SetError(3,variable,cp);579 if(isErrorEnabled) compiler.errorMessenger.Output(3,variable,cp); 580 580 pRelativeVar->dwKind=NON_VAR; 581 581 return false; … … 593 593 else{ 594 594 if(lpPtrOffset[0]){ 595 SetError(16,variable,cp);595 compiler.errorMessenger.Output(16,variable,cp); 596 596 pRelativeVar->dwKind=NON_VAR; 597 597 return false; … … 619 619 if( resultType.IsObject() ){ 620 620 //オブジェクト定数 621 SetError(130, VarName, cp );621 compiler.errorMessenger.Output(130, VarName, cp ); 622 622 } 623 623 else{ 624 624 //一般のConst変数 625 SetError(61,VarName,cp);625 compiler.errorMessenger.Output(61,VarName,cp); 626 626 } 627 627 } … … 647 647 if(array[0]){ 648 648 if(!GetArrayOffset(*pSubscripts,array,resultType)){ 649 SetError(14,variable,cp);649 compiler.errorMessenger.Output(14,variable,cp); 650 650 pRelativeVar->dwKind=NON_VAR; 651 651 return false; … … 656 656 //実態オブジェクトのメンバを参照(obj.member) 657 657 if( refType != RefDot ){ 658 SetError(104,VarName,cp);658 compiler.errorMessenger.Output(104,VarName,cp); 659 659 pRelativeVar->dwKind=NON_VAR; 660 660 return false; … … 671 671 //pObj[n].member 672 672 if( refType != RefDot ){ 673 SetError(104,VarName,cp);673 compiler.errorMessenger.Output(104,VarName,cp); 674 674 pRelativeVar->dwKind=NON_VAR; 675 675 return false; … … 681 681 //pObj->member 682 682 if( refType != RefPointer ){ 683 SetError(104,VarName,cp);683 compiler.errorMessenger.Output(104,VarName,cp); 684 684 pRelativeVar->dwKind=NON_VAR; 685 685 return false; … … 698 698 //ppObj[n]->member 699 699 if( refType != RefPointer ){ 700 SetError(104,VarName,cp);700 compiler.errorMessenger.Output(104,VarName,cp); 701 701 pRelativeVar->dwKind=NON_VAR; 702 702 return false; … … 713 713 } 714 714 else{ 715 SetError(104,VarName,cp);715 compiler.errorMessenger.Output(104,VarName,cp); 716 716 pRelativeVar->dwKind=NON_VAR; 717 717 return false; … … 719 719 } 720 720 else{ 721 SetError(102,VarName,cp);721 compiler.errorMessenger.Output(102,VarName,cp); 722 722 pRelativeVar->dwKind=NON_VAR; 723 723 return false; … … 768 768 while(1){ 769 769 if( subscripts[0] < i2 ){ 770 SetError(41,0,cp);770 compiler.errorMessenger.Output(41,0,cp); 771 771 return 0; 772 772 } … … 790 790 BOOST_FOREACH( CMember *pMember, objClass.GetDynamicMembers() ){ 791 791 if(InitBuf[i]=='\0'){ 792 SetError(41,0,cp);792 compiler.errorMessenger.Output(41,0,cp); 793 793 return false; 794 794 } … … 806 806 } 807 807 808 SetError(41,0,cp);808 compiler.errorMessenger.Output(41,0,cp); 809 809 return false; 810 810 } … … 816 816 817 817 if( subscripts.size() > 0 ){ 818 SetError(41,0,cp);818 compiler.errorMessenger.Output(41,0,cp); 819 819 return false; 820 820 } … … 931 931 while(1){ 932 932 if( subscripts[0] < i2 ){ 933 SetError(41,0,cp);933 compiler.errorMessenger.Output(41,0,cp); 934 934 return 0; 935 935 } … … 953 953 BOOST_FOREACH( CMember *pMember, objClass.GetDynamicMembers() ){ 954 954 if(InitBuf[i]=='\0'){ 955 SetError(41,0,cp);955 compiler.errorMessenger.Output(41,0,cp); 956 956 return false; 957 957 } … … 971 971 } 972 972 973 SetError(41,0,cp);973 compiler.errorMessenger.Output(41,0,cp); 974 974 return false; 975 975 } … … 981 981 982 982 if( subscripts.size() > 0 ){ 983 SetError(41,0,cp);983 compiler.errorMessenger.Output(41,0,cp); 984 984 return false; 985 985 } … … 1105 1105 if( UserProc::CompilingUserProc().GetLocalVars().DuplicateCheck( Symbol( VarName ) ) ){ 1106 1106 //2重定義のエラー 1107 SetError(15,VarName,cp);1107 compiler.errorMessenger.Output(15,VarName,cp); 1108 1108 return; 1109 1109 } … … 1218 1218 else{ 1219 1219 if( subscripts.size() > 1 ){ 1220 SetError(300,NULL,cp);1220 compiler.errorMessenger.Output(300,NULL,cp); 1221 1221 } 1222 1222 sprintf( objectSize, "%d", subscripts[0] ); … … 1230 1230 GetVarOffset( true, false, VarName, &RelativeVar, Type() ); 1231 1231 if( RelativeVar.dwKind == VAR_DIRECTMEM ){ 1232 SetError();1232 compiler.errorMessenger.OutputFatalError(); 1233 1233 } 1234 1234 SetVariableFromEax( Type( DEF_OBJECT, *compiler.GetObjectModule().meta.GetClasses().GetObjectClassPtr() ), DEF_OBJECT, &RelativeVar ); … … 1306 1306 void SetVarPtrToReg(int reg,RELATIVE_VAR *pRelativeVar){ 1307 1307 if( reg != REG_EAX ){ 1308 SetError();1308 compiler.errorMessenger.OutputFatalError(); 1309 1309 //TODO: 未完成 1310 1310 } … … 1315 1315 const UserProc *pUserProc_AddGlobalRootPtr = GetClassMethod( "_System_CGarbageCollection", "AddGlobalRootPtr" ); 1316 1316 if( !pUserProc_AddGlobalRootPtr ){ 1317 SetError(3, "_System_CGarbageCollection.AddGlobalRootPtr", -1 );1317 compiler.errorMessenger.Output(3, "_System_CGarbageCollection.AddGlobalRootPtr", -1 ); 1318 1318 return false; 1319 1319 } -
trunk/ab5.0/abdev/BasicCompiler32/MakePeHdr.cpp
r459 r465 365 365 // 名前空間が初期化されているかをチェック 366 366 if( compiler.GetNamespaceSupporter().GetLivingNamespaceScopes().size() ){ 367 SetError();367 compiler.errorMessenger.OutputFatalError(); 368 368 } 369 369 … … 443 443 //With情報のメモリを解放 444 444 for(i=0;i<WithInfo.num;i++){ 445 SetError(22,"With",WithInfo.pWithCp[i]);445 compiler.errorMessenger.Output(22,"With",WithInfo.pWithCp[i]); 446 446 HeapDefaultFree(WithInfo.ppName[i]); 447 447 } … … 451 451 // 名前空間が正しく閉じられているかをチェック 452 452 if( compiler.GetNamespaceSupporter().GetLivingNamespaceScopes().size() ){ 453 SetError(63,NULL,-1);453 compiler.errorMessenger.Output(63,NULL,-1); 454 454 } 455 455 … … 504 504 } 505 505 506 extern BOOL bError; 507 if( !bError ) 506 if( !compiler.errorMessenger.HasError() ) 508 507 { 509 CompileMessage( "リンク中..." );508 compiler.messenger.Output( "リンク中..." ); 510 509 } 511 510 … … 558 557 559 558 if(!hLib){ 560 SetError(-106,pDllProc->GetDllFileName().c_str(),pDllProc->GetCodePos());559 compiler.errorMessenger.Output(-106,pDllProc->GetDllFileName().c_str(),pDllProc->GetCodePos()); 561 560 } 562 561 } … … 565 564 if(!GetProcAddress(hLib,pDllProc->GetAlias().c_str())){ 566 565 FreeLibrary(hLib); 567 SetError(-107,pDllProc->GetAlias(),pDllProc->GetCodePos());566 compiler.errorMessenger.Output(-107,pDllProc->GetAlias(),pDllProc->GetCodePos()); 568 567 } 569 568 FreeLibrary(hLib); … … 712 711 713 712 if( pDllProc->GetDllFileName().size() > 16 ){ 714 SetError(7,NULL,cp);713 compiler.errorMessenger.Output(7,NULL,cp); 715 714 break; 716 715 } … … 831 830 CDebugSection *pobj_DebugSection; 832 831 pobj_DebugSection=new CDebugSection(); 833 extern BOOL bError; 834 if( compiler.IsDebug() && bError == 0 ) 832 if( compiler.IsDebug() && !compiler.errorMessenger.HasError() ) 835 833 { 836 CompileMessage( "デバッグ情報を生成しています。" );834 compiler.messenger.Output( "デバッグ情報を生成しています。" ); 837 835 838 836 pobj_DebugSection->make(); 839 837 840 CompileMessage( "デバッグ情報の生成が完了しました。" );838 compiler.messenger.Output( "デバッグ情報の生成が完了しました。" ); 841 839 } 842 840 … … 1122 1120 1123 1121 1124 extern BOOL bError; 1125 if(bError) goto EndWriteOpcode; 1122 if( compiler.errorMessenger.HasError() ) 1123 { 1124 goto EndWriteOpcode; 1125 } 1126 1126 1127 1127 … … 1414 1414 hFile=CreateFile(OutputFileName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); 1415 1415 if(hFile==INVALID_HANDLE_VALUE){ 1416 SetError(53,OutputFileName,-1);1416 compiler.errorMessenger.Output(53,OutputFileName,-1); 1417 1417 goto EndWriteOpcode; 1418 1418 } -
trunk/ab5.0/abdev/BasicCompiler32/NumOpe.cpp
r461 r465 59 59 } 60 60 else{ 61 SetError();61 compiler.errorMessenger.OutputFatalError(); 62 62 } 63 63 } … … 79 79 void ExtendRegToBigType( int reg, int bigBasicType, int baseBasicType ){ 80 80 if( reg != REG_EAX ){ 81 SetError();81 compiler.errorMessenger.OutputFatalError(); 82 82 } 83 83 switch( Type::GetBasicSize( bigBasicType ) ){ … … 190 190 // オブジェクトメンバのポインタをeaxにコピー 191 191 if( !VarToReg( tempRelativeVar, baseType, resultType ) ){ 192 SetError(11,termFull,cp);192 compiler.errorMessenger.Output(11,termFull,cp); 193 193 } 194 194 … … 224 224 if( !leftType.IsStruct() ) 225 225 { 226 SetError();226 compiler.errorMessenger.OutputFatalError(); 227 227 } 228 228 … … 332 332 { 333 333 // 関数ポインタ 334 SetError();334 compiler.errorMessenger.OutputFatalError(); 335 335 336 336 /////////////////////////////////////////////////////////////////// … … 342 342 } 343 343 344 SetError();344 compiler.errorMessenger.OutputFatalError(); 345 345 346 346 return false; … … 400 400 if( isProcedureCallOnly ) 401 401 { 402 SetError(1,NULL,cp);402 compiler.errorMessenger.Output(1,NULL,cp); 403 403 } 404 404 return false; … … 432 432 if( compiler.pCompilingClass == NULL ) 433 433 { 434 SetError(142,NULL,cp);434 compiler.errorMessenger.Output(142,NULL,cp); 435 435 return false; 436 436 } … … 465 465 { 466 466 //閉じカッコ")"に続く文字がNULLでないとき 467 SetError(42,NULL,cp);467 compiler.errorMessenger.Output(42,NULL,cp); 468 468 } 469 469 … … 525 525 526 526 //閉じカッコ")"に続く文字がNULLでないときはエラーにする 527 if(termFull[i2+1+i4+1]!='\0') SetError(42,NULL,cp);527 if(termFull[i2+1+i4+1]!='\0') compiler.errorMessenger.Output(42,NULL,cp); 528 528 529 529 //マクロ関数の場合 … … 629 629 if( isProcedureCallOnly ) 630 630 { 631 SetError(3, termLeft, cp );631 compiler.errorMessenger.Output(3, termLeft, cp ); 632 632 } 633 633 … … 645 645 // 変数の場合はeaxに変数ポインタを格納する 646 646 if( !VarToReg( relativeVar, baseType, resultType ) ){ 647 SetError(11,term,cp);647 compiler.errorMessenger.Output(11,term,cp); 648 648 } 649 649 } … … 658 658 if( !isVariable ) 659 659 { 660 SetError();660 compiler.errorMessenger.OutputFatalError(); 661 661 } 662 662 … … 678 678 if( reg != REG_EAX ){ 679 679 // TODO: 未実装 680 SetError();680 compiler.errorMessenger.OutputFatalError(); 681 681 } 682 682 … … 708 708 709 709 if(expression[0]=='\0'){ 710 SetError(1,NULL,cp);710 compiler.errorMessenger.Output(1,NULL,cp); 711 711 return false; 712 712 } … … 863 863 else GetCalcName(idCalc,temp2); 864 864 sprintf(temporary,"Operator %s",temp2); 865 SetError(27,temporary,cp);865 compiler.errorMessenger.Output(27,temporary,cp); 866 866 goto error; 867 867 } … … 892 892 } 893 893 else{ 894 SetError(3, term, cp );894 compiler.errorMessenger.Output(3, term, cp ); 895 895 goto error; 896 896 } … … 918 918 // 拡張版リテラル文字列(エスケープシーケンス可能) 919 919 if(!RemoveStringQuotes(term+2)){ 920 SetError(43,NULL,cp);920 compiler.errorMessenger.Output(43,NULL,cp); 921 921 goto error; 922 922 } … … 928 928 // 通常文字列 929 929 if(!RemoveStringQuotes(term)){ 930 SetError(43,NULL,cp);930 compiler.errorMessenger.Output(43,NULL,cp); 931 931 goto error; 932 932 } … … 976 976 } 977 977 } 978 SetError(38,term,cp);978 compiler.errorMessenger.Output(38,term,cp); 979 979 980 980 goto error; … … 990 990 if( resultType.GetBasicType() & FLAG_CAST ){ 991 991 // 型名のみ 992 SetError();992 compiler.errorMessenger.OutputFatalError(); 993 993 } 994 994 else{ … … 1087 1087 } 1088 1088 else{ 1089 SetError(300,NULL,cp);1089 compiler.errorMessenger.Output(300,NULL,cp); 1090 1090 goto error; 1091 1091 } … … 1095 1095 //該当する識別子が見当たらないときはエラー扱いにする 1096 1096 bError=1; 1097 SetError(3,term,cp);1097 compiler.errorMessenger.Output(3,term,cp); 1098 1098 type_stack[sp]=DEF_DOUBLE; 1099 1099 } … … 1243 1243 if( PTR_LEVEL( type_stack[sp-1] ) <= 0 ){ 1244 1244 //ポインタ型ではないとき 1245 SetError( 3, NULL, cp );1245 compiler.errorMessenger.Output( 3, NULL, cp ); 1246 1246 goto error; 1247 1247 } … … 1252 1252 1253 1253 default: 1254 SetError(300,NULL,cp);1254 compiler.errorMessenger.Output(300,NULL,cp); 1255 1255 goto error; 1256 1256 } … … 1260 1260 1261 1261 if(sp!=1){ 1262 SetError(1,NULL,cp);1262 compiler.errorMessenger.Output(1,NULL,cp); 1263 1263 goto error; 1264 1264 } … … 1266 1266 if(bLiteralCalculation){ 1267 1267 //右辺値が数値の定数式の場合 1268 SetError();1268 compiler.errorMessenger.OutputFatalError(); 1269 1269 } 1270 1270 else{ -
trunk/ab5.0/abdev/BasicCompiler32/NumOpe_Arithmetic.cpp
r290 r465 999 999 int castBasicType = type[sp-1]; 1000 1000 if((castBasicType&FLAG_CAST)==0){ 1001 SetError(47,NULL,cp);1001 compiler.errorMessenger.Output(47,NULL,cp); 1002 1002 return 0; 1003 1003 } -
trunk/ab5.0/abdev/BasicCompiler32/NumOpe_Logical.cpp
r308 r465 15 15 if(IsRealNumberType(type[sp-2])||IsRealNumberType(type[sp-1])){ 16 16 //いずれかの項が実数のとき 17 SetError(45,"xor",cp);17 compiler.errorMessenger.Output(45,"xor",cp); 18 18 return 0; 19 19 } … … 158 158 if(IsRealNumberType(type[sp-2])||IsRealNumberType(type[sp-1])){ 159 159 //いずれかの項が実数のとき 160 SetError(45,"or",cp);160 compiler.errorMessenger.Output(45,"or",cp); 161 161 return 0; 162 162 } … … 301 301 if(IsRealNumberType(type[sp-2])||IsRealNumberType(type[sp-1])){ 302 302 //いずれかの項が実数のとき 303 SetError(45,"and",cp);303 compiler.errorMessenger.Output(45,"and",cp); 304 304 return 0; 305 305 } … … 441 441 if(IsRealNumberType(type[sp-1])){ 442 442 //実数のとき 443 SetError(45,"Not",cp);443 compiler.errorMessenger.Output(45,"Not",cp); 444 444 return 0; 445 445 } -
trunk/ab5.0/abdev/BasicCompiler32/NumOpe_Relation.cpp
r248 r465 24 24 } 25 25 else{ 26 SetError();26 compiler.errorMessenger.OutputFatalError(); 27 27 } 28 28 }*/ -
trunk/ab5.0/abdev/BasicCompiler32/OperatorProc.cpp
r448 r465 7 7 8 8 void FreeTempObject(int reg,const CClass *pobj_c){ 9 if(!IsSafeReg(reg)) SetError(300,NULL,cp);9 if(!IsSafeReg(reg)) compiler.errorMessenger.Output(300,NULL,cp); 10 10 11 11 const CMethod *method = pobj_c->GetDestructorMethod(); … … 231 231 if(bCalcUseHeap){ 232 232 //未解放のインスタンスが存在する旨を示す警告 233 SetError(-105,NULL,cp);233 compiler.errorMessenger.Output(-105,NULL,cp); 234 234 } 235 235 … … 255 255 256 256 //エラーを発行 257 SetError(-1,"キャスト演算子がオーバーロードされていません。",cp);257 compiler.errorMessenger.Output(-1,"キャスト演算子がオーバーロードされていません。",cp); 258 258 } 259 259 void CallIndexerGetterProc( const Type &classType, const char *ObjectName, char *Parameter,Type &resultType, DWORD dwProcFlags ){ -
trunk/ab5.0/abdev/BasicCompiler32/stdafx.h
r461 r465 22 22 #include <jenga/include/common/File.h> 23 23 #include <jenga/include/common/CmdLine.h> 24 #include <jenga/include/common/Path.h> 24 25 25 26 #include "../BasicCompiler_Common/common.h" -
trunk/ab5.0/abdev/BasicCompiler32/x86CodeGenerator.cpp
r370 r465 30 30 || mod == MOD_REG ) ) 31 31 { 32 SetError();32 compiler.errorMessenger.OutputFatalError(); 33 33 } 34 34 if( isPertialSchedule && !( mod == MOD_DISP32 || mod == MOD_BASE_DISP32 ) ) 35 35 { 36 SetError();36 compiler.errorMessenger.OutputFatalError(); 37 37 } 38 38 … … 972 972 if(type==DEF_DOUBLE) pNativeCode->Put( (char)0xDD ); 973 973 else if(type==DEF_SINGLE) pNativeCode->Put( (char)0xD9 ); 974 else SetError(300,NULL,cp);974 else compiler.errorMessenger.Output(300,NULL,cp); 975 975 976 976 if(base_reg==REG_ESP){ … … 993 993 if(type==DEF_DOUBLE) pNativeCode->Put( (char)0xDD ); 994 994 else if(type==DEF_SINGLE) pNativeCode->Put( (char)0xD9 ); 995 else SetError(300,NULL,cp);995 else compiler.errorMessenger.Output(300,NULL,cp); 996 996 997 997 //オペコード、レジスタ … … 1027 1027 if(type==DEF_DOUBLE) pNativeCode->Put( (char)0xDD ); 1028 1028 else if(type==DEF_SINGLE) pNativeCode->Put( (char)0xD9 ); 1029 else SetError(300,NULL,cp);1029 else compiler.errorMessenger.Output(300,NULL,cp); 1030 1030 1031 1031 int reg=0; … … 1069 1069 if(type==DEF_DOUBLE) pNativeCode->Put( (char)0xDD ); 1070 1070 else if(type==DEF_SINGLE) pNativeCode->Put( (char)0xD9 ); 1071 else SetError(300,NULL,cp);1071 else compiler.errorMessenger.Output(300,NULL,cp); 1072 1072 1073 1073 if(base_reg==REG_ESP){ … … 1090 1090 if(type==DEF_DOUBLE) pNativeCode->Put( (char)0xDD ); 1091 1091 else if(type==DEF_SINGLE) pNativeCode->Put( (char)0xD9 ); 1092 else SetError(300,NULL,cp);1092 else compiler.errorMessenger.Output(300,NULL,cp); 1093 1093 1094 1094 //オペコード、レジスタ … … 1124 1124 if(type==DEF_DOUBLE) pNativeCode->Put( (char)0xDD ); 1125 1125 else if(type==DEF_SINGLE) pNativeCode->Put( (char)0xD9 ); 1126 else SetError(300,NULL,cp);1126 else compiler.errorMessenger.Output(300,NULL,cp); 1127 1127 1128 1128 int reg=0; … … 1182 1182 } 1183 1183 else{ 1184 SetError();1184 compiler.errorMessenger.OutputFatalError(); 1185 1185 } 1186 1186 } -
trunk/ab5.0/abdev/BasicCompiler_Common/BasicCompiler.cpp
r461 r465 299 299 SendMessage(hwnd,EM_GETSEL,(WPARAM)&pos,0); 300 300 i=(int)SendMessage(hwnd,EM_LINEFROMCHAR,pos,0); 301 ShowErrorLine(pErrorInfo[i].line,pErrorInfo[i].FileName);301 compiler.errorMessenger.ShowErrorLine( i ); 302 302 303 303 StartPos=(int)SendMessage(hwnd,EM_LINEINDEX,i,0); … … 808 808 lstrcat(BasicCurDir,temporary); 809 809 810 //エラーリスト情報を初期化811 pErrorInfo=(ERRORINFO *)HeapAlloc(hHeap,0,1);812 ErrorNum=0;813 CompileMsgNum=0;814 WarningNum=0;815 bError=0;816 817 810 if(bClipCompileView){ 818 811 //ProjectEditor埋め込み型インターフェイス … … 859 852 } 860 853 861 //エラーリスト情報を解放862 for(i=0;i<ErrorNum;i++){863 if(pErrorInfo[i].FileName) HeapDefaultFree(pErrorInfo[i].FileName);864 }865 HeapDefaultFree(pErrorInfo);866 867 854 //不揮発性データを保存 868 855 pobj_nv->save(); -
trunk/ab5.0/abdev/BasicCompiler_Common/BasicCompiler.h
r459 r465 22 22 DWORD ImageBase; 23 23 24 ERRORINFO *pErrorInfo;25 int ErrorNum;26 int CompileMsgNum;27 int WarningNum;28 BOOL bError;29 24 char **SynonymErrorWords; 30 25 int SynonymErrorNum; -
trunk/ab5.0/abdev/BasicCompiler_Common/CommandFormat.cpp
r206 r465 28 28 for(i2=0;;i++,i2++){ 29 29 if(Parameter[i]=='\0'){ 30 SetError(1,NULL,nowLine);30 compiler.errorMessenger.Output(1,NULL,nowLine); 31 31 return; 32 32 } … … 41 41 else if(lstrcmpi(temporary,"append")==0) lstrcat(buffer,",3"); 42 42 else{ 43 SetError(1,NULL,nowLine);43 compiler.errorMessenger.Output(1,NULL,nowLine); 44 44 return; 45 45 } … … 77 77 else{ 78 78 if(Parameter[0]!='('){ 79 SetError(10,"Line",nowLine);79 compiler.errorMessenger.Output(10,"Line",nowLine); 80 80 return; 81 81 } … … 95 95 96 96 if(Parameter[i+1]!='-'){ 97 SetError(10,"Line",nowLine);97 compiler.errorMessenger.Output(10,"Line",nowLine); 98 98 return; 99 99 } … … 109 109 110 110 if(Parameter[i]!='('){ 111 SetError(10,"Line",nowLine);111 compiler.errorMessenger.Output(10,"Line",nowLine); 112 112 return; 113 113 } … … 131 131 } 132 132 else if(Parameter[i+1]!=','){ 133 SetError(10,"Line",nowLine);133 compiler.errorMessenger.Output(10,"Line",nowLine); 134 134 return; 135 135 } … … 149 149 else if(lstrcmpi(temporary,"bf")==0) lstrcat(buffer,",2"); 150 150 else{ 151 SetError(10,"Line",nowLine);151 compiler.errorMessenger.Output(10,"Line",nowLine); 152 152 return; 153 153 } … … 160 160 i=GetOneParameter(Parameter,i,temporary); //第7パラメータ取得 161 161 if(Parameter[i-1]==','){ 162 SetError(10,"Line",nowLine);162 compiler.errorMessenger.Output(10,"Line",nowLine); 163 163 return; 164 164 } … … 174 174 175 175 if(Parameter[0]!='('){ 176 SetError(10,"Circle",nowLine);176 compiler.errorMessenger.Output(10,"Circle",nowLine); 177 177 return; 178 178 } … … 191 191 i++; 192 192 if(Parameter[i]!=','){ 193 SetError(10,"Circle",nowLine);193 compiler.errorMessenger.Output(10,"Circle",nowLine); 194 194 return; 195 195 } … … 243 243 } 244 244 else{ 245 SetError(10,"Circle",nowLine);245 compiler.errorMessenger.Output(10,"Circle",nowLine); 246 246 return; 247 247 } … … 253 253 lstrcat(buffer,temporary); 254 254 if(Parameter[i-1]==','){ 255 SetError(10,"Circle",nowLine);255 compiler.errorMessenger.Output(10,"Circle",nowLine); 256 256 return; 257 257 } … … 268 268 269 269 if(Parameter[0]!='('){ 270 SetError(10,"PSet",nowLine);270 compiler.errorMessenger.Output(10,"PSet",nowLine); 271 271 return; 272 272 } … … 286 286 else if(Parameter[i+1]=='\0') lstrcat(buffer,",7"); 287 287 else{ 288 SetError(10,"PSet",nowLine);288 compiler.errorMessenger.Output(10,"PSet",nowLine); 289 289 return; 290 290 } … … 296 296 297 297 if(Parameter[0]!='('){ 298 SetError(10,"Paint",nowLine);298 compiler.errorMessenger.Output(10,"Paint",nowLine); 299 299 return; 300 300 } … … 311 311 } 312 312 if(Parameter[i+1]!=','){ 313 SetError(10,"Paint",nowLine);313 compiler.errorMessenger.Output(10,"Paint",nowLine); 314 314 return; 315 315 } -
trunk/ab5.0/abdev/BasicCompiler_Common/Compile.cpp
r461 r465 87 87 if( !pTypeParameterBaseClassNames ) 88 88 { 89 SetError();89 compiler.errorMessenger.OutputFatalError(); 90 90 } 91 91 pTypeParameterBaseClassNames->clear(); … … 113 113 { 114 114 extern int cp; 115 SetError(1,NULL,cp);115 compiler.errorMessenger.Output(1,NULL,cp); 116 116 } 117 117 typeParameters.push_back( temporary ); … … 129 129 { 130 130 extern int cp; 131 SetError(1,NULL,cp);131 compiler.errorMessenger.Output(1,NULL,cp); 132 132 } 133 133 } … … 150 150 { 151 151 extern int cp; 152 SetError(1,NULL,cp);152 compiler.errorMessenger.Output(1,NULL,cp); 153 153 } 154 154 } … … 181 181 char temporary[64]; 182 182 GetDefaultNameFromES( cStatement, temporary ); 183 SetError( 22, temporary, pos );183 compiler.errorMessenger.Output( 22, temporary, pos ); 184 184 return -1; 185 185 } … … 247 247 if( UserProc::IsLocalAreaCompiling() ){ 248 248 // ローカル領域をコンパイルしているとき 249 SetError(65,"TypeDef",cp );249 compiler.errorMessenger.Output(65,"TypeDef",cp ); 250 250 } 251 251 … … 256 256 if( UserProc::IsLocalAreaCompiling() ){ 257 257 // ローカル領域をコンパイルしているとき 258 SetError(65,"Delegate",cp );258 compiler.errorMessenger.Output(65,"Delegate",cp ); 259 259 } 260 260 … … 273 273 LexicalScope *pScope = compiler.codeGenerator.lexicalScopes.SearchScope( LexicalScope::SCOPE_TYPE_WHILE ); 274 274 if( !pScope ){ 275 SetError(12,"Exit While",cp);275 compiler.errorMessenger.Output(12,"Exit While",cp); 276 276 return; 277 277 } … … 283 283 LexicalScope *pScope = compiler.codeGenerator.lexicalScopes.SearchScope( LexicalScope::SCOPE_TYPE_FOR ); 284 284 if( !pScope ){ 285 SetError(12,"Exit For",cp);285 compiler.errorMessenger.Output(12,"Exit For",cp); 286 286 return; 287 287 } … … 293 293 LexicalScope *pScope = compiler.codeGenerator.lexicalScopes.SearchScope( LexicalScope::SCOPE_TYPE_DO ); 294 294 if( !pScope ){ 295 SetError(12,"Exit Do",cp);295 compiler.errorMessenger.Output(12,"Exit Do",cp); 296 296 return; 297 297 } … … 331 331 case ESC_ENDWITH: 332 332 if(WithInfo.num<=0){ 333 SetError(12,"End With",cp);333 compiler.errorMessenger.Output(12,"End With",cp); 334 334 return; 335 335 } … … 340 340 if( UserProc::IsLocalAreaCompiling() ){ 341 341 // ローカル領域をコンパイルしているとき 342 SetError(65,"Declare",cp );342 compiler.errorMessenger.Output(65,"Declare",cp ); 343 343 } 344 344 break; … … 349 349 case ESC_ENDNAMESPACE: 350 350 if( compiler.GetNamespaceSupporter().GetLivingNamespaceScopes().size() <= 0 ){ 351 SetError(12,"End Namespace",cp);351 compiler.errorMessenger.Output(12,"End Namespace",cp); 352 352 } 353 353 compiler.GetNamespaceSupporter().GetLivingNamespaceScopes().pop_back(); … … 380 380 char temporary[64]; 381 381 GetDefaultNameFromES(Command[1],temporary); 382 SetError(30,temporary,cp);382 compiler.errorMessenger.Output(30,temporary,cp); 383 383 break; 384 384 } … … 502 502 while(!(basbuf[cp]==1&&basbuf[cp+1]==ESC_ENDSUB)){ 503 503 if(basbuf[cp]=='\0'){ 504 SetError(22,"Sub",i2);504 compiler.errorMessenger.Output(22,"Sub",i2); 505 505 break; 506 506 } … … 516 516 while(!(basbuf[cp]==1&&basbuf[cp+1]==ESC_ENDFUNCTION)){ 517 517 if(basbuf[cp]=='\0'){ 518 SetError(22,"Function",i2);518 compiler.errorMessenger.Output(22,"Function",i2); 519 519 break; 520 520 } … … 530 530 while(!(basbuf[cp]==1&&basbuf[cp+1]==ESC_ENDMACRO)){ 531 531 if(basbuf[cp]=='\0'){ 532 SetError(22,"Macro",i2);532 compiler.errorMessenger.Output(22,"Macro",i2); 533 533 break; 534 534 } … … 544 544 while(!(basbuf[cp]==1&&basbuf[cp+1]==ESC_ENDTYPE)){ 545 545 if(basbuf[cp]=='\0'){ 546 SetError(22,"Type",i2);546 compiler.errorMessenger.Output(22,"Type",i2); 547 547 break; 548 548 } … … 558 558 while(!(basbuf[cp]==1&&basbuf[cp+1]==ESC_ENDCLASS)){ 559 559 if(basbuf[cp]=='\0'){ 560 SetError(22,"Class",i2);560 compiler.errorMessenger.Output(22,"Class",i2); 561 561 break; 562 562 } … … 572 572 while(!(basbuf[cp]==1&&basbuf[cp+1]==ESC_ENDINTERFACE)){ 573 573 if(basbuf[cp]=='\0'){ 574 SetError(22,"Interface",i2);574 compiler.errorMessenger.Output(22,"Interface",i2); 575 575 break; 576 576 } … … 686 686 } 687 687 if(Return_Sequence){ 688 SetError(12,temporary,cp);688 compiler.errorMessenger.Output(12,temporary,cp); 689 689 break; 690 690 } … … 703 703 basbuf[cp+1]==ESC_ENUM){ 704 704 GetDefaultNameFromES(basbuf[cp+1],temp3); 705 SetError(12,temp3,cp);705 compiler.errorMessenger.Output(12,temp3,cp); 706 706 } 707 707 } … … 718 718 basbuf[cp+1]==ESC_ENUM)){ 719 719 GetDefaultNameFromES(basbuf[cp+1],temp3); 720 SetError(12,temp3,cp);720 compiler.errorMessenger.Output(12,temp3,cp); 721 721 } 722 722 } … … 774 774 switch(Return_Command){ 775 775 case COM_WEND: 776 SetError(4,"\"While\" - \"Wend\" ",ScopeStart);776 compiler.errorMessenger.Output(4,"\"While\" - \"Wend\" ",ScopeStart); 777 777 break; 778 778 case COM_NEXT: 779 SetError(4,"\"For\" - \"Next\" ",ScopeStart);779 compiler.errorMessenger.Output(4,"\"For\" - \"Next\" ",ScopeStart); 780 780 break; 781 781 case COM_LOOP: 782 SetError(4,"\"Do\" - \"Loop\" ",ScopeStart);782 compiler.errorMessenger.Output(4,"\"Do\" - \"Loop\" ",ScopeStart); 783 783 break; 784 784 } 785 785 switch(Return_Sequence){ 786 786 case ESC_ENDSUB: 787 SetError(4,"\"Sub\" - \"End Sub\" ",ScopeStart);787 compiler.errorMessenger.Output(4,"\"Sub\" - \"End Sub\" ",ScopeStart); 788 788 break; 789 789 case ESC_ENDFUNCTION: 790 SetError(4,"\"Function\" - \"End Function\" ",ScopeStart);790 compiler.errorMessenger.Output(4,"\"Function\" - \"End Function\" ",ScopeStart); 791 791 break; 792 792 case ESC_ENDMACRO: 793 SetError(4,"\"Macro\" - \"End Macro\" ",ScopeStart);793 compiler.errorMessenger.Output(4,"\"Macro\" - \"End Macro\" ",ScopeStart); 794 794 break; 795 795 case ESC_ENDIF: 796 SetError(22,"If",ScopeStart);796 compiler.errorMessenger.Output(22,"If",ScopeStart); 797 797 break; 798 798 } -
trunk/ab5.0/abdev/BasicCompiler_Common/Intermediate_Step1.cpp
r461 r465 130 130 if(bracket[PareNum]!=0||PareNum<0){ 131 131 //"カッコ \'( )\'" 132 SetError(4,STRING_PARENTHESIS,i);132 compiler.errorMessenger.Output(4,STRING_PARENTHESIS,i); 133 133 return; 134 134 } … … 138 138 if(bracket[PareNum]!=1||PareNum<0){ 139 139 //"カッコ \'( )\'" 140 SetError(4,STRING_PARENTHESIS,i);140 compiler.errorMessenger.Output(4,STRING_PARENTHESIS,i); 141 141 return; 142 142 } … … 146 146 147 147 //"カッコ \'( )\'" 148 if(PareNum!=0) SetError(4,STRING_PARENTHESIS,i);149 150 if(IsStr!=0) SetError(5,NULL,i);148 if(PareNum!=0) compiler.errorMessenger.Output(4,STRING_PARENTHESIS,i); 149 150 if(IsStr!=0) compiler.errorMessenger.Output(5,NULL,i); 151 151 if(buffer[i]=='\0') break; 152 152 PareNum=0; … … 161 161 //全角スペース 162 162 if(buffer[i]==(char)0x81&&buffer[i+1]==(char)0x40) 163 SetError(20,NULL,i);163 compiler.errorMessenger.Output(20,NULL,i); 164 164 165 165 //その他の全角文字 166 else SetError(8,NULL,i);166 else compiler.errorMessenger.Output(8,NULL,i); 167 167 sw=1; 168 168 } … … 259 259 while(basbuf[i2]==' '||basbuf[i2]=='\t') i2++; 260 260 if(basbuf[i2]!='\"'){ 261 SetError(1,NULL,i2);261 compiler.errorMessenger.Output(1,NULL,i2); 262 262 return; 263 263 } … … 317 317 while(basbuf[i2]==' '||basbuf[i2]=='\t') i2++; 318 318 if(basbuf[i2]!='\"'){ 319 SetError(1,NULL,i2);319 compiler.errorMessenger.Output(1,NULL,i2); 320 320 return; 321 321 } … … 1021 1021 while(buffer[i]==' '||buffer[i]=='\t') i++; 1022 1022 if(buffer[i]!='('){ 1023 SetError(1,NULL,i);1023 compiler.errorMessenger.Output(1,NULL,i); 1024 1024 return; 1025 1025 } … … 1047 1047 while(buffer[i]==' '||buffer[i]=='\t') i++; 1048 1048 if(buffer[i]!='='){ 1049 SetError(1,NULL,i);1049 compiler.errorMessenger.Output(1,NULL,i); 1050 1050 break; 1051 1051 } … … 1243 1243 if(FuncNum!=0){ 1244 1244 if(FuncType==ESC_FUNCTION) 1245 SetError(54,"End Function",FuncPtr);1245 compiler.errorMessenger.Output(54,"End Function",FuncPtr); 1246 1246 else if(FuncType==ESC_SUB) 1247 SetError(54,"End Sub",FuncPtr);1247 compiler.errorMessenger.Output(54,"End Sub",FuncPtr); 1248 1248 else if(FuncType==ESC_MACRO) 1249 SetError(54,"End Macro",FuncPtr);1249 compiler.errorMessenger.Output(54,"End Macro",FuncPtr); 1250 1250 return; 1251 1251 } … … 1265 1265 if(FuncNum!=0||i3!=FuncType){ 1266 1266 if(basbuf[i2+1]==ESC_ENDFUNCTION) 1267 SetError(12,"End Function",i2);1267 compiler.errorMessenger.Output(12,"End Function",i2); 1268 1268 else if(basbuf[i2+1]==ESC_ENDSUB) 1269 SetError(12,"End Sub",i2);1269 compiler.errorMessenger.Output(12,"End Sub",i2); 1270 1270 else if(basbuf[i2+1]==ESC_ENDMACRO) 1271 SetError(12,"End Macro",i2);1271 compiler.errorMessenger.Output(12,"End Macro",i2); 1272 1272 return; 1273 1273 } -
trunk/ab5.0/abdev/BasicCompiler_Common/Intermediate_Step2.cpp
r461 r465 21 21 } 22 22 if(!IsVariableChar(buffer[i])){ 23 SetError(1,NULL,i);23 compiler.errorMessenger.Output(1,NULL,i); 24 24 break; 25 25 } … … 28 28 29 29 if(buffer[i]=='\0'){ 30 SetError(22,"Enum",cp);30 compiler.errorMessenger.Output(22,"Enum",cp); 31 31 return; 32 32 } … … 51 51 if(temporary[0]=='\0'){ 52 52 if(buffer[i]=='\0'){ 53 SetError(22,"Enum",cp);53 compiler.errorMessenger.Output(22,"Enum",cp); 54 54 break; 55 55 } … … 109 109 else if( basbuf[i] == 1 && basbuf[i+1] == ESC_ENDNAMESPACE ){ 110 110 if( namespaceScopes.size() <= 0 ){ 111 SetError(12, "End Namespace", i );111 compiler.errorMessenger.Output(12, "End Namespace", i ); 112 112 } 113 113 else{ -
trunk/ab5.0/abdev/BasicCompiler_Common/MakeExe.cpp
r461 r465 43 43 extern HANDLE hHeap; 44 44 extern char *basbuf; 45 extern int ErrorNum;46 45 extern BOOL bStopCompile; 47 46 extern HWND hMainDlg; … … 71 70 compiler.GetObjectModule().GetSources().push_back( BasicSource() ); 72 71 if( !compiler.GetObjectModule().GetCurrentSource().ReadFile( SourceFileName ) ){ 73 SetError(201,SourceFileName,-1);72 compiler.errorMessenger.Output(201,SourceFileName,-1); 74 73 goto EndCompile; 75 74 } … … 80 79 else ImageBase=0x00400000; 81 80 82 extern BOOL bError; 83 if(bError||bStopCompile) goto EndCompile; 81 if( compiler.errorMessenger.HasError() || bStopCompile ) goto EndCompile; 84 82 85 83 … … 89 87 90 88 //"最適化中..." 91 CompileMessage(STRING_COMPILE_OPTIMIZING);89 compiler.messenger.Output( STRING_COMPILE_OPTIMIZING ); 92 90 93 91 //カッコを相互チェック(ダブルクォートチェックチェックを含む) 94 92 CheckParenthesis(basbuf); 95 93 96 if(bError||bStopCompile) goto EndCompile; 94 if( compiler.errorMessenger.HasError() || bStopCompile ) 95 { 96 goto EndCompile; 97 } 97 98 98 99 //コンパイルダイアログのプログレスバーを上げる … … 117 118 //CheckPareCommand(); 118 119 119 if(bError||bStopCompile) goto EndCompile; 120 if( compiler.errorMessenger.HasError() || bStopCompile ) 121 { 122 goto EndCompile; 123 } 120 124 121 125 //コンパイルダイアログのプログレスバーを上げる … … 136 140 SynonymErrorWords=0; 137 141 138 if(bError||bStopCompile){ 142 if( compiler.errorMessenger.HasError() || bStopCompile ) 143 { 139 144 //定数に関する情報を解放 140 145 goto EndCompile; … … 175 180 if( compiler.staticLibraries.back()->Read( coreFilePath ) ) 176 181 { 177 CompileMessage( ((string)"\"" + path.GetFileName() + path.GetExt() + "\" を読み込みました。").c_str() );182 compiler.messenger.Output( ((string)"\"" + path.GetFileName() + path.GetExt() + "\" を読み込みました。").c_str() ); 178 183 } 179 184 else 180 185 { 181 CompileMessage( ((string)"\"" + path.GetFileName() + path.GetExt() + "\" ファイルが壊れています。").c_str() );186 compiler.messenger.Output( ((string)"\"" + path.GetFileName() + path.GetExt() + "\" ファイルが壊れています。").c_str() ); 182 187 isSuccessfulLoadStaticLinkLibrary = false; 183 188 } … … 185 190 else 186 191 { 187 CompileMessage( ((string)"\"" + path.GetFileName() + path.GetExt() + "\" ファイルが存在しません。").c_str() );192 compiler.messenger.Output( ((string)"\"" + path.GetFileName() + path.GetExt() + "\" ファイルが存在しません。").c_str() ); 188 193 isSuccessfulLoadStaticLinkLibrary = false; 189 194 } … … 198 203 if( compiler.staticLibraries.back()->Read( filePath ) ) 199 204 { 200 CompileMessage( ((string)"\"" + path.GetFileName() + path.GetExt() + "\" を読み込みました。").c_str() );205 compiler.messenger.Output( ((string)"\"" + path.GetFileName() + path.GetExt() + "\" を読み込みました。").c_str() ); 201 206 } 202 207 else 203 208 { 204 CompileMessage( ((string)"\"" + path.GetFileName() + path.GetExt() + "\" ファイルが壊れています。").c_str() );209 compiler.messenger.Output( ((string)"\"" + path.GetFileName() + path.GetExt() + "\" ファイルが壊れています。").c_str() ); 205 210 isSuccessfulLoadStaticLinkLibrary = false; 206 211 } … … 208 213 else 209 214 { 210 CompileMessage( ((string)"\"" + path.GetFileName() + path.GetExt() + "\" ファイルが存在しません。").c_str() );215 compiler.messenger.Output( ((string)"\"" + path.GetFileName() + path.GetExt() + "\" ファイルが存在しません。").c_str() ); 211 216 isSuccessfulLoadStaticLinkLibrary = false; 212 217 } … … 225 230 226 231 //"コンパイル中..." 227 CompileMessage(STRING_COMPILE_COMPILING);232 compiler.messenger.Output(STRING_COMPILE_COMPILING); 228 233 229 234 Compile(); … … 248 253 249 254 //"コンパイルはユーザーにより中断されました。" 250 CompileMessage(STRING_COMPILE_STOP);255 compiler.messenger.Output(STRING_COMPILE_STOP); 251 256 } 252 257 else{ 253 extern int CompileMsgNum;254 258 extern int WarningNum; 255 if(bError==0){ 259 if( !compiler.errorMessenger.HasError() ) 260 { 256 261 //"コンパイルは正常に完了しました(エラー:%d、警告:%d)" 257 262 sprintf(temp2, 258 263 STRING_COMPILE_SUCCESS, 259 ErrorNum-CompileMsgNum-WarningNum,260 WarningNum,264 compiler.errorMessenger.GetErrorCount(), 265 compiler.errorMessenger.GetWarningCount(), 261 266 ((double)(GetTickCount() - beforeTickCount))/1000 262 267 ); 263 268 } 264 else{ 269 else 270 { 265 271 //"コンパイルは中断されました(エラー:%d、警告:%d)" 266 sprintf(temp2,STRING_COMPILE_ERROR,ErrorNum-CompileMsgNum-WarningNum,WarningNum); 267 } 268 269 CompileMessage(""); 270 CompileMessage("-----------------------------------------------------"); 271 CompileMessage(temp2); 272 sprintf(temp2,STRING_COMPILE_ERROR, 273 compiler.errorMessenger.GetErrorCount(), 274 compiler.errorMessenger.GetWarningCount() ); 275 } 276 277 compiler.messenger.Output( "" ); 278 compiler.messenger.Output( "-----------------------------------------------------" ); 279 compiler.messenger.Output( temp2 ); 272 280 } 273 281 … … 282 290 int MainThread(DWORD dummy){ 283 291 extern BOOL bDebugRun; 284 extern int bError;285 292 286 293 if(bDebugRun){ … … 296 303 297 304 //デバッグ実行 298 if(bError==0) DebugProgram(); 305 if( !compiler.errorMessenger.HasError() ) 306 { 307 DebugProgram(); 308 } 299 309 } 300 310 else{ -
trunk/ab5.0/abdev/BasicCompiler_Common/NumOpe_GetType.cpp
r461 r465 61 61 if(!type){ 62 62 extern int cp; 63 SetError(300,NULL,cp);63 compiler.errorMessenger.Output(300,NULL,cp); 64 64 } 65 65 … … 86 86 if(IsRealNumberType(type[sp-2])||IsRealNumberType(type[sp-1])){ 87 87 //いずれかの項が実数のとき 88 SetError(45,temporary,cp);88 compiler.errorMessenger.Output(45,temporary,cp); 89 89 return 0; 90 90 } … … 92 92 //As以外の演算子に型名が指定されていないかをチェック 93 93 if((type[sp-2]&FLAG_CAST)||(type[sp-1]&FLAG_CAST)){ 94 SetError(48,temporary,cp);94 compiler.errorMessenger.Output(48,temporary,cp); 95 95 return 0; 96 96 } … … 100 100 if(IsRealNumberType(type[sp-1])){ 101 101 //実数のとき 102 SetError(45,temporary,cp);102 compiler.errorMessenger.Output(45,temporary,cp); 103 103 return 0; 104 104 } … … 106 106 //As以外の演算子に型名が指定されていないかをチェック 107 107 if(type[sp-1]&FLAG_CAST){ 108 SetError(48,temporary,cp);108 compiler.errorMessenger.Output(48,temporary,cp); 109 109 return 0; 110 110 } … … 125 125 //As以外の演算子に型名が指定されていないかをチェック 126 126 if((type[sp-2]&FLAG_CAST)||(type[sp-1]&FLAG_CAST)){ 127 SetError(48,temporary,cp);127 compiler.errorMessenger.Output(48,temporary,cp); 128 128 return 0; 129 129 } … … 143 143 //As以外の演算子に型名が指定されていないかをチェック 144 144 if((type[sp-2]&FLAG_CAST)||(type[sp-1]&FLAG_CAST)){ 145 SetError(48,temporary,cp);145 compiler.errorMessenger.Output(48,temporary,cp); 146 146 return 0; 147 147 } … … 154 154 if(IsRealNumberType(type[sp-2])||IsRealNumberType(type[sp-1])){ 155 155 //いずれかの項が実数のとき 156 SetError(45,temporary,cp);156 compiler.errorMessenger.Output(45,temporary,cp); 157 157 return 0; 158 158 } … … 160 160 //As以外の演算子に型名が指定されていないかをチェック 161 161 if((type[sp-2]&FLAG_CAST)||(type[sp-1]&FLAG_CAST)){ 162 SetError(48,temporary,cp);162 compiler.errorMessenger.Output(48,temporary,cp); 163 163 return 0; 164 164 } … … 168 168 if((type[sp-1]&FLAG_CAST)==0){ 169 169 //型名が指定されていないときはエラー 170 SetError(47,NULL,cp);170 compiler.errorMessenger.Output(47,NULL,cp); 171 171 return 0; 172 172 } … … 176 176 if(type[sp-1]&FLAG_CAST){ 177 177 //型名が指定されていないときはエラー 178 SetError(47,NULL,cp);178 compiler.errorMessenger.Output(47,NULL,cp); 179 179 return 0; 180 180 } … … 184 184 //As以外の演算子に型名が指定されていないかをチェック 185 185 if(type[sp-1]&FLAG_CAST){ 186 SetError(48,temporary,cp);186 compiler.errorMessenger.Output(48,temporary,cp); 187 187 return 0; 188 188 } … … 279 279 if( !compiler.StringToType( TypeName, resultType ) ) 280 280 { 281 SetError(3,TypeName,cp);281 compiler.errorMessenger.Output(3,TypeName,cp); 282 282 return false; 283 283 } … … 285 285 if( !resultType.IsObject() ) 286 286 { 287 SetError(121,NULL,cp);287 compiler.errorMessenger.Output(121,NULL,cp); 288 288 return false; 289 289 } … … 326 326 { 327 327 if( !GetReturnTypeOfIndexerGetterProc( classType, resultType ) ){ 328 SetError(1,NULL,cp);328 compiler.errorMessenger.Output(1,NULL,cp); 329 329 return false; 330 330 } … … 509 509 //閉じカッコ")"に続く文字がNULLでないとき 510 510 if(termFull[i2+1+i4+1]!='\0'){ 511 SetError(42,NULL,cp);511 compiler.errorMessenger.Output(42,NULL,cp); 512 512 } 513 513 … … 541 541 542 542 //閉じカッコ")"に続く文字がNULLでないときはエラーにする 543 if(termFull[i2+1+i4+1]!='\0') SetError(42,NULL,cp);543 if(termFull[i2+1+i4+1]!='\0') compiler.errorMessenger.Output(42,NULL,cp); 544 544 545 545 //マクロ関数の場合 … … 571 571 if( classType.IsObject() ){ 572 572 if( !GetReturnTypeOfIndexerGetterProc( classType, resultType ) ){ 573 SetError(1,NULL,cp);573 compiler.errorMessenger.Output(1,NULL,cp); 574 574 return false; 575 575 } … … 649 649 650 650 if(expression[0]=='\0'){ 651 SetError(1,NULL,cp);651 compiler.errorMessenger.Output(1,NULL,cp); 652 652 return false; 653 653 } … … 765 765 } 766 766 else{ 767 SetError(3, term, cp );767 compiler.errorMessenger.Output(3, term, cp ); 768 768 goto error; 769 769 } … … 861 861 } 862 862 else{ 863 SetError(1,NULL,0);863 compiler.errorMessenger.Output(1,NULL,0); 864 864 goto error; 865 865 } … … 876 876 877 877 if(GetSubHash(VarName,0)){ 878 SetError();878 compiler.errorMessenger.OutputFatalError(); 879 879 Type tempType; 880 880 GetReturnTypeOfPropertyMethod(term,NULL,tempType); … … 894 894 //該当する識別子が見当たらないときはエラー扱いにする 895 895 bError=1; 896 SetError(3,term,cp);896 compiler.errorMessenger.Output(3,term,cp); 897 897 type_stack[sp]=DEF_DOUBLE; 898 898 } … … 984 984 if( PTR_LEVEL( type_stack[sp-1] ) <= 0 ){ 985 985 //ポインタ型ではないとき 986 SetError( 3, NULL, cp );986 compiler.errorMessenger.Output( 3, NULL, cp ); 987 987 goto error; 988 988 } … … 996 996 997 997 if(sp!=1){ 998 SetError(1,NULL,cp);998 compiler.errorMessenger.Output(1,NULL,cp); 999 999 goto error; 1000 1000 } -
trunk/ab5.0/abdev/BasicCompiler_Common/Object.cpp
r331 r465 25 25 const UserProc *pUserProc = GetMethodHash(ObjectName,type.GetClass().GetName().c_str(),Parameter); 26 26 if(!pUserProc){ 27 if(Parameter[0]) SetError(113,type.GetClass().GetName().c_str(),cp);27 if(Parameter[0]) compiler.errorMessenger.Output(113,type.GetClass().GetName().c_str(),cp); 28 28 return; 29 29 } … … 102 102 i+=i2; 103 103 if(expression[i]!='\0'){ 104 SetError(42,NULL,cp);104 compiler.errorMessenger.Output(42,NULL,cp); 105 105 return false; 106 106 } … … 115 115 116 116 if( !compiler.StringToType( typeName, resultType ) ){ 117 SetError(3,typeName,cp);117 compiler.errorMessenger.Output(3,typeName,cp); 118 118 return false; 119 119 } … … 124 124 //////////////////////// 125 125 126 SetError(121,NULL,cp);126 compiler.errorMessenger.Output(121,NULL,cp); 127 127 return false; 128 128 } -
trunk/ab5.0/abdev/BasicCompiler_Common/OldStatement.cpp
r290 r465 41 41 if(Parameter[i2+1]==';') lstrcpy(buffer+i2,"? \""); 42 42 else if(Parameter[i2+1]==',') lstrcpy(buffer+i2,"\""); 43 else SetError(10,"Input",cp);43 else compiler.errorMessenger.Output(10,"Input",cp); 44 44 i2+=2; 45 45 } … … 57 57 if(Parameter[i2+1]==';') lstrcpy(buffer+i2,"? \""); 58 58 else if(Parameter[i2+1]==',') lstrcpy(buffer+i2,"\""); 59 else SetError(10,"Input",cp);59 else compiler.errorMessenger.Output(10,"Input",cp); 60 60 i2+=2; 61 61 } … … 89 89 } 90 90 if(temporary[0]=='\0'){ 91 SetError(10,"Input",cp);91 compiler.errorMessenger.Output(10,"Input",cp); 92 92 return; 93 93 } … … 122 122 else pUserProc=GetSubHash("INPUT_FromPrompt"); 123 123 if(!pUserProc){ 124 SetError(3,"Input",cp);124 compiler.errorMessenger.Output(3,"Input",cp); 125 125 return; 126 126 } … … 189 189 } 190 190 if(temporary[0]=='\0'){ 191 SetError(10,"Print",cp);191 compiler.errorMessenger.Output(10,"Print",cp); 192 192 return; 193 193 } … … 224 224 else pUserProc=GetSubHash("PRINTUSING_ToPrompt"); 225 225 if(!pUserProc){ 226 SetError(3,"Print",cp);226 compiler.errorMessenger.Output(3,"Print",cp); 227 227 return; 228 228 } … … 328 328 else pUserProc=GetSubHash("PRINT_ToPrompt"); 329 329 if(!pUserProc){ 330 SetError(3,"Print",cp);330 compiler.errorMessenger.Output(3,"Print",cp); 331 331 return; 332 332 } -
trunk/ab5.0/abdev/BasicCompiler_Common/ParamImpl.cpp
r424 r465 44 44 if( buffer[i] == '\0' ) 45 45 { 46 SetError();46 compiler.errorMessenger.OutputFatalError(); 47 47 break; 48 48 } … … 236 236 if( pUserProc ){ 237 237 if( isEnabledReturnType ){ 238 SetError(52,name,cp);238 compiler.errorMessenger.Output(52,name,cp); 239 239 return NULL; 240 240 } … … 267 267 if( pUserProc ) 268 268 { 269 SetError(52,name,cp);269 compiler.errorMessenger.Output(52,name,cp); 270 270 return NULL; 271 271 } … … 278 278 if( !pUserProc ) 279 279 { 280 SetError();280 compiler.errorMessenger.OutputFatalError(); 281 281 } 282 282 … … 318 318 if( params.size() == 0 || params[params.size()-1]->GetBasicType()!=DEF_ELLIPSE ){ 319 319 //パラメータが多すぎるとき 320 SetError(10,procName,cp);320 compiler.errorMessenger.Output(10,procName,cp); 321 321 return false; 322 322 } … … 329 329 330 330 //パラメータが少なすぎるとき 331 SetError(10,procName,cp);331 compiler.errorMessenger.Output(10,procName,cp); 332 332 return false; 333 333 } -
trunk/ab5.0/abdev/BasicCompiler_Common/RSrcSection.cpp
r206 r465 108 108 hFile=CreateFile(pCursorResourceInfo[i3].FileName,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); 109 109 if(hFile==INVALID_HANDLE_VALUE){ 110 SetError(23,pCursorResourceInfo[i3].FileName,-1);110 compiler.errorMessenger.Output(23,pCursorResourceInfo[i3].FileName,-1); 111 111 sw=1; 112 112 continue; … … 127 127 hFile=CreateFile(pBitmapResourceInfo[i3].FileName,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); 128 128 if(hFile==INVALID_HANDLE_VALUE){ 129 SetError(23,pBitmapResourceInfo[i3].FileName,-1);129 compiler.errorMessenger.Output(23,pBitmapResourceInfo[i3].FileName,-1); 130 130 sw=1; 131 131 continue; … … 138 138 hFile=CreateFile(pIconResourceInfo[i3].FileName,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); 139 139 if(hFile==INVALID_HANDLE_VALUE){ 140 SetError(23,pIconResourceInfo[i3].FileName,-1);140 compiler.errorMessenger.Output(23,pIconResourceInfo[i3].FileName,-1); 141 141 sw=1; 142 142 continue; … … 645 645 hFile=CreateFile(pCursorResourceInfo[i3].FileName,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); 646 646 if(hFile==INVALID_HANDLE_VALUE){ 647 SetError(23,pCursorResourceInfo[i3].FileName,-1);647 compiler.errorMessenger.Output(23,pCursorResourceInfo[i3].FileName,-1); 648 648 return buffer; 649 649 } … … 725 725 hFile=CreateFile(pBitmapResourceInfo[i3].FileName,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); 726 726 if(hFile==INVALID_HANDLE_VALUE){ 727 SetError(23,pBitmapResourceInfo[i3].FileName,-1);727 compiler.errorMessenger.Output(23,pBitmapResourceInfo[i3].FileName,-1); 728 728 return buffer; 729 729 } … … 753 753 hFile=CreateFile(pIconResourceInfo[i3].FileName,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); 754 754 if(hFile==INVALID_HANDLE_VALUE){ 755 SetError(23,pIconResourceInfo[i3].FileName,-1);755 compiler.errorMessenger.Output(23,pIconResourceInfo[i3].FileName,-1); 756 756 return buffer; 757 757 } … … 839 839 hFile=CreateFile(temp2,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); 840 840 if(hFile==INVALID_HANDLE_VALUE){ 841 SetError(59,temp2,-1);841 compiler.errorMessenger.Output(59,temp2,-1); 842 842 return buffer; 843 843 } -
trunk/ab5.0/abdev/BasicCompiler_Common/Resource.cpp
r402 r465 59 59 } 60 60 if(resultType.IsReal()){ 61 SetError(9,temporary,0);61 compiler.errorMessenger.Output(9,temporary,0); 62 62 return; 63 63 } … … 116 116 else{ 117 117 error: 118 SetError(17,NULL,0);118 compiler.errorMessenger.Output(17,NULL,0); 119 119 return; 120 120 } … … 124 124 if(buffer[i2]=='\0') break; 125 125 else if(buffer[i2]!='\n'){ 126 SetError(17,NULL,0);126 compiler.errorMessenger.Output(17,NULL,0); 127 127 return; 128 128 } -
trunk/ab5.0/abdev/BasicCompiler_Common/StrOperation.cpp
r402 r465 883 883 if( calcNames[idCalc] == NULL ) 884 884 { 885 SetError();885 compiler.errorMessenger.OutputFatalError(); 886 886 } 887 887 lstrcpy( name, calcNames[idCalc] ); … … 901 901 } 902 902 } 903 SetError();903 compiler.errorMessenger.OutputFatalError(); 904 904 return 0; 905 905 } -
trunk/ab5.0/abdev/BasicCompiler_Common/Subroutine.cpp
r461 r465 372 372 else if( source[i] == 1 && source[i+1] == ESC_ENDNAMESPACE ){ 373 373 if( namespaceScopes.size() <= 0 ){ 374 SetError(12, "End Namespace", i );374 compiler.errorMessenger.Output(12, "End Namespace", i ); 375 375 } 376 376 else{ … … 391 391 if( !compiler.GetNamespaceSupporter().ImportsNamespace( temporary ) ) 392 392 { 393 SetError(64,temporary,cp );393 compiler.errorMessenger.Output(64,temporary,cp ); 394 394 } 395 395 … … 497 497 CompileBufferInProcedure( *pUserProc ); 498 498 } 499 else SetError(300,NULL,cp);499 else compiler.errorMessenger.Output(300,NULL,cp); 500 500 } 501 501 else -
trunk/ab5.0/abdev/BasicCompiler_Common/VariableOpe.cpp
r461 r465 173 173 else{ 174 174 extern int cp; 175 SetError(1,NULL,cp);175 compiler.errorMessenger.Output(1,NULL,cp); 176 176 return 0; 177 177 } … … 273 273 } 274 274 if(variable[i]=='\"'){ 275 SetError(1,NULL,cp);275 compiler.errorMessenger.Output(1,NULL,cp); 276 276 return; 277 277 } … … 360 360 } 361 361 if(buffer[i+1]==cPare_Open){ 362 SetError(14,buffer,cp);362 compiler.errorMessenger.Output(14,buffer,cp); 363 363 return 0; 364 364 } … … 411 411 412 412 if(!IsVariableTopChar(name[0])){ 413 SetError(1,NULL,nowLine);413 compiler.errorMessenger.Output(1,NULL,nowLine); 414 414 return 0; 415 415 } … … 417 417 if(name[i2]=='\0') break; 418 418 if(!IsVariableChar(name[i2])){ 419 SetError(1,NULL,nowLine);419 compiler.errorMessenger.Output(1,NULL,nowLine); 420 420 return 0; 421 421 } … … 451 451 const CMember *pMember = objClass.FindDynamicMember( VarName ); 452 452 if( !pMember ){ 453 if(isErrorEnabled) SetError(103,VarName,cp);453 if(isErrorEnabled) compiler.errorMessenger.Output(103,VarName,cp); 454 454 return false; 455 455 } … … 459 459 //同一クラスオブジェクトの場合はプライベートアクセスを容認する 460 460 if( pMember->IsNoneAccess() ){ 461 if(isErrorEnabled) SetError(107,VarName,cp);461 if(isErrorEnabled) compiler.errorMessenger.Output(107,VarName,cp); 462 462 return false; 463 463 } … … 466 466 if(( bPrivateAccess==0 && pMember->IsPrivate() )|| 467 467 pMember->IsNoneAccess() ){ 468 if(isErrorEnabled) SetError(107,VarName,cp);468 if(isErrorEnabled) compiler.errorMessenger.Output(107,VarName,cp); 469 469 return false; 470 470 } 471 471 else if( bPrivateAccess==0 && pMember->IsProtected() ){ 472 if(isErrorEnabled) SetError(108,VarName,cp);472 if(isErrorEnabled) compiler.errorMessenger.Output(108,VarName,cp); 473 473 return false; 474 474 } … … 490 490 else{ 491 491 if(lpPtrOffset[0]){ 492 if(isErrorEnabled) SetError(16,lpszMember,cp);492 if(isErrorEnabled) compiler.errorMessenger.Output(16,lpszMember,cp); 493 493 return false; 494 494 } … … 523 523 else{ 524 524 //エラー 525 if(isErrorEnabled) SetError(1,NULL,cp);525 if(isErrorEnabled) compiler.errorMessenger.Output(1,NULL,cp); 526 526 return false; 527 527 } … … 674 674 675 675 //変数として見つからなかったとき 676 if(isErrorEnabled) SetError(3,variable,cp);676 if(isErrorEnabled) compiler.errorMessenger.Output(3,variable,cp); 677 677 return false; 678 678 … … 688 688 else{ 689 689 if(lpPtrOffset[0]){ 690 if(isErrorEnabled) SetError(16,variable,cp);690 if(isErrorEnabled) compiler.errorMessenger.Output(16,variable,cp); 691 691 return false; 692 692 } … … 714 714 else{ 715 715 //エラー 716 if(isErrorEnabled) SetError(1,NULL,cp);716 if(isErrorEnabled) compiler.errorMessenger.Output(1,NULL,cp); 717 717 return false; 718 718 } … … 828 828 (temporary[2]==ESC_FUNCTION||temporary[2]==ESC_SUB)){ 829 829 if(buffer[i]!='('){ 830 SetError(10,temporary,cp);830 compiler.errorMessenger.Output(10,temporary,cp); 831 831 return false; 832 832 } … … 849 849 850 850 if( !compiler.StringToType( temporary, type ) ){ 851 SetError(3,temporary,cp);851 compiler.errorMessenger.Output(3,temporary,cp); 852 852 return false; 853 853 } … … 860 860 861 861 if( !type.IsObject() ){ 862 SetError(112,variable,cp);862 compiler.errorMessenger.Output(112,variable,cp); 863 863 return false; 864 864 } … … 877 877 if(i2>=0){ 878 878 if(!(variable[i2]=='#'||variable[i2]=='!'||variable[i2]=='%'||variable[i2]=='$')) 879 SetError(-103,variable,cp);879 compiler.errorMessenger.Output(-103,variable,cp); 880 880 } 881 881 } … … 896 896 if( InitBuf[0] != '\0' && ConstractParameter[0] != '\0' ){ 897 897 //初期値とコンストラクタパラメータが同時に呼び出されているとき 898 SetError(132, NULL, cp);898 compiler.errorMessenger.Output(132, NULL, cp); 899 899 } 900 900 … … 944 944 if( compiler.GetObjectModule().meta.GetGlobalVars().DuplicateCheck( Symbol( name ) ) ){ 945 945 //2重定義のエラー 946 SetError(15,name,cp);946 compiler.errorMessenger.Output(15,name,cp); 947 947 return; 948 948 } … … 1024 1024 if( Parameter[i2] == 1 && Parameter[i2+1] == ESC_BYREF ){ 1025 1025 //参照型 1026 SetError();1026 compiler.errorMessenger.OutputFatalError(); 1027 1027 Parameter += 2; 1028 1028 } … … 1067 1067 //定数と2重定義されていないかを調べる 1068 1068 if(compiler.GetObjectModule().meta.GetGlobalConsts().GetBasicType(VarName)){ 1069 SetError(15,VarName,cp);1069 compiler.errorMessenger.Output(15,VarName,cp); 1070 1070 return; 1071 1071 } … … 1073 1073 //定数マクロとして定義されている場合 1074 1074 if( compiler.GetObjectModule().meta.GetGlobalConstMacros().IsExist( VarName ) ){ 1075 SetError(15,VarName,cp);1075 compiler.errorMessenger.Output(15,VarName,cp); 1076 1076 return; 1077 1077 } … … 1095 1095 if(dwFlags&DIMFLAG_STATIC){ 1096 1096 if( UserProc::IsGlobalAreaCompiling() ){ 1097 SetError(60,NULL,cp);1097 compiler.errorMessenger.Output(60,NULL,cp); 1098 1098 return; 1099 1099 } -
trunk/ab5.0/abdev/BasicCompiler_Common/calculation.cpp
r402 r465 98 98 if(sp==1){ 99 99 if(stack[0]){ 100 SetError(9,NULL,cp);100 compiler.errorMessenger.Output(9,NULL,cp); 101 101 return; 102 102 } … … 106 106 //文字列演算が可能な演算子 107 107 if((stack[sp-2]&&stack[sp-1]==0)||(stack[sp-2]==0&&stack[sp-1])){ 108 SetError(9,NULL,cp);108 compiler.errorMessenger.Output(9,NULL,cp); 109 109 return; 110 110 } … … 113 113 //文字列演算ができない演算子 114 114 if(stack[sp-2]||stack[sp-1]){ 115 SetError(9,NULL,cp);115 compiler.errorMessenger.Output(9,NULL,cp); 116 116 return; 117 117 } … … 180 180 181 181 extern int cp; 182 SetError(300,NULL,cp);182 compiler.errorMessenger.Output(300,NULL,cp); 183 183 return 0; 184 184 } … … 253 253 else{ 254 254 //ゼロ割りエラーを検地 255 SetError(56,NULL,cp);255 compiler.errorMessenger.Output(56,NULL,cp); 256 256 } 257 257 } … … 261 261 else{ 262 262 //ゼロ割りエラーを検地 263 SetError(56,NULL,cp);263 compiler.errorMessenger.Output(56,NULL,cp); 264 264 } 265 265 } … … 360 360 else{ 361 361 //ゼロ割りエラーを検地 362 SetError(56,NULL,cp);362 compiler.errorMessenger.Output(56,NULL,cp); 363 363 } 364 364 } … … 489 489 Type tempType; 490 490 if( !compiler.StringToType( temp2, tempType ) ){ 491 if(enableerror) SetError(3,temp2,cp);491 if(enableerror) compiler.errorMessenger.Output(3,temp2,cp); 492 492 return false; 493 493 } … … 501 501 if( !pConstMacro ) 502 502 { 503 if(enableerror) SetError(3,temporary,cp);503 if(enableerror) compiler.errorMessenger.Output(3,temporary,cp); 504 504 return false; 505 505 } 506 506 if( !pConstMacro->GetCalcBuffer( temp2, Parms ) ) 507 507 { 508 if(enableerror) SetError(3,temporary,cp);508 if(enableerror) compiler.errorMessenger.Output(3,temporary,cp); 509 509 return false; 510 510 } … … 685 685 else{ 686 686 //エラー 687 if(enableerror) SetError(300,NULL,cp);687 if(enableerror) compiler.errorMessenger.Output(300,NULL,cp); 688 688 return 0; 689 689 } … … 704 704 } 705 705 //エラー 706 if(enableerror) SetError(3,Parms,cp);706 if(enableerror) compiler.errorMessenger.Output(3,Parms,cp); 707 707 return false; 708 708 } … … 746 746 else{ 747 747 if(!(Command[i]=='+'||Command[i]=='-'||(Command[i]==1&&Command[i+1]==ESC_NOT))){ 748 if(enableerror) SetError(1,NULL,cp);748 if(enableerror) compiler.errorMessenger.Output(1,NULL,cp); 749 749 return false; 750 750 } … … 994 994 return -1; 995 995 } 996 SetError(57,NULL,cp);996 compiler.errorMessenger.Output(57,NULL,cp); 997 997 return DEF_BYTE; 998 998 } … … 1020 1020 return -1; 1021 1021 } 1022 SetError(58,NULL,cp);1022 compiler.errorMessenger.Output(58,NULL,cp); 1023 1023 return DEF_BYTE; 1024 1024 } … … 1036 1036 return -1; 1037 1037 } 1038 SetError(12,"&",cp);1038 compiler.errorMessenger.Output(12,"&",cp); 1039 1039 return DEF_BYTE; 1040 1040 } … … 1090 1090 } 1091 1091 1092 SetError(3,value,cp);1092 compiler.errorMessenger.Output(3,value,cp); 1093 1093 return DEF_DOUBLE; 1094 1094 } … … 1136 1136 } 1137 1137 1138 SetError(33,NULL,cp);1138 compiler.errorMessenger.Output(33,NULL,cp); 1139 1139 return DEF_DOUBLE; 1140 1140 } … … 1445 1445 (Command[i]==1&&Command[i+1]==ESC_BYVAL) 1446 1446 )){ 1447 SetError(1,NULL,cp);1447 compiler.errorMessenger.Output(1,NULL,cp); 1448 1448 return 0; 1449 1449 } … … 1461 1461 i+=i4; 1462 1462 if(!i3){ 1463 SetError(1,NULL,cp);1463 compiler.errorMessenger.Output(1,NULL,cp); 1464 1464 return 0; 1465 1465 } -
trunk/ab5.0/abdev/BasicCompiler_Common/common.h
r461 r465 370 370 371 371 //error.cpp 372 void SetError(int ErrorNum,const char *KeyWord,int pos);373 void SetError(int ErrorNum,const string &keyWord,int pos);374 void SetError();375 void CompileMessage(const char *buffer);376 372 bool CheckDifferentType( const Type &varType,const Type &calcType,const char *pszFuncName,const int ParmNum); 377 373 -
trunk/ab5.0/abdev/BasicCompiler_Common/error.cpp
r459 r465 5 5 6 6 #include "../BasicCompiler_Common/common.h" 7 8 BOOL GetErrorMsg(int num,const char *KeyWord,char *msg,int pos){9 extern HANDLE hHeap;10 int i2;11 char temporary[64];12 13 char tempKeyWord[1024];14 if(KeyWord){15 lstrcpy(tempKeyWord,KeyWord);16 for(i2=0;;i2++){17 if(tempKeyWord[i2]=='\0') break;18 if(tempKeyWord[i2]==1){19 GetDefaultNameFromES(tempKeyWord[i2+1],temporary);20 SlideString(tempKeyWord+i2+2,lstrlen(temporary)-2);21 memcpy(tempKeyWord+i2,temporary,lstrlen(temporary));22 }23 }24 }25 else{26 lstrcpy(tempKeyWord,"");27 }28 29 if(num==-1||num==-2) lstrcpy(msg,tempKeyWord); //部分エラー30 31 if(num==3){32 temporary[0]=tempKeyWord[0];33 for(i2=1;;i2++){34 if((!IsVariableChar(tempKeyWord[i2]))||i2>=255){35 temporary[i2]=0;36 break;37 }38 temporary[i2]=tempKeyWord[i2];39 }40 41 extern char **SynonymErrorWords;42 extern int SynonymErrorNum;43 for(i2=0;i2<SynonymErrorNum;i2++){44 if(lstrcmp(SynonymErrorWords[i2],temporary)==0) return 0;45 }46 47 #if defined(JPN)48 //日本語49 sprintf(msg,"\"%s\" 無効な識別子です",temporary);50 #else51 //英語52 sprintf(msg,"\"%s\" Invalid identifier.",temporary);53 #endif54 55 //重複エラー情報を追加56 SynonymErrorWords=(char **)HeapReAlloc(hHeap,0,SynonymErrorWords,(SynonymErrorNum+1)*sizeof(char *));57 SynonymErrorWords[SynonymErrorNum]=(char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);58 lstrcpy(SynonymErrorWords[SynonymErrorNum],temporary);59 SynonymErrorNum++;60 }61 if(num==30){62 #if defined(JPN)63 //日本語64 if(temporary[0]) sprintf(msg,"\"%s\" の使い方が不正です",tempKeyWord);65 else lstrcpy(msg,"文法が間違っています");66 #else67 //英語68 if(temporary[0]) sprintf(msg,"How to use the \"%s\" is wrong.",tempKeyWord);69 else lstrcpy(msg,"Syntax Error.");70 #endif71 }72 73 74 /////////////////////75 // ワーニングエラー76 /////////////////////77 #if defined(JPN)78 ////////////////////79 //日本語80 ////////////////////81 if(num==-101) sprintf(msg,"[警告] %sに強制変換されています。データが失われる可能性があります。",tempKeyWord);82 if(num==-102) sprintf(msg,"[警告] %sに強制変換されています。",tempKeyWord);83 if(num==-103) sprintf(msg,"[警告] \"%s\" 型が指定されていません。Double型として扱います。",tempKeyWord);84 if(num==-104) sprintf(msg,"[警告] \"%s\" 戻り値の型が指定されていません。Double型として扱います。",tempKeyWord);85 if(num==-105) sprintf(msg,"[警告] 一時オブジェクトの解放を行えません。キャスト用オブジェクトを用意してください。",tempKeyWord);86 if(num==-106) sprintf(msg,"[警告] DLLファイル \"%s\" が見つかりません。",tempKeyWord);87 if(num==-107) sprintf(msg,"[警告] DLL関数 \"%s\" を参照できません。",tempKeyWord);88 if(num==-108) lstrcpy(msg,"[警告] Catch節、Finally節を持たない意味のないTryスコープです。");89 if(num==-120) sprintf(msg,"[警告] VarPtr関数の引数にオブジェクト インスタンスが指定されました。オブジェクトの先頭アドレスを取得したいときはObjPtr関数に切り替えをお願いします。m(__)m(この警告はVarPtr→ObjPtrへの切り替えが完了したら消します(切り替えは \"適材箇所に限り\" ですので、ご注意ください!))",tempKeyWord);90 #else91 #endif92 93 94 ///////////////95 // 一般エラー96 ///////////////97 98 #if defined(JPN)99 ////////////////////100 //日本語101 ////////////////////102 if(num==1) lstrcpy(msg,"文法が間違っています。");103 if(num==2) sprintf(msg,"左のオペランドが、左辺値になっていません。");104 //num==3は予約されています105 if(num==4) sprintf(msg,"%sの相互関係が一致しません。",tempKeyWord);106 if(num==5) sprintf(msg,"ダブルクォートの数が一致しません。");107 if(num==6) sprintf(msg,"\"%s\" ジャンプ先が不正です。",tempKeyWord);108 if(num==7) lstrcpy(msg,"DLL名が長すぎます(拡張子を含め、16文字以下にして下さい)。");109 if(num==8) lstrcpy(msg,"コンパイラが認識できない文字コードが含まれています。");110 if(num==9) sprintf(msg,"型が違います。");111 if(num==10) sprintf(msg,"\"%s\" のパラメータ指定が間違っています。",tempKeyWord);112 if(num==11) sprintf(msg,"\"%s\" 型が違います。",tempKeyWord);113 if(num==12) sprintf(msg,"%s の使い方が不正です。",tempKeyWord);114 if(num==13) sprintf(msg,"\"%s\" を参照できません。",tempKeyWord);115 if(num==14) sprintf(msg,"\"%s\" 配列指定が不正です。",tempKeyWord);116 if(num==15) sprintf(msg,"\"%s\" はすでに定義されています。",tempKeyWord);117 if(num==16) sprintf(msg,"\"%s\" 配列、またはポインタ以外の変数に添え字が指定されています。",tempKeyWord);118 if(num==17) sprintf(msg,"リソース データが不正です。");119 if(num==18) sprintf(msg,"\"%s\"はポインタ変数型です。文字列演算を指定することはできません。",tempKeyWord);120 if(num==19) sprintf(msg,"\"%s\"は値参照型です。ByVal指定することはできません。",tempKeyWord);121 if(num==20) lstrcpy(msg,"全角スペースが含まれています(全角スペースはコンパイラが認識できないので、半角スペースまたはタブ文字にしてください)。");122 if(num==21) sprintf(msg,"If制御のブロック指定が不正です。");123 if(num==22) sprintf(msg,"%s に対する End %s が見つかりません。",tempKeyWord,tempKeyWord);124 if(num==23) sprintf(msg,"リソース ファイル \"%s\" の読み込みに失敗。",tempKeyWord);125 if(num==24) lstrcpy(msg,"Export指定の関数のパラメータには実体オブジェクトを利用することはできません(BytePtr型などを利用して下さい)。");126 if(num==25) sprintf(msg,"DLL関数にオブジェクトを引き渡すことはできません(%s)。",tempKeyWord);127 if(num==26) sprintf(msg,"\"%s\" 戻り値の型が指定されていません。",tempKeyWord);128 if(num==27) sprintf(msg,"\"%s\" は定義されていません。",tempKeyWord);129 if(num==28) sprintf(msg,"構造体パラメータは参照渡しにしてください(%s)。",tempKeyWord);130 if(num==29) sprintf(msg,"配列ポインタを要素と同時に引渡すときは、ポインタ参照(ByRef)にしてください。");131 //num==30は予約されています132 if(num==31) sprintf(msg,"\"%s\" は構造体です(メンバの参照はピリオド \".\" で区切ってください)。",tempKeyWord);133 if(num==32) sprintf(msg,"\"%s\" は構造体ポインタです(メンバの参照は \"->\" で区切ってください)。",tempKeyWord);134 if(num==33) sprintf(msg,"定数式にリテラル値、または定数以外のものが含まれています。");135 if(num==34) sprintf(msg,"定数はモジュールレベルで宣言して下さい。");136 if(num==38) sprintf(msg,"\"%s\" 戻り値が存在しないプロシージャです。",tempKeyWord);137 if(num==39) sprintf(msg,"\"%s\" はオブジェクトポインタではありません(\"->\" 参照はできません)。",tempKeyWord);138 if(num==40) lstrcpy(msg,"DLL関数の戻り値としてオブジェクトを受け取ることはできません。");139 if(num==41) lstrcpy(msg,"初期データが不正です。");140 if(num==42) lstrcpy(msg,"閉じカッコ \")\" の後に不正な文字が含まれています。");141 if(num==43) lstrcpy(msg,"ダブルクォートの後に不正な文字が含まれています。");142 if(num==45) sprintf(msg,"実数に対して \"%s\" 演算子は利用できません。",tempKeyWord);143 if(num==46) lstrcpy(msg,"配列の添え字に整数以外の値が与えられています。");144 if(num==47) lstrcpy(msg,"As演算子の右辺値に型名以外の識別子が指定されています。");145 if(num==48) sprintf(msg,"%s演算子に対して型名が指定されています。",tempKeyWord);146 if(num==49) lstrcpy(msg,"添え字に整数以外の型が指定されています。");147 if(num==50) sprintf(msg,"%sに変換できません。",tempKeyWord);148 if(num==51) lstrcpy(msg,"オブジェクト、構造体のアラインメント値は 1, 2, 4, 8, 16 のいずれかでなければなりません。");149 if(num==52) sprintf(msg,"\"%s\" オーバーロードを解決できません。",tempKeyWord);150 if(num==53) sprintf(msg,"\"%s\" 出力ファイルの書き込みに失敗しました。実行されている可能性があります。",tempKeyWord);151 if(num==54) sprintf(msg,"対応する%sが存在しません。",tempKeyWord);152 if(num==55) sprintf(msg,"\"%s\" は対応するForステートメントで利用されるカウンタ変数ではありません。",tempKeyWord);153 if(num==56) lstrcpy(msg,"ゼロ割りが行われました。");154 if(num==57) lstrcpy(msg,"8進数のリテラル表記が不正です。");155 if(num==58) lstrcpy(msg,"16進数のリテラル表記が不正です。");156 if(num==59) sprintf(msg,"マニフェスト ファイル \"%s\" の読み込みに失敗。",tempKeyWord);157 if(num==60) lstrcpy(msg,"Staticステートメントはグローバル領域では使用できません。");158 if(num==61) sprintf(msg,"\"%s\" は定数です。書き込みアクセスはできません。",tempKeyWord);159 if(num==62) sprintf(msg,"グローバル領域でのReturnは禁止されています。",tempKeyWord);160 if(num==63) lstrcpy(msg,"名前空間が正しく閉じられていません。");161 if(num==64) sprintf(msg,"\"%s\" 無効な名前空間です。",tempKeyWord);162 if(num==65) sprintf(msg,"ローカル領域で%sは使用できません。",tempKeyWord);163 if(num==66) sprintf(msg,"%s 要求されている関数ポインタのパラメータまたは戻り値が一致しません。", tempKeyWord );164 if(num==67) sprintf(msg,"%s 要求されているデリゲートのパラメータまたは戻り値が一致しません。", tempKeyWord );165 if(num==68) sprintf(msg,"\"%s\" 不正な関数名です。", tempKeyWord);166 if(num==69) sprintf(msg,"\"%s\" 不正なメソッド名です。", tempKeyWord);167 if(num==70) lstrcpy(msg,"一つのTryに対して複数のFinallyを記述できません。");168 if(num==71) lstrcpy(msg,"Finallyの後ろにCatchを記述することはできません。");169 if(num==72) lstrcpy(msg,"Catchのパラメータの型が指定されていません。");170 if(num==73) lstrcpy(msg,"\"%s\" Catchのパラメータの型はクラス型でなければなりません。");171 if(num==74) sprintf(msg,"\"%s\" 型として認識できません。",tempKeyWord);172 173 174 //オブジェクト関連175 if(num==102) sprintf(msg,"\"%s\" オブジェクトは定義されていません。",tempKeyWord);176 if(num==103) sprintf(msg,"\"%s\" メンバは定義されていません。",tempKeyWord);177 if(num==104) sprintf(msg,"\"%s\" 参照方法が違います。",tempKeyWord);178 if(num==105) sprintf(msg,"\"%s\" 自身のクラスを継承することはできません。",tempKeyWord);179 if(num==106) sprintf(msg,"\"%s\" 存在しないクラスです。",tempKeyWord);180 if(num==107) sprintf(msg,"Privateメンバ \"%s\" にアクセスすることはできません。",tempKeyWord);181 if(num==108) sprintf(msg,"Protectedメンバ \"%s\" にアクセスすることはできません。",tempKeyWord);182 if(num==109) sprintf(msg,"Privateメンバ関数 \"%s\" を呼び出すことはできません。",tempKeyWord);183 if(num==110) sprintf(msg,"Protectedメンバ関数 \"%s\" を呼び出すことはできません。",tempKeyWord);184 if(num==111) lstrcpy(msg,"InheritsはClass定義内の先頭に記述する必要があります。");185 if(num==112) sprintf(msg,"\"%s\" はクラス型ではないため、初期パラメータを指定することはできません。",tempKeyWord);186 if(num==113) sprintf(msg,"\"%s\" コンストラクタへ渡すパラメータが不正です。",tempKeyWord);187 if(num==114) lstrcpy(msg,"デストラクタはパラメータを持てません。");188 if(num==115) lstrcpy(msg,"コンストラクタ及びデストラクタは戻り値を持てません。");189 //if(num==116) lstrcpy(msg,"コンストラクタ及びデストラクタはパブリックアクセスにしなければなりません。");190 if(num==117) lstrcpy(msg,"デストラクタの名前が \"~クラス名\" になっていません。");191 if(num==118) lstrcpy(msg,"参照する基底クラスが存在しません。");192 if(num==119) sprintf(msg,"\"%s\" メンバは基底クラスで定義されていません。",tempKeyWord);193 if(num==120) lstrcpy(msg,"デストラクトするオブジェクトの型が不明です。");194 if(num==121) lstrcpy(msg,"New演算子にはクラス以外の型を指定できません。");195 if(num==122) lstrcpy(msg,"Delete演算子にポインタ以外の型が指定されています。");196 if(num==123) lstrcpy(msg,"ループ継承が行われました。");197 if(num==124) lstrcpy(msg,"循環参照が行われました。");198 if(num==125) sprintf(msg,"\"%s\" は抽象クラスです。インスタンス化することはできません。",tempKeyWord);199 if(num==126) lstrcpy(msg,"オペレータのオーバーロードをクラスの外で行うことはできません。");200 if(num==127) lstrcpy(msg,"Override修飾子の指定が無い状況でオーバーライドを行うことはできません。");201 if(num==128) lstrcpy(msg,"オーバーライドを行うときはアクセシビリティを同一にしなければなりません。");202 if(num==129) sprintf(msg,"静的メンバ \"%s\" は定義されていません。",tempKeyWord);203 if(num==130) sprintf(msg,"\"%s\" はオブジェクト定数です。書き込みアクセスはできません。",tempKeyWord);204 if(num==131) lstrcpy(msg,"Const定義されたメソッド内でクラスメンバへの書き込みアクセスはできません。");205 if(num==132) lstrcpy(msg,"明示的なコンストラクタ呼び出しと初期値の指定を同時に行うことはできません。");206 if(num==133) lstrcpy(msg,"Thisに代入はできません。");207 if(num==134) lstrcpy( msg,"ObjPtr関数にはオブジェクト インスタンス以外を指定できません。" );208 if(num==135) lstrcpy( msg, "クラス以外の型を継承元として指定することはできません。" );209 if(num==136) sprintf( msg, "\"%s\" 非仮想関数に対してオーバーライドしようとしました。", tempKeyWord );210 if(num==137) lstrcpy(msg,"ImplementsはClass定義内の先頭に記述する必要があります。");211 if(num==138) sprintf(msg,"%s はインターフェイスではありません。Implementsできるのはインターフェイスに限ります。",tempKeyWord);212 if(num==139) sprintf(msg,"%s はインターフェイスではありません。",tempKeyWord);213 if(num==140) lstrcpy(msg,"Align修飾子を構造体以外の型に指定することはできません。");214 if(num==141) lstrcpy(msg,"Blittable修飾子をクラス以外の型に指定することはできません。");215 if(num==142) lstrcpy(msg,"不正なThis参照です。");216 217 //Enum関連218 if(num==150) sprintf(msg,"\"%s\" 値が定義されていません。",tempKeyWord);219 if(num==151) sprintf(msg,"\"%s\" 列挙リストに登録されていません。",tempKeyWord);220 221 //リンカ222 if(num==200) sprintf(msg,"\"%s\" 未解決です (リンク エラー)。",tempKeyWord);223 if(num==201) sprintf(msg,"\"%s\" の読み込みに失敗。",tempKeyWord);224 225 //原因不明226 if(num==300) lstrcpy(msg,"内部エラー");227 228 // ベースライブラリ不整合229 if( num == 400 ) sprintf( msg, "\"%s\" が存在しません。標準ライブラリの内容が古い可能性があります。", tempKeyWord );230 231 #else232 ////////////////////233 //英語234 ////////////////////235 if(num==1) lstrcpy(msg,"Syntax Error.");236 if(num==2) sprintf(msg,"Left operand must be l-value.");237 //num==3は予約されています238 if(num==4) sprintf(msg,"Correlation of %s is wrong.",tempKeyWord);239 if(num==5) sprintf(msg,"Correlation of double quotes is wrong.");240 if(num==6) sprintf(msg,"\"%s\" Label not found.",tempKeyWord);241 if(num==7) lstrcpy(msg,"The DLL name is too long. Must be 16 characters or less.");242 if(num==8) lstrcpy(msg,"The inaccurate characters are contained.");243 if(num==9) sprintf(msg,"Type is wrong.");244 if(num==10) sprintf(msg,"\"%s\" Rule of parameter is wrong.",tempKeyWord);245 if(num==11) sprintf(msg,"\"%s\" Type is wrong.",tempKeyWord);246 if(num==12) sprintf(msg,"\"%s\" Not a valid use.",tempKeyWord);247 if(num==13) sprintf(msg,"Cannot refer to \"%s\".",tempKeyWord);248 if(num==14) sprintf(msg,"\"%s\" Array argument(s) out of bound.",tempKeyWord);249 if(num==15) sprintf(msg,"\"%s\" is already defined.",tempKeyWord);250 if(num==16) sprintf(msg,"\"%s\" Argument(s) following variable which is not pointer or array.",tempKeyWord);251 if(num==17) sprintf(msg,"Invalid resource data.");252 if(num==18) sprintf(msg,"\"%s\" Invalid operation on a pointer variable.",tempKeyWord);253 if(num==19) sprintf(msg,"\"%s\" is already to be passed by value. You cannot use \"ByVal\".",tempKeyWord);254 if(num==21) sprintf(msg,"Wrong structure of \"If\" block.");255 if(num==22) sprintf(msg,"No matching \"End %s\" found for \"%s\".",tempKeyWord,tempKeyWord);256 if(num==23) sprintf(msg,"Cannot read the resource file \"%s\".",tempKeyWord);257 if(num==24) lstrcpy(msg,"Must not use String type as an argument for exported function. (Use BytePtr type instead.)");258 if(num==27) sprintf(msg,"\"%s\" Undefined procedure.",tempKeyWord);259 if(num==28) sprintf(msg,"\"%s\" Structure must not be passed by value. (Use \"ByRef\".)",tempKeyWord);260 if(num==29) sprintf(msg,"Array must not be passed by value. (Use \"ByRef\".)");261 //num==30は予約されています262 if(num==31) sprintf(msg,"\"%s\" is a struct. (Use period \".\" to refer to the members.)",tempKeyWord);263 if(num==32) sprintf(msg,"\"%s\" is a pointer of struct. (Use arrow \"->\" to refer to the members.)",tempKeyWord);264 if(num==33) sprintf(msg,"Constant formula has a thing that is not literal value or constant value.");265 if(num==34) sprintf(msg,"Constant formula must be defined in the module level.");266 if(num==38) sprintf(msg,"\"%s\" is a procedure without a return value.",tempKeyWord);267 if(num==39) sprintf(msg,"\"%s\" is not object pointer. \"->\" is invalid.",tempKeyWord);268 if(num==40) lstrcpy(msg,"Cannot set a object to return value.");269 if(num==41) lstrcpy(msg,"Init data is wrong.");270 if(num==42) lstrcpy(msg,"The inaccurate characters are contained after the closing parenthesis \")\".");271 if(num==43) lstrcpy(msg,"The inaccurate characters are contained after the double quote.");272 273 //オブジェクト関連274 if(num==102) sprintf(msg,"\"%s\" The object is not defined.",tempKeyWord);275 if(num==103) sprintf(msg,"\"%s\" The member is not defined.",tempKeyWord);276 if(num==104) sprintf(msg,"\"%s\" The reference character is different.",tempKeyWord);277 if(num==105) sprintf(msg,"\"%s\" An own class is not inheritable.",tempKeyWord);278 if(num==106) sprintf(msg,"\"%s\" It class is not defined.",tempKeyWord);279 if(num==107) sprintf(msg,"\"%s\" Cannot access the private member.",tempKeyWord);280 if(num==108) sprintf(msg,"\"%s\" Cannot access the protected member.",tempKeyWord);281 if(num==109) sprintf(msg,"\"%s\" Cannot call the private member.",tempKeyWord);282 if(num==110) sprintf(msg,"\"%s\" Cannot call the protected member.",tempKeyWord);283 if(num==111) lstrcpy(msg,"The Inherits phrase must be described to the 1st line of class module");284 if(num==112) sprintf(msg,"\"%s\" is not class object. Therefor you cannot set the parameter for constructor.",tempKeyWord);285 if(num==113) sprintf(msg,"\"%s\" The parameter for constructor is wrong.",tempKeyWord);286 if(num==114) lstrcpy(msg,"Destructor cannot have a parameter.");287 if(num==115) lstrcpy(msg,"Constructor and Destructor cannot have a return value.");288 if(num==116) lstrcpy(msg,"Constructor and Destructor must be public access.");289 if(num==117) lstrcpy(msg,"Destructors name must be \"~ClassName\".");290 if(num==118) lstrcpy(msg,"Super class is not found.");291 if(num==119) sprintf(msg,"\"%s\" The member is not defined in the super class.",tempKeyWord);292 293 //Enum関連294 if(num==150) sprintf(msg,"\"%s\" The value is not set",tempKeyWord);295 if(num==151) sprintf(msg,"\"%s\" is not found from enum lists.",tempKeyWord);296 297 //リンカ298 if(num==200) sprintf(msg,"\"%s\" Unknown error.",tempKeyWord);299 #endif300 301 return 1;302 }303 void SetError(int ErrorNum,const string &keyWord,int pos){304 SetError( ErrorNum, keyWord.c_str(), pos );305 }306 void SetError(int num,const char *KeyWord,int pos){307 extern HANDLE hHeap;308 extern HWND hMainDlg;309 extern ERRORINFO *pErrorInfo;310 extern int ErrorNum;311 char temporary[1024],temp2[1024],temp3[32];312 BOOL bFirst;313 int i2;314 315 extern BOOL bDebugRun;316 if(bDebugRun) return;317 318 if(num!=-2){319 //一般エラーまたは警告320 i2=0; //ここにブレークポイントをおく321 322 if(num>-100){323 //エラーのみ324 325 i2=0;326 327 if( num == 300 )328 {329 // 内部エラー330 i2=0;331 }332 }333 334 }335 336 if(!GetErrorMsg(num,KeyWord,temporary,pos)) return;337 338 if(ErrorNum==0){339 SetDlgItemText(hMainDlg,IDC_ERRORLIST,"");340 EnableWindow(GetDlgItem(hMainDlg,IDC_ERRORLIST),1);341 bFirst=1;342 }343 else bFirst=0;344 345 346 ////////////////////347 // エラー情報を追加348 pErrorInfo=(ERRORINFO *)HeapReAlloc(hHeap,0,pErrorInfo,(ErrorNum+1)*sizeof(ERRORINFO));349 350 if(pos==-1){351 pErrorInfo[ErrorNum].FileName=0;352 lstrcpy(temp2,temporary);353 }354 else{355 std::string dummyStr;356 compiler.GetObjectModule().GetCurrentSource().GetLineInfo( pos, pErrorInfo[ErrorNum].line, dummyStr );357 358 pErrorInfo[ErrorNum].FileName=(char *)HeapAlloc(hHeap,0,lstrlen(dummyStr.c_str())+1);359 lstrcpy(pErrorInfo[ErrorNum].FileName,dummyStr.c_str());360 361 _splitpath(pErrorInfo[ErrorNum].FileName,0,0,temp2,temp3);362 lstrcat(temp2,temp3);363 364 if(pErrorInfo[ErrorNum].line==-1)365 sprintf(temp2+lstrlen(temp2),"(no area) %s",temporary);366 else367 sprintf(temp2+lstrlen(temp2),"(%d) - %s",pErrorInfo[ErrorNum].line+1,temporary);368 }369 370 i2=GetWindowTextLength(GetDlgItem(hMainDlg,IDC_ERRORLIST));371 SendDlgItemMessage(hMainDlg,IDC_ERRORLIST,EM_SETSEL,i2,i2);372 if(bFirst==0){373 SendDlgItemMessage(hMainDlg,IDC_ERRORLIST,EM_REPLACESEL,0,(LPARAM)"\r\n");374 i2+=2;375 SendDlgItemMessage(hMainDlg,IDC_ERRORLIST,EM_SETSEL,i2,i2);376 }377 SendDlgItemMessage(hMainDlg,IDC_ERRORLIST,EM_REPLACESEL,0,(LPARAM)temp2);378 379 std::string msg = temp2;380 if(num==-2){381 //コンパイルメッセージ382 //※何もしない383 extern int CompileMsgNum;384 CompileMsgNum++;385 }386 else{387 msg = (num>-100) ? "error - " : "warning - ";388 msg += temp2;389 if(num>-100){390 //警告ではなく、エラーの場合はエラーチェックフラグを立てる391 extern BOOL bError;392 bError=1;393 }394 else{395 extern int WarningNum;396 WarningNum++;397 }398 399 // ログに出力400 trace( msg );401 }402 403 std::cout << msg << endl;404 405 406 ErrorNum++;407 }408 void SetError(){409 SetError(300,NULL,cp);410 }411 void CompileMessage(const char *buffer){412 SetError(-2,buffer,-1);413 }414 7 415 8 #define STRING_SYSTEM_DECLAREHANDLE "*_System_DeclareHandle_" … … 444 37 445 38 extern int cp; 446 if(iWarning==1) SetError(-101,temporary,cp);447 else if(iWarning==2) SetError(-102,temporary,cp);448 else if(iWarning==3) SetError(50,temporary,cp);39 if(iWarning==1) compiler.errorMessenger.Output(-101,temporary,cp); 40 else if(iWarning==2) compiler.errorMessenger.Output(-102,temporary,cp); 41 else if(iWarning==3) compiler.errorMessenger.Output(50,temporary,cp); 449 42 } 450 43 -
trunk/ab5.0/abdev/BasicCompiler_Common/hash.cpp
r461 r465 125 125 if(subs.size() == 0){ 126 126 if(bError){ 127 SetError(3,lpszName,cp);127 compiler.errorMessenger.Output(3,lpszName,cp); 128 128 } 129 129 return 0; … … 132 132 //一つ以上の関数が存在するときは内部エラー(デバッグ用) 133 133 if(subs.size() > 1){ 134 if(bError) SetError(300,NULL,cp);134 if(bError) compiler.errorMessenger.Output(300,NULL,cp); 135 135 } 136 136 … … 169 169 char temporary[VN_SIZE]; 170 170 sprintf( temporary, "%s.%s", className, methodName ); 171 SetError(3, temporary, -1 );171 compiler.errorMessenger.Output(3, temporary, -1 ); 172 172 173 173 return NULL; -
trunk/ab5.0/abdev/BasicCompiler_Common/include/Compiler.h
r461 r465 1 1 #pragma once 2 2 3 #include <Messenger.h> 3 4 #include <CodeGenerator.h> 4 5 #include <NamespaceSupporter.h> … … 85 86 return namespaceSupporter; 86 87 } 88 89 // メッセンジャー 90 Messenger messenger; 91 ErrorMessenger errorMessenger; 87 92 88 93 // コード生成機構 -
trunk/ab5.0/abdev/BasicCompiler_Common/include/Method.h
r382 r465 5 5 class UserProc; 6 6 class CClass; 7 void SetError();8 7 9 8 class CMethod : public MemberPrototype … … 175 174 } 176 175 177 virtual bool Override( const UserProc *pUserProc, Prototype::Accessibility accessibility, bool isOverrideModifier ){SetError();return false;} 178 179 virtual bool IsAbstract() const{SetError();return false;} 180 virtual void SetAbstractMark( bool isAbstract ){SetError();} 176 virtual bool Override( const UserProc *pUserProc, Prototype::Accessibility accessibility, bool isOverrideModifier ) 177 { 178 throw; 179 } 180 181 virtual bool IsAbstract() const 182 { 183 throw; 184 } 185 virtual void SetAbstractMark( bool isAbstract ) 186 { 187 throw; 188 } 181 189 virtual bool IsVirtual() const{ 182 190 return false; 183 191 } 184 virtual bool IsConst() const{SetError();return false;} 192 virtual bool IsConst() const 193 { 194 throw; 195 } 185 196 virtual bool IsDynamic() const 186 197 { … … 191 202 return true; 192 203 } 193 virtual const CClass *GetInheritsClassPtr() const{SetError();return NULL;} 194 virtual void SetInheritsClassPtr( const CClass *pInheritsClass ){SetError();} 204 virtual const CClass *GetInheritsClassPtr() const 205 { 206 throw; 207 } 208 virtual void SetInheritsClassPtr( const CClass *pInheritsClass ) 209 { 210 throw; 211 } 195 212 virtual bool IsNotUse() const 196 213 { … … 199 216 virtual void SetNotUseMark( bool isNotUse ) 200 217 { 201 SetError();218 throw; 202 219 } 203 220 }; -
trunk/ab5.0/abdev/BasicCompiler_Common/include/NativeCode.h
r370 r465 119 119 return lpValue; 120 120 } 121 const ::DllProc &GetDllProc() const 122 { 123 if( type != Schedule::DllProc ) 124 { 125 SetError(); 126 } 127 return *pDllProc; 128 } 129 const ::UserProc &GetUserProc() const 130 { 131 if( !( type == Schedule::UserProc || type == Schedule::AddressOf || type == Schedule::CatchAddress ) ) 132 { 133 SetError(); 134 } 135 return *pUserProc; 136 } 137 const ::CClass &GetClass() const 138 { 139 if( !( type == Schedule::ComVtbl || type == Schedule::Vtbl || type == Schedule::TypeInfo ) ) 140 { 141 SetError(); 142 } 143 return *pClass; 144 } 145 146 void SpecifyAddressOf() 147 { 148 if( type != Schedule::UserProc ) 149 { 150 SetError(); 151 } 152 type = Schedule::AddressOf; 153 } 154 void SpecifyCatchAddress() 155 { 156 if( type != Schedule::UserProc ) 157 { 158 SetError(); 159 } 160 type = Schedule::CatchAddress; 161 } 121 const ::DllProc &GetDllProc() const; 122 const ::UserProc &GetUserProc() const; 123 const ::CClass &GetClass() const; 124 125 void SpecifyAddressOf(); 126 void SpecifyCatchAddress(); 162 127 }; 163 128 typedef std::vector<Schedule> Schedules; -
trunk/ab5.0/abdev/BasicCompiler_Common/src/Class.cpp
r461 r465 199 199 const CClass *pInheritsClass = compiler.GetObjectModule().meta.GetClasses().Find(className); 200 200 if( !pInheritsClass ){ 201 SetError(106,className,nowLine);201 compiler.errorMessenger.Output(106,className,nowLine); 202 202 return false; 203 203 } … … 212 212 } 213 213 else{ 214 SetError(135,pInheritsClass->GetFullName().c_str(),nowLine);214 compiler.errorMessenger.Output(135,pInheritsClass->GetFullName().c_str(),nowLine); 215 215 return false; 216 216 } … … 236 236 if( !compiler.GetObjectModule().meta.GetClasses().LoopRefCheck(inheritsClass) ) 237 237 { 238 SetError(123,inheritsClass.GetName(),nowLine);238 compiler.errorMessenger.Output(123,inheritsClass.GetName(),nowLine); 239 239 return false; 240 240 } … … 296 296 { 297 297 // インターフェイスではないとき 298 SetError(138,interfaceClass.GetName().c_str(),nowLine );298 compiler.errorMessenger.Output(138,interfaceClass.GetName().c_str(),nowLine ); 299 299 return false; 300 300 } … … 379 379 const CClass *pInterfaceClass = compiler.GetObjectModule().meta.GetClasses().Find( className ); 380 380 if( !pInterfaceClass ){ 381 SetError(106,paramStr.c_str(),nowLine);381 compiler.errorMessenger.Output(106,paramStr.c_str(),nowLine); 382 382 continue; 383 383 } … … 404 404 //重複チェック 405 405 if(this->DupliCheckAll(VarName)){ 406 SetError(15,VarName,cp);406 compiler.errorMessenger.Output(15,VarName,cp); 407 407 } 408 408 … … 466 466 //デストラクタの場合はその名前が正しいかチェックを行う 467 467 if(lstrcmp(temporary+1,pobj_c->GetName().c_str())!=0) 468 SetError(117,NULL,nowLine);468 compiler.errorMessenger.Output(117,NULL,nowLine); 469 469 else 470 470 bDestructor=1; … … 489 489 490 490 if(pobj_c->DupliCheckMember(temporary)){ 491 SetError(15,temporary,nowLine);491 compiler.errorMessenger.Output(15,temporary,nowLine); 492 492 return; 493 493 } … … 502 502 { 503 503 //関数名、パラメータ、戻り値が合致したとき 504 SetError(15,pUserProc->GetName().c_str(),nowLine);504 compiler.errorMessenger.Output(15,pUserProc->GetName().c_str(),nowLine); 505 505 return; 506 506 } … … 549 549 if( interfaceName[0] ) 550 550 { 551 SetError(139,interfaceName,nowLine);551 compiler.errorMessenger.Output(139,interfaceName,nowLine); 552 552 } 553 553 … … 557 557 558 558 if( isOverride ){ 559 SetError(12,"Override",nowLine);559 compiler.errorMessenger.Output(12,"Override",nowLine); 560 560 } 561 561 … … 757 757 if( !pMember->GetType().IsStruct() ) 758 758 { 759 SetError();759 compiler.errorMessenger.OutputFatalError(); 760 760 } 761 761 … … 863 863 if( !pMember->GetType().IsStruct() ) 864 864 { 865 SetError();865 compiler.errorMessenger.OutputFatalError(); 866 866 } 867 867 … … 985 985 } 986 986 987 SetError();987 compiler.errorMessenger.OutputFatalError(); 988 988 return; 989 989 } … … 1002 1002 } 1003 1003 1004 SetError();1004 compiler.errorMessenger.OutputFatalError(); 1005 1005 return 0; 1006 1006 } … … 1014 1014 if( vtblMasterListOffset == -1 ) 1015 1015 { 1016 SetError();1016 compiler.errorMessenger.OutputFatalError(); 1017 1017 } 1018 1018 … … 1042 1042 if( vtblMasterList.size() ) 1043 1043 { 1044 SetError();1044 compiler.errorMessenger.OutputFatalError(); 1045 1045 } 1046 1046 … … 1062 1062 if( this->comVtblOffset ) 1063 1063 { 1064 SetError();1064 compiler.errorMessenger.OutputFatalError(); 1065 1065 } 1066 1066 this->comVtblOffset = tempVtblOffset; … … 1167 1167 if( !Put( pClass ) ) 1168 1168 { 1169 SetError(15,pClass->GetName(), nowLine);1169 compiler.errorMessenger.Output(15,pClass->GetName(), nowLine); 1170 1170 return false; 1171 1171 } … … 1465 1465 pCompilingMethod = pParentClass->GetStaticMethods().GetMethodPtr( pUserProc ); 1466 1466 if( !pCompilingMethod ){ 1467 SetError();1467 compiler.errorMessenger.OutputFatalError(); 1468 1468 } 1469 1469 } … … 1482 1482 if( !pStringClass ) 1483 1483 { 1484 SetError(400, "System.String", cp);1484 compiler.errorMessenger.Output(400, "System.String", cp); 1485 1485 static CClass dummy; 1486 1486 return &dummy; … … 1498 1498 if( !pObjectClass ) 1499 1499 { 1500 SetError(400, "System.Object", cp);1500 compiler.errorMessenger.Output(400, "System.Object", cp); 1501 1501 static CClass dummy; 1502 1502 return &dummy; … … 1514 1514 if( !pInterfaceInfo ) 1515 1515 { 1516 SetError(400, "ActiveBasic.Core.InterfaceInfo", cp);1516 compiler.errorMessenger.Output(400, "ActiveBasic.Core.InterfaceInfo", cp); 1517 1517 static CClass dummy; 1518 1518 return &dummy; -
trunk/ab5.0/abdev/BasicCompiler_Common/src/Class_Collect.cpp
r461 r465 102 102 else if( source[i] == 1 && source[i+1] == ESC_ENDNAMESPACE ){ 103 103 if( namespaceScopes.size() <= 0 ){ 104 SetError(12, "End Namespace", i );104 compiler.errorMessenger.Output(12, "End Namespace", i ); 105 105 } 106 106 else{ … … 121 121 if( !compiler.GetNamespaceSupporter().ImportsNamespace( temporary ) ) 122 122 { 123 SetError(64,temporary,i );123 compiler.errorMessenger.Output(64,temporary,i ); 124 124 } 125 125 … … 228 228 if(pobj_LoopRefCheck->check(pMember->GetType().GetClass())){ 229 229 extern int cp; 230 SetError(124,pMember->GetType().GetClass().GetName(),cp);230 compiler.errorMessenger.Output(124,pMember->GetType().GetClass().GetName(),cp); 231 231 return false; 232 232 } … … 283 283 else if( basbuf[i] == 1 && basbuf[i+1] == ESC_ENDNAMESPACE ){ 284 284 if( namespaceScopes.size() <= 0 ){ 285 SetError(12, "End Namespace", i );285 compiler.errorMessenger.Output(12, "End Namespace", i ); 286 286 } 287 287 else{ … … 303 303 if( !compiler.GetNamespaceSupporter().ImportsNamespace( temporary ) ) 304 304 { 305 SetError(64,temporary,i );305 compiler.errorMessenger.Output(64,temporary,i ); 306 306 } 307 307 … … 358 358 if( !compiler.StringToType( typeParameterBaseClassNames[i2], baseType ) ) 359 359 { 360 SetError(106,typeParameterBaseClassNames[i2],i);360 compiler.errorMessenger.Output(106,typeParameterBaseClassNames[i2],i); 361 361 } 362 362 else if( !baseType.IsObject() ) 363 363 { 364 SetError(106,typeParameterBaseClassNames[i2],i);364 compiler.errorMessenger.Output(106,typeParameterBaseClassNames[i2],i); 365 365 } 366 366 } … … 394 394 395 395 if(lstrcmpi(temporary,pobj_c->GetName().c_str())==0){ 396 SetError(105,temporary,i);396 compiler.errorMessenger.Output(105,temporary,i); 397 397 goto Interface_InheritsError; 398 398 } … … 402 402 const CClass *pInheritsClass = classes.Find(temporary); 403 403 if( !pInheritsClass ){ 404 SetError(106,temporary,i);404 compiler.errorMessenger.Output(106,temporary,i); 405 405 goto Interface_InheritsError; 406 406 } … … 427 427 //エラー 428 428 if(basbuf[i]==1&&(basbuf[i+1]==ESC_CLASS||basbuf[i+1]==ESC_TYPE||basbuf[i+1]==ESC_INTERFACE)){ 429 SetError(22,"Interface",i);429 compiler.errorMessenger.Output(22,"Interface",i); 430 430 i--; 431 431 break; … … 433 433 434 434 if(basbuf[i]==1&&basbuf[i+1]==ESC_INHERITS){ 435 SetError(111,NULL,i);435 compiler.errorMessenger.Output(111,NULL,i); 436 436 break; 437 437 } 438 438 else if( basbuf[i] == 1 && basbuf[i+1] == ESC_IMPLEMENTS ) 439 439 { 440 SetError(137, NULL, i );440 compiler.errorMessenger.Output(137, NULL, i ); 441 441 break; 442 442 } … … 454 454 if(basbuf[i]=='\0'){ 455 455 i--; 456 SetError(22,"Interface",top_pos);456 compiler.errorMessenger.Output(22,"Interface",top_pos); 457 457 break; 458 458 } … … 466 466 temporary[1]==ESC_SUB||temporary[1]==ESC_FUNCTION 467 467 ))){ 468 SetError(1,NULL,i);468 compiler.errorMessenger.Output(1,NULL,i); 469 469 break; 470 470 } … … 505 505 if( dwClassType != ESC_TYPE ) 506 506 { 507 SetError(140,NULL,i);507 compiler.errorMessenger.Output(140,NULL,i); 508 508 } 509 509 510 510 if(!(iAlign==1||iAlign==2||iAlign==4||iAlign==8||iAlign==16)) 511 SetError(51,NULL,i);511 compiler.errorMessenger.Output(51,NULL,i); 512 512 } 513 513 else if( memicmp( basbuf + i, "Blittable(", 10 ) == 0 ){ … … 518 518 if( dwClassType != ESC_CLASS ) 519 519 { 520 SetError(141,NULL,i);520 compiler.errorMessenger.Output(141,NULL,i); 521 521 } 522 522 } … … 568 568 if( !compiler.StringToType( typeParameterBaseClassNames[i2], baseType ) ) 569 569 { 570 SetError(106,typeParameterBaseClassNames[i2],i);570 compiler.errorMessenger.Output(106,typeParameterBaseClassNames[i2],i); 571 571 } 572 572 else if( !baseType.IsObject() ) 573 573 { 574 SetError(106,typeParameterBaseClassNames[i2],i);574 compiler.errorMessenger.Output(106,typeParameterBaseClassNames[i2],i); 575 575 } 576 576 } … … 616 616 617 617 if(lstrcmpi(temporary,pobj_c->GetName().c_str())==0){ 618 SetError(105,temporary,i);618 compiler.errorMessenger.Output(105,temporary,i); 619 619 goto InheritsError; 620 620 } … … 644 644 //エラー 645 645 if(basbuf[i]==1&&(basbuf[i+1]==ESC_CLASS||basbuf[i+1]==ESC_TYPE)){ 646 SetError(22,"Class",i);646 compiler.errorMessenger.Output(22,"Class",i); 647 647 i--; 648 648 break; … … 650 650 651 651 if(basbuf[i]==1&&basbuf[i+1]==ESC_INHERITS){ 652 SetError(111,NULL,i);652 compiler.errorMessenger.Output(111,NULL,i); 653 653 break; 654 654 } 655 655 else if( basbuf[i] == 1 && basbuf[i+1] == ESC_IMPLEMENTS ) 656 656 { 657 SetError(137, NULL, i );657 compiler.errorMessenger.Output(137, NULL, i ); 658 658 break; 659 659 } … … 718 718 719 719 if(dwClassType==ESC_CLASS) 720 SetError(22,"Class",top_pos);720 compiler.errorMessenger.Output(22,"Class",top_pos); 721 721 else 722 SetError(22,"Type",top_pos);722 compiler.errorMessenger.Output(22,"Type",top_pos); 723 723 724 724 i--; … … 810 810 basbuf[i+1]==ESC_ENUM)){ 811 811 GetDefaultNameFromES(i3,temporary); 812 SetError(22,temporary,i);812 compiler.errorMessenger.Output(22,temporary,i); 813 813 } 814 814 if(basbuf[i]==1&&basbuf[i+1]==GetEndXXXCommand((char)i3)){ -
trunk/ab5.0/abdev/BasicCompiler_Common/src/CommonCodeGenerator.cpp
r436 r465 22 22 if( pertialSchedules.size() > 0 ) 23 23 { 24 SetError();24 compiler.errorMessenger.OutputFatalError(); 25 25 } 26 26 } … … 40 40 { 41 41 // 範囲外 42 SetError();42 compiler.errorMessenger.OutputFatalError(); 43 43 } 44 44 … … 55 55 else 56 56 { 57 SetError();57 compiler.errorMessenger.OutputFatalError(); 58 58 } 59 59 … … 72 72 if( isSuccessful == false ) 73 73 { 74 SetError();74 compiler.errorMessenger.OutputFatalError(); 75 75 } 76 76 } … … 94 94 else 95 95 { 96 SetError();96 compiler.errorMessenger.OutputFatalError(); 97 97 } 98 98 … … 111 111 if( isSuccessful == false ) 112 112 { 113 SetError();113 compiler.errorMessenger.OutputFatalError(); 114 114 } 115 115 } … … 133 133 { 134 134 // 範囲外 135 SetError();135 compiler.errorMessenger.OutputFatalError(); 136 136 } 137 137 … … 144 144 else 145 145 { 146 SetError();146 compiler.errorMessenger.OutputFatalError(); 147 147 } 148 148 … … 160 160 if( isSuccessful == false ) 161 161 { 162 SetError();162 compiler.errorMessenger.OutputFatalError(); 163 163 } 164 164 } … … 180 180 else 181 181 { 182 SetError();182 compiler.errorMessenger.OutputFatalError(); 183 183 } 184 184 } … … 196 196 else 197 197 { 198 SetError();198 compiler.errorMessenger.OutputFatalError(); 199 199 } 200 200 } … … 223 223 else 224 224 { 225 SetError();225 compiler.errorMessenger.OutputFatalError(); 226 226 } 227 227 … … 276 276 if( GetContinueCodePos() == -1 ) 277 277 { 278 SetError(12,"Continue",cp);278 compiler.errorMessenger.Output(12,"Continue",cp); 279 279 return; 280 280 } -
trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp
r461 r465 206 206 } 207 207 208 SetError(1, NULL, cp);208 compiler.errorMessenger.Output(1, NULL, cp); 209 209 210 210 return (string)"(null)"; -
trunk/ab5.0/abdev/BasicCompiler_Common/src/Const.cpp
r265 r465 17 17 for(i=0;;i++){ 18 18 if(buffer[i]=='\0'){ 19 SetError(10,"Const",cp);19 compiler.errorMessenger.Output(10,"Const",cp); 20 20 return; 21 21 } … … 31 31 || compiler.GetObjectModule().meta.GetGlobalConsts().IsExist( name ) ) 32 32 { 33 SetError(15,name,cp);33 compiler.errorMessenger.Output(15,name,cp); 34 34 return; 35 35 } … … 144 144 extern int cp; 145 145 for(i2=0;i2<num;i2++) HeapDefaultFree(pParms[i2]); 146 SetError(10,GetName().c_str(),cp);146 compiler.errorMessenger.Output(10,GetName().c_str(),cp); 147 147 lstrcpy(dest,"0"); 148 148 return 1; … … 206 206 if(parameterStr[i]!='(') 207 207 { 208 SetError();208 compiler.errorMessenger.OutputFatalError(); 209 209 return; 210 210 } … … 214 214 for(i++,i2=0;;i++,i2++){ 215 215 if(parameterStr[i]=='\0'){ 216 SetError(1,NULL,cp);216 compiler.errorMessenger.Output(1,NULL,cp); 217 217 return; 218 218 } … … 226 226 if(parameterStr[i]!='='){ 227 227 extern int cp; 228 SetError(1,NULL,cp);228 compiler.errorMessenger.Output(1,NULL,cp); 229 229 return; 230 230 } -
trunk/ab5.0/abdev/BasicCompiler_Common/src/DataTable.cpp
r461 r465 121 121 { 122 122 // エラー 123 SetError();123 compiler.errorMessenger.OutputFatalError(); 124 124 return false; 125 125 } … … 196 196 i+=i2; 197 197 if(expression[i]!='\0'){ 198 SetError(42,NULL,cp);198 compiler.errorMessenger.Output(42,NULL,cp); 199 199 return false; 200 200 } … … 213 213 214 214 if( !compiler.StringToType( typeName, resultType ) ){ 215 SetError(3,typeName,cp);215 compiler.errorMessenger.Output(3,typeName,cp); 216 216 return false; 217 217 } … … 222 222 //////////////////////// 223 223 224 SetError(121,NULL,cp);224 compiler.errorMessenger.Output(121,NULL,cp); 225 225 return false; 226 226 } … … 268 268 { 269 269 if( !baseType.IsPointer() ){ 270 SetError(1,NULL,cp);270 compiler.errorMessenger.Output(1,NULL,cp); 271 271 return false; 272 272 } … … 301 301 if( !RemoveStringQuotes( tempParamStr ) ) 302 302 { 303 SetError();303 compiler.errorMessenger.OutputFatalError(); 304 304 } 305 305 … … 335 335 if( !resultType.IsWhole() ){ 336 336 // TODO: 実数に未対応 337 SetError();337 compiler.errorMessenger.OutputFatalError(); 338 338 isSuccessful = false; 339 339 break; -
trunk/ab5.0/abdev/BasicCompiler_Common/src/Delegate.cpp
r449 r465 20 20 if( !compiler.StringToType( returnTypeName, returnType ) ) 21 21 { 22 SetError(3,returnTypeName,sourceIndex);22 compiler.errorMessenger.Output(3,returnTypeName,sourceIndex); 23 23 } 24 24 } … … 72 72 else if( source[i] == 1 && source[i+1] == ESC_ENDNAMESPACE ){ 73 73 if( namespaceScopes.size() <= 0 ){ 74 SetError(12, "End Namespace", i );74 compiler.errorMessenger.Output(12, "End Namespace", i ); 75 75 } 76 76 else{ … … 91 91 if( !compiler.GetNamespaceSupporter().ImportsNamespace( temporary ) ) 92 92 { 93 SetError(64,temporary,i );93 compiler.errorMessenger.Output(64,temporary,i ); 94 94 } 95 95 … … 108 108 if( !( source[i] == 1 && ( source[i+1] == ESC_SUB || source[i+1] == ESC_FUNCTION ) ) ) 109 109 { 110 SetError(1,NULL,i);110 compiler.errorMessenger.Output(1,NULL,i); 111 111 continue; 112 112 } … … 125 125 if( source[i] != '(' ) 126 126 { 127 SetError(1,NULL,nowLine);127 compiler.errorMessenger.Output(1,NULL,nowLine); 128 128 continue; 129 129 } … … 142 142 if( procKind != Procedure::Function ) 143 143 { 144 SetError(38,name,nowLine);144 compiler.errorMessenger.Output(38,name,nowLine); 145 145 } 146 146 } … … 149 149 if( procKind == Procedure::Function ) 150 150 { 151 SetError(-104,name,nowLine);151 compiler.errorMessenger.Output(-104,name,nowLine); 152 152 lstrcpy( returnTypeName, "Double" ); 153 153 } -
trunk/ab5.0/abdev/BasicCompiler_Common/src/Enum.cpp
r424 r465 18 18 } 19 19 if(!IsVariableChar(buffer[i])){ 20 SetError(1,NULL,i);20 compiler.errorMessenger.Output(1,NULL,i); 21 21 break; 22 22 } … … 25 25 26 26 if(buffer[i]=='\0'){ 27 SetError(22,"Enum",nowLine);27 compiler.errorMessenger.Output(22,"Enum",nowLine); 28 28 return; 29 29 } … … 52 52 if(temporary[0]=='\0'){ 53 53 if(buffer[i]=='\0'){ 54 SetError(22,"Enum",nowLine);54 compiler.errorMessenger.Output(22,"Enum",nowLine); 55 55 break; 56 56 } … … 131 131 else if( source[i] == 1 && source[i+1] == ESC_ENDNAMESPACE ){ 132 132 if( namespaceScopes.size() <= 0 ){ 133 SetError(12, "End Namespace", i );133 compiler.errorMessenger.Output(12, "End Namespace", i ); 134 134 } 135 135 else{ -
trunk/ab5.0/abdev/BasicCompiler_Common/src/Exception.cpp
r391 r465 120 120 if( isDefinedFinally ) 121 121 { 122 SetError(71,NULL,cp);122 compiler.errorMessenger.Output(71,NULL,cp); 123 123 return; 124 124 } … … 146 146 if( isDefinedFinally ) 147 147 { 148 SetError(70,NULL,cp);148 compiler.errorMessenger.Output(70,NULL,cp); 149 149 return; 150 150 } … … 173 173 if( !isDefinedFinally ) 174 174 { 175 SetError();175 compiler.errorMessenger.OutputFatalError(); 176 176 } 177 177 … … 259 259 if( tryScopes.size() == 0 ) 260 260 { 261 SetError(1,NULL,cp);261 compiler.errorMessenger.Output(1,NULL,cp); 262 262 return; 263 263 } … … 271 271 if( !typeName[0] ) 272 272 { 273 SetError(72,NULL,cp);273 compiler.errorMessenger.Output(72,NULL,cp); 274 274 } 275 275 else … … 277 277 if( !compiler.StringToType( typeName, paramType ) ) 278 278 { 279 SetError(74,typeName,cp);279 compiler.errorMessenger.Output(74,typeName,cp); 280 280 } 281 281 else … … 283 283 if( !paramType.IsObject() ) 284 284 { 285 SetError(73,typeName,cp);285 compiler.errorMessenger.Output(73,typeName,cp); 286 286 } 287 287 } … … 296 296 if( paramType.IsObject() ) 297 297 { 298 sprintf( temporary, "Dim %s = Thread.CurrentThread().__GetThrowintParamObject() As %s", varName, paramType.GetClass().GetFullName().c_str() );298 sprintf( temporary, "Dim %s = System.Threading.Thread.CurrentThread().__GetThrowintParamObject() As %s", varName, paramType.GetClass().GetFullName().c_str() ); 299 299 MakeMiddleCode( temporary ); 300 300 ChangeOpcode( temporary ); 301 301 } 302 lstrcpy( temporary, " Thread.CurrentThread().__Catched()" );302 lstrcpy( temporary, "System.Threading.Thread.CurrentThread().__Catched()" ); 303 303 MakeMiddleCode( temporary ); 304 304 ChangeOpcode( temporary ); … … 326 326 if( tryScopes.size() == 0 ) 327 327 { 328 SetError(12,"End Try",cp);328 compiler.errorMessenger.Output(12,"End Try",cp); 329 329 return; 330 330 } … … 333 333 { 334 334 // CatchもFinallyも存在しないとき 335 SetError(-108,NULL,tryScopes.back().GetSourceCodePos() );335 compiler.errorMessenger.Output(-108,NULL,tryScopes.back().GetSourceCodePos() ); 336 336 } 337 337 … … 364 364 while( tryScopes.size() > 0 ) 365 365 { 366 SetError(22, "Try", tryScopes.back().GetSourceCodePos() );366 compiler.errorMessenger.Output(22, "Try", tryScopes.back().GetSourceCodePos() ); 367 367 368 368 EndTryCommand( true ); … … 393 393 if( tryScopes.size() == 0 ) 394 394 { 395 SetError(1,NULL,cp);395 compiler.errorMessenger.Output(1,NULL,cp); 396 396 return; 397 397 } … … 424 424 if( tryScopes.size() == 0 ) 425 425 { 426 SetError(1,NULL,cp);426 compiler.errorMessenger.Output(1,NULL,cp); 427 427 return; 428 428 } -
trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalScope.cpp
r392 r465 64 64 void LexicalScopes::End(){ 65 65 if( level <= 0 ){ 66 SetError();66 compiler.errorMessenger.OutputFatalError(); 67 67 return; 68 68 } … … 154 154 if( UserProc::IsGlobalAreaCompiling() ){ 155 155 //ここには来ないハズ 156 SetError(300,NULL,cp);156 compiler.errorMessenger.Output(300,NULL,cp); 157 157 } 158 158 } -
trunk/ab5.0/abdev/BasicCompiler_Common/src/Linker.cpp
r414 r465 113 113 && schedule.GetUserProc().GetEndOpAddress() == 0 ) 114 114 { 115 SetError();115 compiler.errorMessenger.OutputFatalError(); 116 116 } 117 117 … … 252 252 if( nativeCode.GetSize() > 0 ) 253 253 { 254 SetError();254 compiler.errorMessenger.OutputFatalError(); 255 255 } 256 256 -
trunk/ab5.0/abdev/BasicCompiler_Common/src/Method.cpp
r396 r465 11 11 { 12 12 // Override修飾子が無い状況で基底クラスの実体メソッドをオーバーライドしようとした 13 SetError(127,NULL,cp);13 compiler.errorMessenger.Output(127,NULL,cp); 14 14 } 15 15 … … 21 21 { 22 22 // オーバーライドミス 23 SetError(136, pUserProc->GetName(), cp);23 compiler.errorMessenger.Output(136, pUserProc->GetName(), cp); 24 24 } 25 25 if(this->GetAccessibility() != accessibility ) 26 26 { 27 SetError(128,NULL,cp);27 compiler.errorMessenger.Output(128,NULL,cp); 28 28 } 29 29 … … 35 35 { 36 36 // 静的メソッドがコピーコンストラトされることは想定しない 37 SetError();37 compiler.errorMessenger.OutputFatalError(); 38 38 } 39 39 … … 160 160 161 161 if(pMethod->IsAbstract()){ 162 SetError();162 compiler.errorMessenger.OutputFatalError(); 163 163 164 164 ppsi[i2]=0; -
trunk/ab5.0/abdev/BasicCompiler_Common/src/NamespaceSupporter.cpp
r461 r465 46 46 else if( source[i] == 1 && source[i+1] == ESC_ENDNAMESPACE ){ 47 47 if( namespaceScopes.size() <= 0 ){ 48 SetError( 12, "End Namespace", i );48 compiler.errorMessenger.Output( 12, "End Namespace", i ); 49 49 isSuccessful = false; 50 50 } … … 59 59 60 60 if( namespaceScopes.size() > 0 ){ 61 SetError( 63, NULL, cp );61 compiler.errorMessenger.Output( 63, NULL, cp ); 62 62 isSuccessful = false; 63 63 } -
trunk/ab5.0/abdev/BasicCompiler_Common/src/NativeCode.cpp
r370 r465 4 4 5 5 #define BREAK_EIP(checkEip) (obp+0x00401000>=checkEip) 6 7 const ::DllProc &Schedule::GetDllProc() const 8 { 9 if( type != Schedule::DllProc ) 10 { 11 compiler.errorMessenger.OutputFatalError(); 12 } 13 return *pDllProc; 14 } 15 const ::UserProc &Schedule::GetUserProc() const 16 { 17 if( !( type == Schedule::UserProc || type == Schedule::AddressOf || type == Schedule::CatchAddress ) ) 18 { 19 compiler.errorMessenger.OutputFatalError(); 20 } 21 return *pUserProc; 22 } 23 const ::CClass &Schedule::GetClass() const 24 { 25 if( !( type == Schedule::ComVtbl || type == Schedule::Vtbl || type == Schedule::TypeInfo ) ) 26 { 27 compiler.errorMessenger.OutputFatalError(); 28 } 29 return *pClass; 30 } 31 32 void Schedule::SpecifyAddressOf() 33 { 34 if( type != Schedule::UserProc ) 35 { 36 compiler.errorMessenger.OutputFatalError(); 37 } 38 type = Schedule::AddressOf; 39 } 40 void Schedule::SpecifyCatchAddress() 41 { 42 if( type != Schedule::UserProc ) 43 { 44 compiler.errorMessenger.OutputFatalError(); 45 } 46 type = Schedule::CatchAddress; 47 } 6 48 7 49 void NativeCode::PutEx( const NativeCode &nativeCode ) -
trunk/ab5.0/abdev/BasicCompiler_Common/src/Parameter.cpp
r448 r465 145 145 if( isRef == false ) 146 146 { 147 SetError(29,NULL,nowLine);147 compiler.errorMessenger.Output(29,NULL,nowLine); 148 148 } 149 149 isArray = true; … … 206 206 207 207 if( type.IsNull() ){ 208 SetError(3,temporary,nowLine);208 compiler.errorMessenger.Output(3,temporary,nowLine); 209 209 type.SetBasicType( DEF_PTR_VOID ); 210 210 } … … 219 219 else{ 220 220 type.SetBasicType( Type::GetBasicTypeFromSimpleName(temporary) ); 221 SetError(-103,temporary,nowLine);221 compiler.errorMessenger.Output(-103,temporary,nowLine); 222 222 } 223 223 … … 240 240 } 241 241 else{ 242 SetError(1,NULL,nowLine);242 compiler.errorMessenger.Output(1,NULL,nowLine); 243 243 break; 244 244 } -
trunk/ab5.0/abdev/BasicCompiler_Common/src/Procedure.cpp
r461 r465 105 105 //パラメータ 106 106 if(sourceOfParams[i]!='('){ 107 SetError(1,NULL,nowLine);107 compiler.errorMessenger.Output(1,NULL,nowLine); 108 108 return false; 109 109 } … … 111 111 //クラスのメンバ関数の場合のみ、デストラクタにパラメータがある場合にエラーをだす 112 112 if(this->GetName()[0]=='~'){ 113 SetError(114,NULL,nowLine);113 compiler.errorMessenger.Output(114,NULL,nowLine); 114 114 return false; 115 115 } … … 133 133 if( !this->IsFunction() ){ 134 134 // Sub/Macroの場合 135 SetError(38,this->GetName(),nowLine);135 compiler.errorMessenger.Output(38,this->GetName(),nowLine); 136 136 } 137 137 … … 140 140 else 141 141 { 142 SetError(1,NULL,nowLine);142 compiler.errorMessenger.Output(1,NULL,nowLine); 143 143 return false; 144 144 } … … 199 199 if( isRef == false ) 200 200 { 201 SetError(29,NULL,nowLine);201 compiler.errorMessenger.Output(29,NULL,nowLine); 202 202 } 203 203 isArray = true; … … 248 248 249 249 if( type.IsNull() ){ 250 SetError(3,temporary,nowLine);250 compiler.errorMessenger.Output(3,temporary,nowLine); 251 251 type.SetBasicType( DEF_PTR_VOID ); 252 252 } … … 261 261 else{ 262 262 type.SetBasicType( Type::GetBasicTypeFromSimpleName(name) ); 263 SetError(-103,name,nowLine);263 compiler.errorMessenger.Output(-103,name,nowLine); 264 264 } 265 265 … … 325 325 if(sw){ 326 326 //配列パラメータ 327 if( isRef == false ) SetError(29,NULL,nowLine);327 if( isRef == false ) compiler.errorMessenger.Output(29,NULL,nowLine); 328 328 isArray = true; 329 329 … … 389 389 390 390 if( type.IsNull() ){ 391 SetError(3,temporary,nowLine);391 compiler.errorMessenger.Output(3,temporary,nowLine); 392 392 type.SetBasicType( DEF_PTR_VOID ); 393 393 } … … 402 402 else{ 403 403 type.SetBasicType( Type::GetBasicTypeFromSimpleName(temporary) ); 404 SetError(-103,temporary,nowLine);404 compiler.errorMessenger.Output(-103,temporary,nowLine); 405 405 } 406 406 … … 421 421 if( !this->IsFunction() ){ 422 422 // Sub/Macroの場合 423 SetError(38,this->GetName(),nowLine);423 compiler.errorMessenger.Output(38,this->GetName(),nowLine); 424 424 } 425 425 … … 428 428 this->GetName()[0]=='~'){ 429 429 //クラスのコンストラクタ、デストラクタがFunction定義の場合はエラーをだす 430 SetError(115,NULL,nowLine);430 compiler.errorMessenger.Output(115,NULL,nowLine); 431 431 } 432 432 } … … 435 435 if( this->returnType.IsNull() ) 436 436 { 437 SetError(3,returnTypeStr,nowLine);437 compiler.errorMessenger.Output(3,returnTypeStr,nowLine); 438 438 } 439 439 } … … 442 442 { 443 443 // Function定義なのに、戻り値の型がセットされていない 444 SetError(-104,this->GetName().c_str(),nowLine);444 compiler.errorMessenger.Output(-104,this->GetName().c_str(),nowLine); 445 445 446 446 this->returnType.SetBasicType( DEF_DOUBLE ); … … 495 495 { 496 496 // 重複しているため、失敗 497 SetError(15,pUserProc->GetName().c_str(),nowLine);497 compiler.errorMessenger.Output(15,pUserProc->GetName().c_str(),nowLine); 498 498 return false; 499 499 } … … 536 536 if(buffer[i]==1&&buffer[i+1]==ESC_OPERATOR){ 537 537 if(!pobj_c){ 538 SetError(126,NULL,nowLine);538 compiler.errorMessenger.Output(126,NULL,nowLine); 539 539 return 0; 540 540 } … … 570 570 } 571 571 if(!iCalcId){ 572 SetError(1,NULL,nowLine);572 compiler.errorMessenger.Output(1,NULL,nowLine); 573 573 return 0; 574 574 } … … 608 608 else 609 609 { 610 SetError();610 compiler.errorMessenger.OutputFatalError(); 611 611 return NULL; 612 612 } … … 615 615 if( SplitMemberName( memberName, parentName, dummyMemberName, refKind ) ) 616 616 { 617 SetError(69,temporary,nowLine);617 compiler.errorMessenger.Output(69,temporary,nowLine); 618 618 return NULL; 619 619 } … … 621 621 else 622 622 { 623 SetError(68,temporary,nowLine);623 compiler.errorMessenger.Output(68,temporary,nowLine); 624 624 return NULL; 625 625 } … … 642 642 643 643 if(GetDeclareHash(temporary)){ 644 SetError(15,temporary,nowLine);644 compiler.errorMessenger.Output(15,temporary,nowLine); 645 645 return 0; 646 646 } … … 715 715 //パラメータ 716 716 if(sourceOfParams[i]!='('){ 717 SetError(1,NULL,nowLine);717 compiler.errorMessenger.Output(1,NULL,nowLine); 718 718 return 0; 719 719 } … … 765 765 if(sw){ 766 766 //配列パラメータ 767 if( isRef == false ) SetError(29,NULL,nowLine);767 if( isRef == false ) compiler.errorMessenger.Output(29,NULL,nowLine); 768 768 isArray = true; 769 769 … … 811 811 812 812 if( type.IsNull() ){ 813 SetError(3,temporary,nowLine);813 compiler.errorMessenger.Output(3,temporary,nowLine); 814 814 type.SetBasicType( DEF_PTR_VOID ); 815 815 } … … 817 817 else{ 818 818 type.SetBasicType( Type::GetBasicTypeFromSimpleName(temporary) ); 819 SetError(-103,temporary,nowLine);819 compiler.errorMessenger.Output(-103,temporary,nowLine); 820 820 } 821 821 … … 834 834 else if(sourceOfParams[i]==')') continue; 835 835 else{ 836 SetError(1,NULL,nowLine);836 compiler.errorMessenger.Output(1,NULL,nowLine); 837 837 break; 838 838 } … … 863 863 } 864 864 compiler.StringToType( temporary, this->returnType ); 865 if( this->returnType.IsNull() ) SetError(3,temporary,nowLine);865 if( this->returnType.IsNull() ) compiler.errorMessenger.Output(3,temporary,nowLine); 866 866 867 867 sw_as=1; … … 891 891 } 892 892 else{ 893 SetError(1,NULL,nowLine);893 compiler.errorMessenger.Output(1,NULL,nowLine); 894 894 return; 895 895 } … … 912 912 } 913 913 if(buffer[i]=='\0'){ 914 SetError(1,NULL,nowLine);914 compiler.errorMessenger.Output(1,NULL,nowLine); 915 915 return; 916 916 } … … 921 921 //ユーザー定義関数との重複チェック 922 922 if(GetSubHash(procName)){ 923 SetError(15,procName,nowLine);923 compiler.errorMessenger.Output(15,procName,nowLine); 924 924 return; 925 925 } … … 935 935 } 936 936 if( resultType.GetBasicType() != typeOfPtrChar ){ 937 SetError(1,NULL,nowLine);937 compiler.errorMessenger.Output(1,NULL,nowLine); 938 938 return; 939 939 } … … 943 943 lstrcat(dllFileName,".DLL"); 944 944 if(lstrlen(dllFileName)>=16){ 945 SetError(7,NULL,nowLine);945 compiler.errorMessenger.Output(7,NULL,nowLine); 946 946 return; 947 947 } … … 956 956 } 957 957 if( resultType.GetBasicType() != typeOfPtrChar ){ 958 SetError(1,NULL,nowLine);958 compiler.errorMessenger.Output(1,NULL,nowLine); 959 959 return; 960 960 } … … 977 977 BOOST_FOREACH( const Parameter *pParam, pDllProc->Params() ){ 978 978 if( pParam->IsObject() ){ 979 SetError(25,pParam->GetVarName(),nowLine);979 compiler.errorMessenger.Output(25,pParam->GetVarName(),nowLine); 980 980 } 981 981 if( !pParam->IsRef() ){ 982 982 if( pParam->IsStruct() ){ 983 SetError(28,pParam->GetVarName(),nowLine);983 compiler.errorMessenger.Output(28,pParam->GetVarName(),nowLine); 984 984 } 985 985 } … … 992 992 if( pDllProc->ReturnType().IsObject() ){ 993 993 // DLL関数ではオブジェクトを戻り値にできない 994 SetError(40,pDllProc->GetName(),nowLine);994 compiler.errorMessenger.Output(40,pDllProc->GetName(),nowLine); 995 995 } 996 996 } … … 1010 1010 //パラメータ 1011 1011 if(sourceOfParams[i]!='('){ 1012 SetError(1,NULL,nowLine);1012 compiler.errorMessenger.Output(1,NULL,nowLine); 1013 1013 return 0; 1014 1014 } … … 1059 1059 if(sw){ 1060 1060 //配列パラメータ 1061 if( isRef == false ) SetError(29,NULL,nowLine);1061 if( isRef == false ) compiler.errorMessenger.Output(29,NULL,nowLine); 1062 1062 isArray = true; 1063 1063 … … 1104 1104 1105 1105 if( type.IsNull() ){ 1106 SetError(3,temporary,nowLine);1106 compiler.errorMessenger.Output(3,temporary,nowLine); 1107 1107 type.SetBasicType( DEF_PTR_VOID ); 1108 1108 } … … 1110 1110 else{ 1111 1111 type.SetBasicType( Type::GetBasicTypeFromSimpleName(temporary) ); 1112 SetError(-103,temporary,nowLine);1112 compiler.errorMessenger.Output(-103,temporary,nowLine); 1113 1113 } 1114 1114 … … 1127 1127 else if(sourceOfParams[i]==')') continue; 1128 1128 else{ 1129 SetError(1,NULL,nowLine);1129 compiler.errorMessenger.Output(1,NULL,nowLine); 1130 1130 break; 1131 1131 } … … 1156 1156 } 1157 1157 compiler.StringToType( temporary, this->returnType ); 1158 if( this->returnType.IsNull() ) SetError(3,temporary,nowLine);1158 if( this->returnType.IsNull() ) compiler.errorMessenger.Output(3,temporary,nowLine); 1159 1159 1160 1160 sw_as=1; … … 1174 1174 if( this->ReturnType().IsNull() ){ 1175 1175 // 戻り値がない 1176 SetError(26,this->GetName(),nowLine);1176 compiler.errorMessenger.Output(26,this->GetName(),nowLine); 1177 1177 } 1178 1178 } … … 1180 1180 if( !this->ReturnType().IsNull() ){ 1181 1181 // Sub定義なのに、戻り値がある 1182 SetError(38,this->GetName(),nowLine);1182 compiler.errorMessenger.Output(38,this->GetName(),nowLine); 1183 1183 } 1184 1184 } -
trunk/ab5.0/abdev/BasicCompiler_Common/src/Source.cpp
r461 r465 678 678 if( !source.ReadFile_InIncludeDirective( temporary ) ){ 679 679 sprintf(temp2,"インクルードファイル \"%s\" をオープンできません",temporary); 680 SetError(-1,temp2,i);680 compiler.errorMessenger.Output(-1,temp2,i); 681 681 break; 682 682 } … … 920 920 for( int i=0; genBuffer[i] ; i++ ){ 921 921 if( genBuffer[i] == '\n' ){ 922 SetError();922 compiler.errorMessenger.OutputFatalError(); 923 923 break; 924 924 } -
trunk/ab5.0/abdev/BasicCompiler_Common/src/Type.cpp
r461 r465 116 116 } 117 117 118 SetError();118 compiler.errorMessenger.OutputFatalError(); 119 119 120 120 return 0; … … 219 219 { 220 220 if( !pClass ){ 221 SetError();221 compiler.errorMessenger.OutputFatalError(); 222 222 return 0; 223 223 } … … 232 232 } 233 233 234 SetError();234 compiler.errorMessenger.OutputFatalError(); 235 235 return 0; 236 236 } -
trunk/ab5.0/abdev/BasicCompiler_Common/src/TypeDef.cpp
r461 r465 10 10 { 11 11 if( !compiler.StringToType( baseName, baseType ) ){ 12 SetError(3, baseName, nowLine );12 compiler.errorMessenger.Output(3, baseName, nowLine ); 13 13 return; 14 14 } … … 87 87 88 88 if(expression[i]!='='){ 89 SetError(10,"TypeDef",nowLine);89 compiler.errorMessenger.Output(10,"TypeDef",nowLine); 90 90 return; 91 91 } … … 98 98 if(temporary[i]=='\0') break; 99 99 if( !( IsVariableChar( temporary[i], true) ) ){ 100 SetError(10,"TypeDef",nowLine);100 compiler.errorMessenger.Output(10,"TypeDef",nowLine); 101 101 return; 102 102 } … … 107 107 //関数ポインタ 108 108 if(pTemp[3]!='('){ 109 SetError(10,"TypeDef",nowLine);109 compiler.errorMessenger.Output(10,"TypeDef",nowLine); 110 110 return; 111 111 } … … 118 118 if( !( IsVariableChar( pTemp[i], true) ) ) 119 119 { 120 SetError(10,"TypeDef",nowLine);120 compiler.errorMessenger.Output(10,"TypeDef",nowLine); 121 121 return; 122 122 } … … 126 126 //識別子が重複している場合はエラーにする 127 127 if(lstrcmp(temporary,pTemp)==0){ 128 SetError(1,NULL,nowLine);128 compiler.errorMessenger.Output(1,NULL,nowLine); 129 129 return; 130 130 } … … 170 170 else if( basbuf[i] == 1 && basbuf[i+1] == ESC_ENDNAMESPACE ){ 171 171 if( namespaceScopes.size() <= 0 ){ 172 SetError(12, "End Namespace", i );172 compiler.errorMessenger.Output(12, "End Namespace", i ); 173 173 } 174 174 else{ … … 189 189 if( !compiler.GetNamespaceSupporter().ImportsNamespace( temporary ) ) 190 190 { 191 SetError(64,temporary,i );191 compiler.errorMessenger.Output(64,temporary,i ); 192 192 } 193 193
Note:
See TracChangeset
for help on using the changeset viewer.