Ignore:
Timestamp:
Jul 29, 2007, 12:33:04 PM (17 years ago)
Author:
dai_9181
Message:

BreakPertialScheduleをリファクタリング

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler32/Compile_Statement.cpp

    r247 r248  
    33#include <jenga/include/smoothie/LexicalAnalysis.h>
    44
    5 #include <LexicalScopingImpl.h>
     5#include <LexicalScope.h>
    66#include <Compiler.h>
    77
     
    140140    }
    141141
    142     const CodeGenerator::PertialSchedule *pIfPertialSchedule = NULL;
     142    const PertialSchedule *pIfPertialSchedule = NULL;
    143143    if( !NumOpe(Parameter,Type(),tempType) ){
    144144        //NumOpe内でエラー
     
    207207
    208208        //jne
    209         const CodeGenerator::PertialSchedule *pTempPertialSchedule1 = compiler.codeGenerator.op_jne( 0, sizeof(char), true );
     209        const PertialSchedule *pTempPertialSchedule1 = compiler.codeGenerator.op_jne( 0, sizeof(char), true );
    210210
    211211        //cmp ebx,0
     
    213213
    214214        //jne
    215         const CodeGenerator::PertialSchedule *pTempPertialSchedule2 = compiler.codeGenerator.op_jne( 0, sizeof(char), true );
     215        const PertialSchedule *pTempPertialSchedule2 = compiler.codeGenerator.op_jne( 0, sizeof(char), true );
    216216
    217217        //jmp (endif、または else までジャンプ)
     
    240240
    241241    //レキシカルスコープをレベルアップ
    242     GetLexicalScopes().Start( obp, SCOPE_TYPE_IF );
     242    compiler.codeGenerator.lexicalScopes.Start( obp, LexicalScope::SCOPE_TYPE_IF );
    243243
    244244    i2=CompileBuffer(ESC_ENDIF,0);
    245245
    246246    //レキシカルスコープをレベルダウン
    247     GetLexicalScopes().End();
     247    compiler.codeGenerator.lexicalScopes.End();
    248248
    249249
     
    252252    if(i2==ESC_ELSE){
    253253        //jmp (endifまで)
    254         const CodeGenerator::PertialSchedule *pTempPertialSchedule = compiler.codeGenerator.op_jmp( 0, sizeof(long), true );
     254        const PertialSchedule *pTempPertialSchedule = compiler.codeGenerator.op_jmp( 0, sizeof(long), true );
    255255
    256256        compiler.codeGenerator.opfix_JmpPertialSchedule( pIfPertialSchedule );
     
    262262
    263263        //レキシカルスコープをレベルアップ
    264         GetLexicalScopes().Start( obp, SCOPE_TYPE_IF );
     264        compiler.codeGenerator.lexicalScopes.Start( obp, LexicalScope::SCOPE_TYPE_IF );
    265265
    266266        CompileBuffer(ESC_ENDIF,0);
    267267
    268268        //レキシカルスコープをレベルダウン
    269         GetLexicalScopes().End();
     269        compiler.codeGenerator.lexicalScopes.End();
    270270
    271271
     
    340340    if(!Parameter[0]) SetError(10,"While",cp);
    341341
    342     const CodeGenerator::PertialSchedule *pWhilePertialSchedule = NULL;
     342    const PertialSchedule *pWhilePertialSchedule = NULL;
    343343    Type tempType;
    344344    if( !NumOpe(Parameter,Type(),tempType) ){
     
    408408
    409409        //jne
    410         const CodeGenerator::PertialSchedule *pTempPertialSchedule1 = compiler.codeGenerator.op_jne( 0, sizeof(char), true );
     410        const PertialSchedule *pTempPertialSchedule1 = compiler.codeGenerator.op_jne( 0, sizeof(char), true );
    411411
    412412        //cmp ebx,0
     
    414414
    415415        //jne
    416         const CodeGenerator::PertialSchedule *pTempPertialSchedule2 = compiler.codeGenerator.op_jne( 0, sizeof(char), true );
     416        const PertialSchedule *pTempPertialSchedule2 = compiler.codeGenerator.op_jne( 0, sizeof(char), true );
    417417
    418418        //jmp (Wendまでジャンプ)
     
    436436
    437437    //レキシカルスコープをレベルアップ
    438     GetLexicalScopes().Start( obp, SCOPE_TYPE_WHILE );
     438    compiler.codeGenerator.lexicalScopes.Start( obp, LexicalScope::SCOPE_TYPE_WHILE );
    439439
    440440    //While内をコンパイル
    441441    CompileBuffer(0,COM_WEND);
    442442
    443     GetLexicalScopes().CallDestructorsOfScopeEnd();
     443    compiler.codeGenerator.lexicalScopes.CallDestructorsOfScopeEnd();
    444444
    445445    //jmp ...
     
    447447
    448448    //レキシカルスコープをレベルダウン
    449     GetLexicalScopes().End();
     449    compiler.codeGenerator.lexicalScopes.End();
    450450
    451451    if( pWhilePertialSchedule )
     
    486486
    487487    //jmp ...
    488     const CodeGenerator::PertialSchedule *pTempPertialSchedule = compiler.codeGenerator.op_jmp( 0, sizeof(long), true );
     488    const PertialSchedule *pTempPertialSchedule = compiler.codeGenerator.op_jmp( 0, sizeof(long), true );
    489489
    490490    //Continueアドレスのバックアップとセット
     
    528528
    529529    //jmp [カウンタ減少の場合の判定を飛び越す]
    530     const CodeGenerator::PertialSchedule *pTempPertialSchedule2 = compiler.codeGenerator.op_jmp( 0, sizeof(long), true );
     530    const PertialSchedule *pTempPertialSchedule2 = compiler.codeGenerator.op_jmp( 0, sizeof(long), true );
    531531
    532532    //jeジャンプ先のオフセット値
     
    552552
    553553    //レキシカルスコープをレベルアップ
    554     GetLexicalScopes().Start( obp, SCOPE_TYPE_FOR );
     554    compiler.codeGenerator.lexicalScopes.Start( obp, LexicalScope::SCOPE_TYPE_FOR );
    555555
    556556    //For内をコンパイル
    557557    CompileBuffer(0,COM_NEXT);
    558558
    559     GetLexicalScopes().CallDestructorsOfScopeEnd();
     559    compiler.codeGenerator.lexicalScopes.CallDestructorsOfScopeEnd();
    560560
    561561    if(szNextVariable[0]){
     
    569569
    570570    //レキシカルスコープをレベルダウン
    571     GetLexicalScopes().End();
     571    compiler.codeGenerator.lexicalScopes.End();
    572572
    573573    //jeジャンプ先のオフセット値
     
    588588
    589589    //レキシカルスコープをレベルアップ
    590     GetLexicalScopes().Start( obp, SCOPE_TYPE_DO );
     590    compiler.codeGenerator.lexicalScopes.Start( obp, LexicalScope::SCOPE_TYPE_DO );
    591591
    592592    //Do内をコンパイル
    593593    CompileBuffer(0,COM_LOOP);
    594594
    595     GetLexicalScopes().CallDestructorsOfScopeEnd();
    596 
    597     const CodeGenerator::PertialSchedule *pDoPertialSchedule = NULL;
     595    compiler.codeGenerator.lexicalScopes.CallDestructorsOfScopeEnd();
     596
     597    const PertialSchedule *pDoPertialSchedule = NULL;
    598598
    599599    extern char *basbuf;
     
    702702
    703703                //jne
    704                 const CodeGenerator::PertialSchedule *pTempPertialSchedule1 = compiler.codeGenerator.op_jne( 0, sizeof(char), true );
     704                const PertialSchedule *pTempPertialSchedule1 = compiler.codeGenerator.op_jne( 0, sizeof(char), true );
    705705
    706706                //cmp ebx,0
     
    708708
    709709                //jne
    710                 const CodeGenerator::PertialSchedule *pTempPertialSchedule2 = compiler.codeGenerator.op_jne( 0, sizeof(char), true );
     710                const PertialSchedule *pTempPertialSchedule2 = compiler.codeGenerator.op_jne( 0, sizeof(char), true );
    711711
    712712                if(basbuf[i3]=='0'){
     
    723723
    724724                    //jmp 2(ループを続ける)
    725                     const CodeGenerator::PertialSchedule *pTempPertialSchedule3 = compiler.codeGenerator.op_jmp( 0, sizeof(char), true );
     725                    const PertialSchedule *pTempPertialSchedule3 = compiler.codeGenerator.op_jmp( 0, sizeof(char), true );
    726726
    727727                    compiler.codeGenerator.opfix_JmpPertialSchedule( pTempPertialSchedule1 );
     
    767767
    768768    //jmp ...
    769     const CodeGenerator::PertialSchedule *pTempPertialSchedule = compiler.codeGenerator.op_jmp( 0, sizeof(long), true );
     769    const PertialSchedule *pTempPertialSchedule = compiler.codeGenerator.op_jmp( 0, sizeof(long), true );
    770770
    771771    //レキシカルスコープをレベルダウン
    772     GetLexicalScopes().End();
     772    compiler.codeGenerator.lexicalScopes.End();
    773773
    774774    //jmpジャンプ先のオフセット値
     
    792792
    793793    //未解放のローカルオブジェクトのデストラクタを呼び出す
    794     GetLexicalScopes().CallDestructorsOfReturn();
     794    compiler.codeGenerator.lexicalScopes.CallDestructorsOfReturn();
    795795
    796796    //jmp ...(End Sub/Function)
     
    10491049
    10501050    //レキシカルスコープをレベルアップ
    1051     GetLexicalScopes().Start( obp, SCOPE_TYPE_SELECT );
     1051    compiler.codeGenerator.lexicalScopes.Start( obp, LexicalScope::SCOPE_TYPE_SELECT );
    10521052
    10531053    //Select Case内をコンパイル
     
    10661066
    10671067    //レキシカルスコープをレベルダウン
    1068     GetLexicalScopes().End();
     1068    compiler.codeGenerator.lexicalScopes.End();
    10691069
    10701070    pCaseSchedule=temp_pCaseSchedule;
Note: See TracChangeset for help on using the changeset viewer.