Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/obj/tools/lisp/lex.c b/obj/tools/lisp/lex.c
new file mode 100644
index 0000000..a725c86
--- /dev/null
+++ b/obj/tools/lisp/lex.c
@@ -0,0 +1,73 @@
+// LEX.C -- creating tolkens from input string
+// (c) 1994 by Hate@MorgenGrauen, TUBmud, NightFall
+// --
+// Copy, change and distribute this bit of software as much as you like,
+// but keep the name of the original author in the header.
+
+#pragma strong_types
+
+#include "tweak.h"
+
+private inherit HOME("microcode");
+private inherit HOME("escape");
+
+private nosave mixed *tokens;
+
+static void create()
+{
+ microcode::create();
+ tokens = ({});
+}
+
+nomask private mixed make_symbol(string str)
+{
+ mixed sym;
+
+ if(!stringp(str)) return str;
+ if(sym = get_function(str)) // FUNCTIONS
+ return sym;
+ if(str == "list")
+ return #'({;
+ if(str[0] == '"')
+ return implode(map(regexplode(str, "\\\\."), #'unescape), "");
+ if((str[0] >= '0' && str[0] <= '9') || // NUMBERS
+ ((str[0] == '+' || str[0] == '-') &&
+ (str[1] >= '0' && str[1] <= '9')))
+ if(member(str, '.') != -1) // FLOATS
+ return to_float(str);
+ else
+ return to_int(str); // INTEGERS
+
+ if(str == "(" || str == ")" || str == "'")
+ return str;
+
+ return quote(str); // SYMBOLS
+}
+
+nomask private void get_tokens()
+{
+ mixed input, tmp;
+
+ do {
+ if(!input = get_line()) return 0;
+ // splitting the input line in string tokens and removing comments
+ tmp = regexp(regexplode(input,
+ "(\"(\\\\.|[^\\\\\"])*\")|[;].*|[() \t']"),
+ "^[^;]")
+ - ({""," ","\t"});
+ tokens += map(tmp, #'make_symbol);
+ }
+ while(!sizeof(tokens));
+}
+
+nomask static int lex(mixed token)
+{
+ if(!sizeof(tokens)) get_tokens();
+ if(sizeof(tokens))
+ {
+ token = tokens[0];
+ tokens[0..0] = ({});
+ return 1;
+ }
+ return 0;
+}