Eliminating Redundant Recursive Calls.
ACM Transactions on Programming Languages and Systems (TOPLAS)
An algorithm for generating abstract syntax trees
Computer Languages
Pascal user manual and report; 3rd ed.
Pascal user manual and report; 3rd ed.
Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
The C programming language
C, a reference manual (2nd ed.)
C, a reference manual (2nd ed.)
Grammatical abstraction and incremental syntax analysis in a language-based editor
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Interactive Editing Systems: Part I
ACM Computing Surveys (CSUR)
Program Transformation Systems
ACM Computing Surveys (CSUR)
Incremental Context-Dependent Analysis for Language-Based Editors
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Cornell program synthesizer: a syntax-directed programming environment
Communications of the ACM
Introduction to Automata Theory, Languages and Computability
Introduction to Automata Theory, Languages and Computability
The Theory of Parsing, Translation, and Compiling
The Theory of Parsing, Translation, and Compiling
The why and wherefore of the Cornell Program Synthesizer
Proceedings of the ACM SIGPLAN SIGOA symposium on Text manipulation
The design of a language-directed editor for block-structured languages
Proceedings of the ACM SIGPLAN SIGOA symposium on Text manipulation
The PSG - Programming System Generator
SLIPE '85 Proceedings of the ACM SIGPLAN 85 symposium on Language issues in programming environments
A small contribution to editing with a syntax directed editor
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Techniques for improving language-based editors
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
The Poe language-based editor project
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Graphical program development with PECAN program development systems
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Viewing a programming environment as a single tool
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Arcturus: A prototype advanced Ada@@@@ programming environment
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
GNOME: An introductory programming environment based on a family of structure editors
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
The SAGA project: A system for software development
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
ISDE: An Interactive Software Development Environment
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
The Architecture of Pan I
Putting algebra to work in compiler construction (structure, editor, syntax)
Putting algebra to work in compiler construction (structure, editor, syntax)
Internal representation of programs in GRASE
ACM SIGPLAN Notices
Hi-index | 0.00 |
Abstract syntax trees were devised as a compact alternative to parse trees, because parse trees are known to require excessive amounts of storage to represent parsed programs. However, the savings that abstract syntax trees actually achieve have never been precisely described because the necessary analysis has been missing. Without it, one can only measure particular cases that may not adequately represent all the possible behaviors.We introduce a data structure, production trees, that are more compact than either abstract syntax trees or parse trees. Further, we develop the necessary analysis to characterize the storage requirements of parse trees, abstract syntax trees, and production trees and relate the size of all three to the size of the program's text. The analysis yields the parameters needed to characterize these storage behaviors over their entire range. We flesh out the analysis by measuring these parameters for a sample of “C” programs. For these programs, production trees were from 1/15 to 1/23 the size of the corresponding parse tree, l/2.7 the size of a (minimal) abstract syntax tree, and averaged only 2.83 times the size of the program text.