Two years ago, I was writing a modest Lisp interpreter in C. The evaluator was more or less working, but I was totally stuck on parsing user input (in other words, I had the E in REPL, but not the R). After spending an entire night banging my head against the parsing logic without making any progress, I began to despair that it would never work and I would have to throw the whole thing in the trash.
Well, that morning I met Andy. Groggy and frustrated, I told him about my problem. He said "Why don't you try tokenizing the input before parsing it?" This was a revelation to me. Yes, it turns out that reading a string character by character and trying to recursively convert it into a Lisp object all at once isn't the best way to do it. Who knew (aside from anyone who had ever learned anything about parsing)?
The resulting parser code: https://github.com/nickdrozd/lispinc/blob/master/parse.c
Anyway, I don't know anything about Zig, but Andy sure helped me out of that jam.