Changeset 49 in dev for BasicCompiler_Common/NumOpe_GetType.cpp
- Timestamp:
- Feb 10, 2007, 6:13:37 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler_Common/NumOpe_GetType.cpp
r41 r49 327 327 index_stack[sp]=-1; 328 328 329 if(values[i][0]=='\"'){ 329 char *term; 330 term = values[i]; 331 332 if(term[0]=='\"'){ 330 333 StrLiteral: 331 334 … … 349 352 bLiteralCalculation=0; 350 353 } 351 else if(( values[i][0]=='e'||values[i][0]=='E')&&352 ( values[i][1]=='x'||values[i][1]=='X')&&353 values[i][2]=='\"'){354 else if((term[0]=='e'||term[0]=='E')&& 355 (term[1]=='x'||term[1]=='X')&& 356 term[2]=='\"'){ 354 357 //拡張版リテラル文字列(エスケープシーケンス可能) 355 358 goto StrLiteral; 356 359 } 357 else if(IsVariableTopChar( values[i][0])||358 values[i][0]=='*'||359 ( values[i][0]=='.'&&IsVariableTopChar(values[i][1]))){360 else if(IsVariableTopChar(term[0])|| 361 term[0]=='*'|| 362 (term[0]=='.'&&IsVariableTopChar(term[1]))){ 360 363 ////////////////// 361 364 // 何らかの識別子 … … 365 368 ////////////////////////////////////// 366 369 367 i2=GetCallProcName( values[i],temporary);368 if( values[i][i2]=='('){369 i4=GetStringInPare_RemovePare(temp2, values[i]+i2+1);370 i2=GetCallProcName(term,temporary); 371 if(term[i2]=='('){ 372 i4=GetStringInPare_RemovePare(temp2,term+i2+1); 370 373 371 374 int idProc; … … 374 377 375 378 if(idProc){ 376 //閉じカッコ")"に続く文字がNULLでないときはエラーにする 377 if(values[i][i2+1+i4+1]!='\0') SetError(42,NULL,cp); 379 //閉じカッコ")"に続く文字がNULLでないとき 380 if(term[i2+1+i4+1]!='\0'){ 381 if( term[i2+1+i4+1] == '.' 382 || term[i2+1+i4+1] == 1 && term[i2+1+i4+2] == ESC_PSMEM ){ 383 goto NonProc; 384 } 385 else{ 386 SetError(42,NULL,cp); 387 } 388 } 378 389 379 390 … … 400 411 401 412 //閉じカッコ")"に続く文字がNULLでないときはエラーにする 402 if( values[i][i2+1+i4+1]!='\0') SetError(42,NULL,cp);413 if(term[i2+1+i4+1]!='\0') SetError(42,NULL,cp); 403 414 404 415 //マクロ関数の場合 … … 416 427 } 417 428 } 418 429 NonProc: 419 430 420 431 //インデクサ(getアクセサ) 421 432 char VarName[VN_SIZE],ArrayElements[VN_SIZE]; 422 GetArrayElement( values[i],VarName,ArrayElements);433 GetArrayElement(term,VarName,ArrayElements); 423 434 if(ArrayElements[0]){ 424 435 CClass *pobj_c; … … 440 451 441 452 442 i2=GetVarType( values[i],&index_stack[sp],0);453 i2=GetVarType(term,&index_stack[sp],0); 443 454 if(i2!=-1){ 444 455 ////////// … … 457 468 ////////////// 458 469 459 i3 = CDBConst::obj.GetType( values[i]);470 i3 = CDBConst::obj.GetType(term); 460 471 if(i3){ 461 472 type[sp]=i3; … … 488 499 489 500 LONG_PTR lp; 490 i3=GetTypeFixed( values[i],&lp);501 i3=GetTypeFixed(term,&lp); 491 502 if(i3!=-1){ 492 503 type[sp]=i3|FLAG_CAST; … … 503 514 504 515 //配列要素を排除 505 GetArrayElement( values[i],VarName,ArrayElements);516 GetArrayElement(term,VarName,ArrayElements); 506 517 507 518 if(GetSubHash(VarName,0)){ 508 519 TYPEINFO RetTypeInfo; 509 GetReturnTypeOfPropertyMethod( values[i],NULL,&RetTypeInfo);520 GetReturnTypeOfPropertyMethod(term,NULL,&RetTypeInfo); 510 521 511 522 //大きな型への暗黙の変換 … … 523 534 //該当する識別子が見当たらないときはエラー扱いにする 524 535 bError=1; 525 SetError(3, values[i],cp);536 SetError(3,term,cp); 526 537 type[sp]=DEF_DOUBLE; 527 538 } … … 531 542 base_type=0; 532 543 if(pBaseType) base_type=pBaseType->type; 533 type[sp]=GetLiteralValue( values[i],&i64data,base_type);544 type[sp]=GetLiteralValue(term,&i64data,base_type); 534 545 Literal: 535 546 if((long)i64data==0&&index_stack[sp]==-1) index_stack[sp]=LITERAL_NULL;
Note:
See TracChangeset
for help on using the changeset viewer.