I have a background project of writing an Imp to C translator - one that will produce almost 'native' C that would be maintainable rather than something that looks like 3-address code output by a compiler... It's now handling quite a lot of Imp content but still needs some manual tweaks to produce runnable code. To sort out what is still needed, I've been translating a few Imp programs and manually filling in the missing features, in advance of getting the translator to handle them automatically. Currently I'm porting the recently re-developed Imp77 compiler, and already have pass1.imp working as pass1.c, with pass2.imp well on the way. I'm hoping it'll actually be usable as well as being a good test, because the source code release of the first attempt at an Imp compiler by Andy Davis was missing a key component - the Skimp86 bootstrap he used to compile the compiler. And John McMullin's re-working of Andy's 16-bit compiler to a modern 32-bit code generator is good and works, but is quite awkward to build on Linux and uses a lot of code that requires a Pascal system to be installed. I do realise that relying on C rather than Pascal is somewhat of the same issue, but C is ubiquitous, well supported, and not going away. That said, to get the full expressiveness of Imp in C I have relied *heavily* on GCC extensions to C, in particular the use of nested procedures. The C translation was done some months ago. It's possible that JDM's sources and the ones I;m using have diverged a little, but from an extensive eyeballing and use of diff I don't think there have been any changes to the master source that are not merely cosmetic (formatting, and comments). The pass1.imp I've been referring to while comparing the pass1.c listing is the same one as in: https://raw.githubusercontent.com/siliconsam/imp2021/main/source/imp/compiler/pass1.imp The grammar that I've been referring to also matches the one at https://raw.githubusercontent.com/siliconsam/imp2021/main/source/imp/compiler/i77.grammar with the generated tables from: https://raw.githubusercontent.com/siliconsam/imp2021/main/source/tools/utils/i77.tables.imp (although I think I do have a compatible C version of takeon somewhere)