Changeset 381 in dev for trunk/abdev/BasicCompiler64
- Timestamp:
- Dec 19, 2007, 3:31:03 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler64/Compile_Statement.cpp
r380 r381 473 473 { 474 474 Type resultType; 475 int i;476 475 char temporary[VN_SIZE],variable[VN_SIZE],collectionVar[VN_SIZE]; 477 476 bool isError = false; 478 477 478 //レキシカルスコープをレベルアップ 479 compiler.codeGenerator.lexicalScopes.Start( compiler.codeGenerator.GetNativeCodeSize(), LexicalScope::SCOPE_TYPE_FOR ); 480 479 481 //第1パラメータを取得 480 i=GetOneParameter(Parameter,0,temporary); 482 int i = 0; 483 GetCustomToken( variable, Parameter, i, ESC_IN, true ); 481 484 if(!Parameter[i]){ 482 485 SetError(12,"Foreach",cp); … … 484 487 goto ErrorStep; 485 488 } 486 487 lstrcpy( variable, temporary ); 489 i++; 488 490 489 491 //第2パラメータを取得(in~) 490 i=GetOneParameter(Parameter,i,collectionVar); 491 492 //レキシカルスコープをレベルアップ 493 compiler.codeGenerator.lexicalScopes.Start( compiler.codeGenerator.GetNativeCodeSize(), LexicalScope::SCOPE_TYPE_FOR ); 492 lstrcpy( collectionVar, Parameter + i ); 494 493 495 494 if( !GetVarType( variable, resultType, false ) ) … … 527 526 const PertialSchedule *pTempPertialSchedule = compiler.codeGenerator.op_je( 0, sizeof(long), true ); 528 527 529 // Currentプロパティから現在の値を取得 530 sprintf( temporary, "%s=%s.Current", variable, collectionVar ); 531 Compile( temporary ); 528 if( !isError ) 529 { 530 // Currentプロパティから現在の値を取得 531 sprintf( temporary, "%s=%s.Current", variable, collectionVar ); 532 Compile( temporary ); 533 } 532 534 533 535 //For内をコンパイル … … 542 544 } 543 545 544 //jmp ... 545 compiler.codeGenerator.op_jmp_continue(); 546 if( !isError ) 547 { 548 //jmp ... 549 compiler.codeGenerator.op_jmp_continue(); 550 } 546 551 547 552 //レキシカルスコープをレベルダウン
Note:
See TracChangeset
for help on using the changeset viewer.