This is a common approach in compilers. It makes things more manageable. Each of the languages is simpler but has more constraints until you reach to the constraints that machine provides.<p>Here is example of compiler construction class: <a href="http:&#x2F;&#x2F;web.cs.ucla.edu&#x2F;~palsberg&#x2F;course&#x2F;cs132&#x2F;project.html" rel="nofollow">http:&#x2F;&#x2F;web.cs.ucla.edu&#x2F;~palsberg&#x2F;course&#x2F;cs132&#x2F;project.html</a><p>The mid languages were named after character in Winnie the Pooh, you can also see how factorial example looked in each stage.