- basic.DefSubr (set_value, "set", 2, 2, "=");
- basic.DefSpecial (and, "and", 1, -1, "&&");
- basic.DefSpecial (or, "or", 1, -1, "||");
- basic.DefSubr (not, "not", 1, 1, "!");
- basic.DefSubr (add, "add", 2, -1, "+");
- basic.DefSubr (mul, "mul", 2, -1, "*");
- basic.DefSubr (sub, "sub", 1, -1, "-");
- basic.DefSubr (div, "div", 2, -1, "/");
- basic.DefSubr (mod, "mod", 2, 2, "%");
- basic.DefSubr (logior, "logior", 2, -1, "|");
- basic.DefSubr (logand, "logand", 2, -1, "&");
- basic.DefSubr (add_set, "add-set", 2, -1, "+=");
- basic.DefSubr (mul_set, "mul-set", 2, -1, "*=");
- basic.DefSubr (sub_set, "sub-set", 2, -1, "-=");
- basic.DefSubr (div_set, "div-set", 2, -1, "/=");
- basic.DefSubr (mod_set, "mod-set", 2, 2, "%=");
- basic.DefSubr (logior_set, "logior-set", 2, -1, "|=");
- basic.DefSubr (logand_set, "logand-set", 2, -1, "&=");
- basic.DefSubr (lsh, "lsh", 2, 2, "<<");
- basic.DefSubr (rsh, "rsh", 2, 2, ">>");
- basic.DefSubr (lsh_set, "lsh-set", 2, 2, "<<=");
- basic.DefSubr (rsh_set, "rsh-set", 2, 2, ">>=");
- basic.DefSubr (eq, "eq", 2, -1, "==");
- basic.DefSubr (noteq, "noteq", 2, 2, "!=");
- basic.DefSubr (less_than, "lt", 2, -1, "<");
- basic.DefSubr (less_eq, "le", 2, -1, "<=");
- basic.DefSubr (greater_than, "gt", 2, -1, ">");
- basic.DefSubr (greater_eq, "ge", 2, -1, ">=");
- basic.DefSubr (append, "append", 0, -1);
- basic.DefSubr (concat, "concat", 0, -1);
- basic.DefSubr (nth, "nth", 2, 2);
- basic.DefSubr (copy, "copy", 1, 1);
- basic.DefSubr (ins, "ins", 3, 3);
- basic.DefSubr (del, "del", 3, 3);
- basic.DefSubr (eval_clause, "eval", 1, 1);
- basic.DefSpecial (quote_clause, "quote", 1, 1);
- basic.DefSpecial (progn_clause, "progn", 0, -1, "expr");
- basic.DefSpecial (if_clause, "if", 2, 3);
- basic.DefSpecial (when_clause, "when", 1, -1);
- basic.DefSpecial (while_clause, "while", 1, -1);
- basic.DefSpecial (cond_clause, "cond", 1, -1);
- basic.DefSpecial (foreach_clause, "foreach", 3, -1);
-
- Fprogn = basic.GetFunc (Nprogn);
+ basic.DefSubr (Fset, "set", true, 1, 1, "=");
+ basic.DefSubr (Fnot, "not", false, 1, 1, "!");
+ basic.DefSubr (Fadd, "add", true, 1, -1, "+");
+ basic.DefSubr (Fmul, "mul", true, 1, -1, "*");
+ basic.DefSubr (Fsub, "sub", true, 1, -1, "-");
+ basic.DefSubr (Fdiv, "div", true, 1, -1, "/");
+ basic.DefSubr (Fmod, "mod", true, 1, 2, "%");
+ basic.DefSubr (Flogior, "logior", true, 1, -1, "|");
+ basic.DefSubr (Flogand, "logand", true, 1, -1, "&");
+ basic.DefSubr (Flsh, "lsh", true, 1, 2, "<<");
+ basic.DefSubr (Frsh, "rsh", true, 1, 2, ">>");
+ basic.DefSubr (Feq, "eq", false, 2, -1, "==");
+ basic.DefSubr (Fnoteq, "noteq", false, 2, 2, "!=");
+ basic.DefSubr (Flt, "lt", false, 2, -1, "<");
+ basic.DefSubr (Fle, "le", false, 2, -1, "<=");
+ basic.DefSubr (Fgt, "gt", false, 2, -1, ">");
+ basic.DefSubr (Fge, "ge", false, 2, -1, ">=");
+ basic.DefSubr (Fappend, "append", true, 0, -1);
+ basic.DefSubr (Fconcat, "concat", true, 0, -1);
+ basic.DefSubr (Fnth, "nth", false, 2, 2);
+ basic.DefSubr (Fcopy, "copy", false, 1, 1);
+ basic.DefSubr (Fins, "ins", true, 2, 2);
+ basic.DefSubr (Fdel, "del", true, 2, 2);
+ basic.DefSubr (Feval, "eval", false, 1, 1);
+ basic.DefSubr (Fbreak, "break", false, 0, 1);
+ basic.DefSubr (Freturn, "return", false, 0, 1);
+ basic.DefSpecial (Fand, "and", 1, -1, "&&");
+ basic.DefSpecial (For, "or", 1, -1, "||");
+ basic.DefSpecial (Fprogn, "progn", 0, -1, "expr");
+ basic.DefSpecial (Fif, "if", 2, 3);
+ basic.DefSpecial (Fwhen, "when", 1, -1);
+ basic.DefSpecial (Floop, "loop", 1, -1);
+ basic.DefSpecial (Fwhile, "while", 1, -1);
+ basic.DefSpecial (Fcond, "cond", 1, -1);
+ basic.DefSpecial (Fforeach, "foreach", 2, -1);
+ basic.DefSpecial (Fquote, "quote", 1, 1);
+ basic.DefSpecial (Ftype, "type", 1, 1);
+ basic.DefSpecial (Fcatch, "catch", 2, 2);
+ basic.DefSpecial (Fthrow, "throw", 1, 2);