Mitsubishi Electric Research Laboratories

Programs can be constructed and modi ed more rapidly and reliably if they are built out of standard fragments (clich es) than if they are written from scratch. Three experimental clich e-based program editors have been implemented, exploring the tradeo between power and simplicity. The Knowledge-Based Editor in Emacs (kbemacs) is the most powerful of the three editors. It supports a wide range of editing operations and can represent a wide range of clich es, because it uses an internal representation called plan diagrams, which combines features of owcharts and dataow schemas. Unfortunately, the need to convert back and forth between program text and plan diagrams causes kbemacs to be complex. The Tempest editor is the simplest and fastest of the three editors. Because it uses text as its internal representation, it does not have to do any conversions. Unfortunately, Tempest is not useful for editing programs, because the manipulations required when combining programming clich es are too complex to be performed directly on program text. However, Tempest's capabilities are useful in other, simpler contexts. The Ace editor retains much of the simplicity of Tempest while supporting much of the power of kbemacs. Ace is relatively simple, because it uses parse-trees as its internal representation. It achieves high power by using a specially modi ed programming-language grammar, which facilitates the representation and easy combination of clich es. This approach could be used to add powerful and e cient clich e-based editing capabilities to any programming environment. Submitted to ACM TOPLAS, March 1991. 201 Broadway Cambridge Massachusetts 02139 Publication History:1. First printing, TR 91-01, March 1991 Copyright c Mitsubishi Electric Research Laboratories, 1991 201 Broadway; Cambridge Massachusetts 02139 This work may not be copied or reproduced in whole or in part for any commercial purpose. Permission to copy in whole or in part without payment of fee is granted for nonpro t educational and research purposes provided that all such whole or partial copies include the following: a notice that such copying is by permission of Mitsubishi Electric Research Laboratories of Cambridge, Massachusetts; an acknowledgment of the authors and individual contributions to the work; and all applicable portions of the copyright notice. Copying, reproduction, or republishing for any other purpose shall require a license with payment of fee to Mitsubishi Electric Research Laboratories. All rights reserved.

[1]  Richard C. Waters,et al.  A Method for Analyzing Loop Programs , 1979, IEEE Transactions on Software Engineering.

[2]  R. Stallman EMACS the extensible, customizable self-documenting display editor , 1981, SIGPLAN SIGOA Symposium on Text Manipulation.

[3]  Peter H. Feiler,et al.  An Incremental Programming Environment , 1981, IEEE Transactions on Software Engineering.

[4]  Thomas Reps,et al.  Programming Techniques and Data Structures , 1981 .

[5]  Richard C. Waters,et al.  Program editors should not abandon text oriented commands , 1982, SIGP.

[6]  Richard C. Waters User Format Control in a LISP Prettyprinter , 1983, TOPL.

[7]  Kate Ehrlich,et al.  Empirical Studies of Programming Knowledge , 1984, IEEE Transactions on Software Engineering.

[8]  Richard C. Waters PP: A LISP Pretty Printing System , 1984 .

[9]  Peter J. Sterpe TEMPEST: A Template Editor for Structured Text , 1985 .

[10]  Richard C. Waters The Programmer's Apprentice: A Session with KBEmacs , 1985, IEEE Transactions on Software Engineering.

[11]  John J. Shilling Fred: a program development tool , 1985 .

[12]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[13]  Yang Meng Tan,et al.  ACE: A Cliché-based Program Structure Editor , 1987 .

[14]  A. Lomax The suitability of language syntaxes for program generation , 1987, SIGP.

[15]  Richard C. Waters,et al.  The Programmer''s Apprentice: A Program Design Scenario , 1987 .

[16]  D. Y. Y. Yun,et al.  Software reusability: a survey and a reusability experiment , 1987, FJCC.

[17]  Charles Richter,et al.  PARIS: a system for reusing partially interpreted schemas , 1987, ICSE '87.

[18]  Pierpaolo Degano,et al.  Efficient incremental LR parsing for syntax-directed editors , 1988, TOPL.

[19]  Gregor Snelting,et al.  The PSG system: from formal language definitions to interactive programming environments , 1986, TOPL.

[20]  C. Rich,et al.  Formalizing reusable software components in the programmer's apprentice , 1989 .

[21]  Linda M. Wills,et al.  Automated Program Recognition: A Feasibility Demonstration , 1987, Artif. Intell..

[22]  Richard C. Waters,et al.  The programmer's apprentice , 1990, ACM Press frontier series.

[23]  Linda M. Wills,et al.  Recognizing a program's design: a graph-parsing approach , 1990, IEEE Software.

[24]  Yang Meng Tan,et al.  Toward a design apprentice: supporting reuse and evolution in software design , 1991, SOEN.

[25]  Richard C. Waters,et al.  Automatic transformation of series expressions into loops , 1991, TOPL.