示例#1
0
        LuaFuncName getFuncname(LuaAST funcname)
        {
            LuaFuncName rst = new LuaFuncName();

            foreach (LuaAST n in funcname.ComponentGroup)
            {
                LuaVariable v = getVariable(n);
                rst.Names.Add(v.Name);
            }
            if (funcname.Components.ContainsKey("colonName"))
            {
                LuaVariable v = getVariable(funcname.Components["colonName"]);
                rst.Names.Add(v.Name);
                rst.isColon = true;
            }

            return(rst);
        }
示例#2
0
        void walkFunctionExp(LuaAST st)
        {
            LuaFuncName funcname = getFuncname(st.Components["funcname"]);

            if (funcname.Names.Count == 1)
            {
                Function f = new Function(funcname.Names[0]);
                f.ReturnType = m_ac.Types.NullType;
                f.StartPos   = st.Components["funcname"].start;

                string param = "()";
                LuaAST body  = st.Components["funcbody"];
                if (body.Components.ContainsKey("parlist"))
                {
                    param = "(";
                    List <LuaVariable> vl = null;
                    if (body.Components["parlist"].Components.ContainsKey("namelist"))
                    {
                        vl = getNamelist(body.Components["parlist"].Components["namelist"]);
                        for (int i = 0; i < vl.Count; i++)
                        {
                            param += (i == 0 ? "" : ",") + vl[i].Name;
                        }
                    }
                    if (body.Components["parlist"].Token != null)
                    {
                        param += ((vl == null || vl.Count == 0) ? "" : ",") + "...";
                    }

                    param += ")";
                }
                f.Param.Add(param);
                f.Desc.Add("");
                f.Static = true;
                m_currentScope.addFunction(f);
            }
            walkFuncionBody(st.Components["funcbody"]);
        }
示例#3
0
        LuaFuncName getFuncname(LuaAST funcname) {
            LuaFuncName rst = new LuaFuncName();
            foreach (LuaAST n in funcname.ComponentGroup) {
                LuaVariable v = getVariable(n);
                rst.Names.Add(v.Name);
            }
            if(funcname.Components.ContainsKey("colonName")){
                LuaVariable v = getVariable(funcname.Components["colonName"]);
                rst.Names.Add(v.Name);
                rst.isColon = true;
            }

            return rst;
        }