A tiny compiler for a language featuring LL(2) with Lexer, Parser, ASM-like codegen and VM. Complex enough to give you a flavour of how the "real" thing works whilst not being a mere toy example
If an ID exceeds MAX_LEN - 1 (99) characters, the above code block will overflow the id_name buffer.
realloc can be called to increase the size of the buffer (does this break an assumption about the buffer size elsewhere in the code?).
Alternatively, a check could be added to print and exit instead of overflowing.