Exemplo n.º 1
0
        protected static LithpFunctionDefinitionNative builtin(string name, LithpFunctionDefinitionDelegate fn, params string[] args)
        {
            LithpFunctionDefinitionNative x = new LithpFunctionDefinitionNative(name, args, fn);

            builtins[x.Name] = x;
            return(x);
        }
        public LithpFunctionDefinitionNative(LithpAtom name, string[] parameters,
                                             LithpFunctionDefinitionDelegate body)
        {
            fn_name   = name;
            fn_params = parameters;
            fn_body   = body;
            Match x = Regex.Match(name, @"/(\d+|\*)$");

            if (x == Match.Empty)
            {
                arity        = fn_params.Count();
                this.fn_name = LithpAtom.Atom(name.Name + "/" + arity.Value.ToString());
            }
            else
            {
                string strArity = x.Groups[1].Value;
                if (strArity == "*")
                {
                    arity = null;
                }
                else
                {
                    arity = int.Parse(strArity);
                }
            }
        }
Exemplo n.º 3
0
 protected static LithpPrimitive CallBuiltin(LithpFunctionDefinitionDelegate fn,
                                             LithpOpChain state, LithpInterpreter interp, params LithpPrimitive[] parameters)
 {
     return(fn(new LithpList(parameters), state, interp));
 }