I have finally abandoned my attempt at a new Lisp-like language. I don't think I realised how hard it would be. Converting a text file of my new language into an AST (an active syntax tree) was the easy part. The hard part was storing variables (globals v locals, scope, identically named vars overriding each other, etc...) and calling functions (i.e. replacing the params in the function) among other things.
I should have planned it all better as I was also going round in circles with my language definition: I was changing it to fit one circumstance, but then forgetting why I'd done that, and then I'd change it back again to fit the original circumstance.
However, the final nail in the coffin was my thought "what am I going to do with it when I've finished?" It obviously had no IDE, barely any libraries, no debugging facilities, probably lots of bugs, and probably lots of flaws in the design. Why would I, never mind anyone else, choose to use it when there's plenty of other better languages out there?
Still, it's given me a new insight into how languages (might) work, and hopefully made me a better programmer. Now onto my next project: a mega-multithreaded program, where every little aspect has it's own thread. It's how the human body (i.e. cells) work (I think) so it must be a step in the right direction. And with all this talk of parallel programming, it can't do any harm for me to fail at that as well.