1. A method comprising: mapping, by a computing platform, a first program to a context-free grammar, the context free grammar being at least a 4-tuple grammar and induced from a control-flow graph; performing, by the computing platform, grammar transformations on the context-free grammar to produce a transformed context-free grammar representing the first program, the transformed context free grammar being at least a 4-tuple grammar, the transformed context free grammar including separating function parameters and variables; and constructing, by the computing platform, a second program having a program structure different than a program structure of the first program from the transformed context-free grammar.
7. The method of claim 1 , wherein the context-free grammar is at least an 8-tuple .GAMMA.=(N, T, s, P, F, B, D, .tau.), where N is a set of control elements including functions and control structures, T is a set of program statements, S.di-elect cons.N is a main function, and a P is a relation from the control elements to strings of the program statements and the control elements, and wherein each production in P is of the form A.fwdarw..beta. where A is a control element and .beta. is a possibly empty string of the program statements and the control elements, and wherein F.OR right.N.times.T is a set of function control elements, wherein for (n,o).di-elect cons.F,n is the function's name, and o is the label of the function's initial block, and wherein B is a set of blocks, where for (l,I,n,.rho.,.chi.).di-elect cons.B,l.di-elect cons.T is a block label, I is a set of instructions in the block, n.di-elect cons.N.orgate.{.epsilon.} is at least one of the name of a function called and an empty string, and .rho. and .chi. are a set of parameters and variables respectively accessed in the block, and wherein D is the distribution of the parameters and the variables across the functions, and wherein for (n,R,V).di-elect cons.D,n.di-elect cons.F is the function's name, R is a set function parameters, and V is a set of variables declared in the function, and wherein .tau..OR right.T is a set of program statements which represent the state-changing statement of the first program.