Sì, è possibile decodificare un compilatore. Un esempio fuori dalla mia testa, microsoft ha decodificato il compilatore JavaScript originale (magari poi in livescript).
Perché questo è generalmente cattivo? Bene, considera quello che è successo con JS, Microsoft quasi esattamente duplicato JavaScript, fino agli errori. Ciò significava che ogni stravaganza nell'implementazione che in realtà non era destinata a esserci era ora parte della loro versione. Infatti, in seguito durante il processo di standardizzazione, MS ha forzato alcuni di questi bug nello standard *!
Nel tuo esempio, è quasi impossibile decodificare C ++ / C, il comportamento definito dall'implementazione / il comportamento indefinito è dilagante! Non avresti modo di separare comportamenti standard, indefiniti e scorretti. Ciò porterebbe a un'implementazione substandard e eccessivamente complicata da parte tua.
TLDR: possibile, si. Consigliabile, no.
* E successivamente hanno versato denaro in dattiloscritto cercando di annullare alcuni di questi errori