This article sketches out the syntax for a small language and explains the design decisions.

Also see author’s other posts, particularly Notes on Compiler IRs which summarizes the IR designs of various new-ish languages.