Beispiel #1
0
        //------------------------------------------------------------
        // コンストラクタ。
        public FunctionSymbolNode(
            TypeSymbolNode aParent
            , ModuleContext aModuleContext
            , MemberFunctionDecl aFunctionDecl
            )
        {
            mParent        = aParent;
            mModuleContext = aModuleContext;
            mFunctionDecl  = aFunctionDecl;

            // TypeInfo生成
            {// 戻り値
                FunctionReturnValueDecl retValDecl = aFunctionDecl.ReturnValueDecl;
                mReturnTypeInfo = createTypeInfo(
                    retValDecl.TypePath
                    , retValDecl.IsConst
                    , false // isIn
                    , retValDecl.IsRef
                    );
            }
            {// 引数
                mArgTypeInfos = new List <ArgTypeInfo>();
                foreach (FunctionArgumentDecl argDecl in aFunctionDecl.ArgDeclList)
                {
                    mArgTypeInfos.Add(new ArgTypeInfo(argDecl.Ident, createTypeInfo(
                                                          argDecl.TypePath
                                                          , argDecl.IsConst
                                                          , argDecl.IsIn
                                                          , argDecl.IsRef
                                                          )));
                }
            }
        }
 //------------------------------------------------------------
 // コンストラクタ。
 public SemanticAnalyzeComponent(
     SymbolTree.ErrorInfoHolder aErrorInfoHolder
     , ModuleContext aModuleContext
     , TypeSymbolNode aTypeSymbolNode
     , OnSymbolNodeCreate aOnSymbolNodeCreate
     , ISymbolNode aPrevSymbolNode
     )
 {
     ErrorInfoHolder          = aErrorInfoHolder;
     ModuleContext            = aModuleContext;
     TypeSymbolNode           = aTypeSymbolNode;
     OnSymbolNodeCreateMethod = aOnSymbolNodeCreate;
     PrevSymbolNode           = aPrevSymbolNode;
 }
Beispiel #3
0
 //------------------------------------------------------------
 // コンストラクタ。 
 public TypeSymbol(TypeSymbolNode aNode)
 {
     mType = Type.Symbol;
     mNode = aNode;
 }
Beispiel #4
0
 //------------------------------------------------------------
 // コンストラクタ。
 public ModuleSymbolNode(ISymbolNode aParent, ModuleContext aModuleContext)
 {
     mTypeNode = new TypeSymbolNode(aParent, aModuleContext, aModuleContext.ModuleDef.StaticTypeDef);
 }