1. A method comprising: mapping a first program to a context-free grammar; performing grammar transformations on the context-free grammar to produce a transformed context-free grammar representing the first program; and constructing a second program having a program structure different than a program structure of the first program from the transformed context-free grammar.