Grammar-oriented programming