Ignore:
Timestamp:
May 8, 2008, 3:52:48 PM (16 years ago)
Author:
dai_9181
Message:

DelegateクラスのLexicalAnalyzerクラスへの依存性をなくした。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Delegate.cpp

    r552 r581  
    213213}
    214214
     215void LexicalAnalyzer::RefleshDelegateParameterAndReturnType( Delegate &dg )
     216{
     217    compiler.GetNamespaceSupporter().SetImportedNamespaces( dg.GetImportedNamespaces() );
     218    compiler.GetNamespaceSupporter().SetLivingNamespaceScopes( dg.GetNamespaceScopes() );
     219
     220    // パラメータを解析
     221    Jenga::Common::Strings parameterStrings;
     222    SplitParameter( dg.GetParamStr(), parameterStrings );
     223    int sourceIndex;
     224    ActiveBasic::Compiler::LexicalAnalyzer::AnalyzeParameter( dg.GetParameters(), parameterStrings, sourceIndex );
     225    dg.SetSourceIndex( sourceIndex );
     226
     227    // 動的パラメータを作る
     228    dg.GetDynamicParams() = dg.GetParameters();
     229    dg.GetDynamicParams().insert( dg.GetDynamicParams().begin(), new Parameter( "_System_LocalThis", Type( DEF_PTR_VOID ) ) );
     230
     231    if( dg.IsFunction() )
     232    {
     233        // 戻り値を取得
     234        Type returnType;
     235        if( !compiler.StringToType( dg.GetReturnTypeName(), returnType ) )
     236        {
     237            compiler.errorMessenger.Output(3,dg.GetReturnTypeName(),sourceIndex);
     238        }
     239        else
     240        {
     241            dg.SetReturnType( returnType );
     242        }
     243    }
     244}
     245
    215246void LexicalAnalyzer::RefleshDelegatesParameterAndReturnType( Delegates &delegates )
    216247{
     
    219250    {
    220251        Delegate &dg = *delegates.Iterator_GetNext();
    221         dg.RefleshParameterAndReturnType();
    222     }
    223 }
     252        RefleshDelegateParameterAndReturnType( dg );
     253    }
     254}
Note: See TracChangeset for help on using the changeset viewer.