obviously it doesn't work for recursive grammars yet..... well need to do laziness another way then