Creating a programming language
Creating a programming language
There are two main directions here.
For General Purpose Language you need to define the language lexical idioms (control flow, data/types, state, dependency, etc.): basically how you express Turing Machine. Then you need to write a compiler that takes the AST and transforms it to LLVM IR (if we want to stay realistic). I can’t recommend any particular book regarding this, I read it in a classic Ullman’s book but it might be outdated. Take any book that has compilers in the title and a dragon on cover.
For Domain Specific Language, you need to parse the AST into a graph of execution and then walk and execute it. You don’t really need to design it first, as the language will have a limited application. You can even use Parse Tree both as AST and as IR, applying various optimisations in place. Here you take M. Fowler’s book on Domain Specific Languages and just read.
I’ve never touched the GP languages apart from some conference talks and uni, but I am keen on creating a DSL for every company I work in. That’s a good practice when things become very nasty and you just need something simple to express very complex logic.