I don’t have an answer for why your code ran slow, but I used the clojure reader to handle parsing day 18 --
(defn parse-expr
[s]
(read-string (str "(" s ")")))
> (parse-expr "((2 + 4 * 9) * (6 + 9 * 8 + 6) + 6) + 2 + 4 * 2")
(((2 + 4 * 9) * (6 + 9 * 8 + 6) + 6) + 2 + 4 * 2)