Incremental Semantic Evaluation for Interactive Systems: Inertia, Pre-emption, and Relations

Although schemes for incremental semantic evaluation have been explored and refined for more than two decades, the demands of user interaction continue to outstrip the capabilities of these schemes. The feedback produced by a semantic evaluator must support the user's programming activities: it must be structured in a way that provides the user with meaningful insight into the program (directly, or via other tools in the environment) and it must be timely. In this paper we extend an incremental attribute evaluation scheme with three techniques to better meet these demands within the context of a modeless editing system with a flexible tool integration paradigm. Efficient evaluation in the presence of syntax errors (which arise often under modeless editing) is supported by giving semantic attributes inertia: a tendency to not change unless necessary. Pre-emptive evaluation helps to reduce the delays associated with a sequence of edits, allowing an evaluator to "keep pace" with the user. Relations provide a general means to capture semantic structure (for the user, other tools, and as attributes within an evaluation) and are treated efficiently using a form of differential propagation. The combination of these three techniques meets the demands of user interaction; leaving out any one does not.

[1]  Donald E. Knuth Semantics of context-free languages: Correction , 2005, Mathematical systems theory.

[2]  D. Carrington,et al.  Relational views for program comprehension , 1994, Proceedings 1994 IEEE 3rd Workshop on Program Comprehension- WPC '94.

[3]  Tohru Kikuno,et al.  Incremental Attribute Evaluation for Multiple Subtree Replacements in Structure-Oriented Environments , 1990, WAGA.

[4]  Roger Hoover Dynamically bypassing copy rule chains in attribute grammars , 1986, POPL '86.

[5]  Thomas W. Reps,et al.  Generating Language-Based Environments , 1982 .

[6]  Mark A. Linton,et al.  Implementing relational views of programs , 1984, SDE 1.

[7]  Uwe Kastens,et al.  Improvements of an incremental evaluation algorithm for ordered attribute grammars , 1988, SIGP.

[8]  Ian J. Hayes A Generalisation of Bags in Z , 1989, Z User Workshop.

[9]  Simon M. Kaplan,et al.  Supporting the Software Development Process with Attributed NLC Graph Grammars , 1986, Graph-Grammars and Their Application to Computer Science.

[10]  David A. Carrington,et al.  Generic description of a software document environment , 2001, Proceedings of the 34th Annual Hawaii International Conference on System Sciences.

[11]  Sidney L. Smith,et al.  Guidelines for Designing User Interface Software , 1986 .

[12]  Thomas W. Reps,et al.  Incremental Context-Dependent Analysis for Language-Based Editors , 1983, TOPL.

[13]  Jim Welsh,et al.  Incremental parsing in language‐based editors: user needs and how to meet them , 2001, Softw. Pract. Exp..

[14]  Jacques Chazarain,et al.  Incremental Evaluation of Natural Semantics Specification , 1992, PLILP.

[15]  Susan Horwitz,et al.  Generating editing environments based on relations and attributes , 1986, TOPL.

[16]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[17]  Donald E. Knuth,et al.  Semantics of context-free languages , 1968, Mathematical systems theory.

[18]  Görel Hedin,et al.  Incremental Semantic Analysis , 1992 .

[19]  William Harry Maddox,et al.  Incremental Static Semantic Analysis , 1998 .

[20]  Gregory F. Johnson,et al.  A meta-language and system for nonlocal incremental attribute evaluation in language-based editors , 1985, POPL.

[21]  Jim Welsh,et al.  Software Documents: Concepts and Tools , 1994, Softw. Concepts Tools.

[22]  Warren X. Li,et al.  Interactively extracting internal program information in language-based editing systems , 1997, Inf. Softw. Technol..

[23]  Thomas W. Reps,et al.  Remote attribute updating for language-based editors , 1986, POPL '86.

[24]  Scott A. Vorthmann Coordinated Incremental Attribute Evaluation on a DR-Threaded Tree , 1990, WAGA.

[25]  Tim Teitelbaum,et al.  Higher-order attribute grammars and editing environments , 1990, PLDI '90.

[26]  Jim Welsh,et al.  Incremental semantic evaluation in language‐based editors , 1992, Softw. Pract. Exp..

[27]  Uwe Kastens,et al.  Ordered attributed grammars , 1980, Acta Informatica.

[28]  Daniel M. Yellin,et al.  Composable attribute grammars: support for modularity in translator design and implementation , 1992, POPL '92.

[29]  Patrick Borras,et al.  Centaur: the system , 1988, Software Development Environments.

[30]  John Tang Boyland,et al.  Composing tree attributions , 1994, POPL '94.

[31]  Dashing Yeh On incremental evaluation of ordered attributed grammars , 1983, BIT Comput. Sci. Sect..

[32]  William Pugh,et al.  Incremental computation via function caching , 1989, POPL '89.

[33]  Tim Teitelbaum,et al.  Efficient incremental evaluation of aggregate values in attribute grammars , 1986, SIGPLAN '86.