コード例 #1
0
ファイル: ZCodeParser.cs プロジェクト: pyzh/ZCompileCore2
        void parseBracket()
        {
            i++;
            List <ZMethodArg> bracketargs = new List <ZMethodArg>();

            //Dictionary<string, TKTProcArg> dict = new Dictionary<string, TKTProcArg>();
            for (; i < Code.Length; i++)
            {
                ZMethodArg arg = parseArg();
                if (arg != null)
                {
                    bracketargs.Add(arg);
                }
                //dict.Add(arg.ArgName, arg);
                if (ch == '\0')
                {
                    break;
                }
                if (ch == ')')
                {
                    i++;
                    break;
                }
            }
            //TKTProcBracket bracket = new TKTProcBracket(bracketargs,dict);
            desc.Add(bracketargs.ToArray());
        }
コード例 #2
0
ファイル: Exp.cs プロジェクト: xonoer/ZCompileCore2
        protected void EmitArgs(ZCallDesc expProcDesc, ZMethodDesc searchedProcDesc)
        {
            var size = expProcDesc.Args.Count;;

            for (int i = 0; i < size; i++)
            {
                var        arg     = expProcDesc.Args[i];
                var        exp     = (arg.Data as Exp);
                ZMethodArg procArg = searchedProcDesc.Args[i];
                exp.RequireType = (procArg as ZMethodNormalArg).ArgZType;// ZRealType.CreateZType(procArg.ArgType);
                exp.Emit();
            }
        }
コード例 #3
0
 protected void AnalyArgLambda(ZMethodDesc zdesc)
 {
     //ZMethodDesc zdesc = SearchedMethod.ZDesces[0];
     for (int i = 0; i < ExpProcDesc.Args.Count; i++)
     {
         ZMethodArg procArg = zdesc.Args[i];
         if (procArg is ZMethodNormalArg)
         {
             ZMethodNormalArg znarg = (procArg as ZMethodNormalArg);
             if (ZLambda.IsFn(znarg.ArgZType.SharpType))
             {
                 ZCallArg     expArg       = ExpProcDesc.Args[i];
                 Exp          exp          = expArg.Data as Exp;
                 ExpNewLambda newLambdaExp = new ExpNewLambda(exp, znarg.ArgZType);
                 newLambdaExp.SetContext(this.ExpContext);
                 expArg.Data = newLambdaExp;
                 newLambdaExp.Analy();
             }
         }
     }
 }