Language-Parametric Methods for Developing Interactive Programming Systems