It is interesting to see that this approach has been used by Niklaus Wirth in most of his compilers, see "Compiler Construction - The Art of Niklaus Wirth" by Hanspeter Mössenböck [0].
This technique was also described by David R. Hanson in "Code Improvement via Lazy Evaluation", 1980 [1] and "Simple Code Optimizations", 1983 [2].
[0] https://github.com/lboasso/oberonc/blob/master/doc/Moe00b.pd...
[1] http://storage.webhop.net/documents/lazyevaluation.pdf
[2] http://storage.webhop.net/documents/simpleopt.pdf