+ static Xexpression ()
+ {
+ basic.DefSubr (set_value, "set", true, 1, 1, "=");
+ basic.DefSubr (not, "not", false, 1, 1, "!");
+ basic.DefSubr (add, "add", true, 1, -1, "+");
+ basic.DefSubr (mul, "mul", true, 1, -1, "*");
+ basic.DefSubr (sub, "sub", true, 1, -1, "-");
+ basic.DefSubr (div, "div", true, 1, -1, "/");
+ basic.DefSubr (mod, "mod", true, 1, 2, "%");
+ basic.DefSubr (logior, "logior", true, 1, -1, "|");
+ basic.DefSubr (logand, "logand", true, 1, -1, "&");
+ basic.DefSubr (lsh, "lsh", true, 1, 2, "<<");
+ basic.DefSubr (rsh, "rsh", true, 1, 2, ">>");
+ basic.DefSubr (eq, "eq", false, 2, -1, "==");
+ basic.DefSubr (noteq, "noteq", false, 2, 2, "!=");
+ basic.DefSubr (less_than, "lt", false, 2, -1, "<");
+ basic.DefSubr (less_eq, "le", false, 2, -1, "<=");
+ basic.DefSubr (greater_than, "gt", false, 2, -1, ">");
+ basic.DefSubr (greater_eq, "ge", false, 2, -1, ">=");
+ basic.DefSubr (append, "append", true, 0, -1);
+ basic.DefSubr (concat, "concat", true, 0, -1);
+ basic.DefSubr (nth, "nth", false, 2, 2);
+ basic.DefSubr (copy, "copy", false, 1, 1);
+ basic.DefSubr (ins, "ins", true, 2, 2);
+ basic.DefSubr (del, "del", true, 2, 2);
+ basic.DefSubr (eval_clause, "eval", false, 1, 1);
+ basic.DefSubr (break_clause, "break", false, 0, 1);
+ basic.DefSubr (return_clause, "return", false, 1, 1);
+ basic.DefSpecial (and, "and", 1, -1, "&&");
+ basic.DefSpecial (or, "or", 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 (loop_clause, "loop", 1, -1);
+ basic.DefSpecial (while_clause, "while", 1, -1);
+ basic.DefSpecial (cond_clause, "cond", 1, -1);
+ basic.DefSpecial (foreach_clause, "foreach", 2, -1);
+ basic.DefSpecial (quote_clause, "quote", 1, 1);
+ basic.DefSpecial (type_clause, "type", 1, 1);
+
+ Fprogn = basic.GetFunc (Nprogn);
+ }