The mathematical theory of context free languages