예제 #1
0
        //private List<SymbolDefField> nestedSymbolInfos;

        public override Exp Analy( )
        {
            CreateContext();
            AnalyFields();
            BodyExp.SetContext(NestedExpContext);
            BodyExp.SetIsNested(true);
            if (FnRetType == ZTypeManager.ZBOOL)
            {
                retSymbol = new SymbolLocalVar("$RetResult", FnRetType);
            }
            return(this);
        }
예제 #2
0
        private void CreateContext()
        {
            NestedClassContext           = new ContextClass(this.ExpContext.FileContext);
            NestedClassContext.ClassName = this.ExpContext.ProcContext.CreateNestedClassName();

            NestedProcContext                    = new ContextProc(NestedClassContext);
            NestedProcContext.ProcName           = NestedClassContext.ClassName + "$CALL";
            NestedProcContext.ProcManagerContext = NestedClassContext.ProcManagerContext;
            NestedProcContext.ProcManagerContext.Add(NestedProcContext);

            NestedStmt             = new StmtCall();
            NestedStmt.ProcContext = NestedProcContext;

            NestedExpContext = new ContextExp(NestedProcContext, NestedStmt);
            BodyExp.SetContext(NestedExpContext);
            CreateEmitContext();
        }