TL;DR: It is demonstrated how powerful symbolic debuggers may be implemented with the aid of an incremental compiler in a distributed context, in this volume of papers.
Abstract: A Programming Environment is a system that provides computer assistance during software development and maintenance The primary objective of this work concerns practically usable methods and tools in the construction of incremental and integrated programming environments that provide good support for debugging and testing of programs in a distributed context, in our case a host-target configuration Such a system, called DICE-Distributed Incremental Compiling Environment, has been constructed and currently supports development of PASCAL programs Three of the papers in this volume are concerned with this topic
It is demonstrated how powerful symbolic debuggers may be implemented with the aid of an incremental compiler Methods for statement-level incremental compilation are described Strategies suitable for implementing programming environments are discussed and exemplified by the DICE system Some preliminary experience from the use of the prototype version of the DICE system is given The concept of Consistent Incremental Compilation is defined, both informally and by algebraic methods A semi-formal description of the architecture of the DICE system is presented Many aspects of this system description are relevant for a large class of programming environments of this kind Problems that arise from allowing mixed execution and program editing are also considered
One of the tools in a programming environment is the prettyprinter The topic of the fourth paper is the automatic generation of prettyprinters A language-independent algorithm for adaptive prettyprinting is described together with its application to ADA and PASCAL Problems associated with the representation and prettyprinting of comments in abstract syntax trees are discussed together with some solutions
TL;DR: The DICE-Distributed Incremental Compiling Environment (DICE) as discussed by the authors is a programming environment that provides computer assistance during software development and maintenance, such as debugging and testing.
Abstract: A Programming Environment is a system that provides computer assistance during software development and maintenance. The primary objective of this work concerns practically usable methods and tools in the construction of incremental and integrated programming environments that provide good support for debugging and testing of programs in a distributed context, in our case a host-target configuration. Such a system, called DICE-Distributed Incremental Compiling Environment, has been constructed and currently supports development of PASCAL programs. Three of the papers in this volume are concerned with this topic.It is demonstrated how powerful symbolic debuggers may be implemented with the aid of an incremental compiler. Methods for statement-level incremental compilation are described. Strategies suitable for implementing programming environments are discussed and exemplified by the DICE system. Some preliminary experience from the use of the prototype version of the DICE system is given. The concept of Consistent Incremental Compilation is defined, both informally and by algebraic methods. A semi-form al description of the architecture of the DICE system is presented. Many aspects of this system description are relevant for a large class of programming environments of this kind. Problems that arise from allowing mixed execution and program editing are also considered.One of the tools in a programming environment is the prettyprinter. The topic of the fourth paper is the automatic generation of prettyprinters. A language-independent algorithm for adaptive prettyprinting is described together with its application to ADA and PASCAL. Problems associated with the representation and prettyprinting of comments in abstract syntax trees are discussed together with some solutions.
TL;DR: In this paper, a compiler and compiling method minimizes recompilation of a computer program after an edit is presented, where the program is organized in plural program units, such as modules, which are each compiled through a sequence of compilation states, including plural intermediate compilation states.
Abstract: A compiler and compiling method minimizes recompilation of a computer program after an edit. The program is organized in plural program units, such as modules. The units are each compiled through a sequence of compilation states, including plural intermediate compilation states. In compiling each of the program units, dependencies between units are recorded in a table. When an edit to a program unit is later attempted, the edited unit is decompiled to one of various intermediate compilation states according to the edit performed. Units dependent of the edited unit are decompiled to one of various intermediate compilation states according to the dependency of the dependent unit on the edited unit. When next compiling the program, the units are compiled from their respective intermediate compilation state. Units also can be saved in various intermediate compilation states to minimize compiling when the program is again loaded.
TL;DR: APL\3000 employs a Dynamic Incremental Compiler to allow all the flexibility of change afforded by interpretation, but giving the added bonus of faster execution for programs run more than once.
Abstract: Most APL implementations to date have been interpretive because of the dynamic nature of the language. APL\3000 employs a Dynamic Incremental Compiler to allow all the flexibility of change afforded by interpretation, but giving the added bonus of faster execution for programs run more than once. APL\3000 compiles code on a statement-by-statement basis as needed, saving the code and reusing it where possible. A statement is recompiled only when made necessary by changes in syntax or changes in variable bindings. The compiler produces optimized code by employing the Abrams techniques of Drag-along and Beating.
TL;DR: In this paper, the authors present a trace compiler cooperating with the virtual machine monitor to compile the trace tree into a compiled code segment of native machine code executable on the target platform, in which the trace is a linear instruction sequence traversing at least a portion of a method, a loop, or a branching node.
Abstract: A virtual machine executive (VME) system operating on a target platform that includes a virtual machine monitor (VMM) and a dynamic compiler, in particular, a trace compiler (TC). System embodiments include a virtual machine monitor configured to record a trace corresponding to a selected cycle, and configured to transform the trace into a representation of a trace tree; and a trace compiler cooperating with the virtual machine monitor to compile the representation of the trace tree into a compiled code segment of native machine code executable on the target platform, in which the trace is a linear instruction sequence traversing at least a portion of a method, a loop, or a branching node.