Achieving Flexibility in Direct-Manipulation Programming Environments by Relaxing the Edit-Time Grammar