Learn More
Powerful editing systems for developing complex software documents are difficult to engineer. Besides requiring efficient incremental algorithms and complex data structures, such editors must accommodate flexible editing styles, provide a consistent, coherent, and powerful user interface, support individual variations and projectwide configurations,(More)
Many tools designed to help programmers view and manipulate source code exploit the formal structure of the programming language. Language-based tools use information derived via linguistic analysis to offer services that are impractical for purely text-based tools. In order to be effective, however, language-based tools must be designed to account properly(More)
Emerging technologies such as the Internet, the World Wide Web, Java TM technology, and software components are accelerating product life cycles and encouraging collaboration across organizational boundaries. The familiar coordination problems of large scale software development reappear in a context where tools used by collaborators must be less tightly(More)
A highly productive platform accelerates the production of research results. The design of a Virtual Machine (VM) written in the Java#8482; programming language can be simplified through exploitation of interfaces, type and memory safety, automated memory management (garbage collection), exception handling, and reflection. Moreover, modern Java IDEs offer(More)
Powerful editing systems for developing complex software documents are difficult to engineer. Besides requiring efficient incremental algorithms and complex data structures, such editors must integrate smoothly with the other tools in the environment, maintain a sharable database of information concerning the documents being edited, accommodate flexible(More)
Language-based tools necessarily translate textual source code into grammar-based representations. During translation , tools such as compilers and analyzers are generally free to discard comments and white space, which have no impact on the code's formal meaning. Tools that produce transformed source code for human consumption enjoy no such freedom.(More)
Any interactive software engineering tool that deals with programs inevitably displays source code for a human to read and possibly modify 1. The technology for doing this, however, has changed little in twenty years, despite a compelling intuition that specializing the technology for programming languages might increase user productivity substantially. In(More)