static Lisp lispParse(S s) { ret new lispParse_X(s).parse(); } sclass lispParse_X { L tok; int i; *(S s) { tok = javaTokC(s); } Lisp parse() { if (i >= l(tok)) null; S t = tok.get(i++); Lisp l = lisp(unquote(t)); if (neq(get(tok, i), "(")) ret l; ++i; while (i < l(tok) && neq(get(tok, i), ")")) { l.add(parse()); if (eq(get(tok, i), ",")) ++i; } if (eq(get(tok, i), ")")) ++i; ret l; } }