A tutorial introduction to grammatical programming