Journal of the ACM (JACM)
Abstract data types and the development of data structures
Communications of the ACM
Communications of the ACM
A genealogy of control structures
Communications of the ACM
Design of a separable transition-diagram compiler
Communications of the ACM
Translation of Computer Languages
Translation of Computer Languages
A procedure mechanism for backtrack programming
ACM '76 Proceedings of the 1976 annual conference
An implementation of backtracking for programming languages
ACM '72 Proceedings of the ACM annual conference - Volume 2
Procedure referencing environments in SL5
POPL '76 Proceedings of the 3rd ACM SIGACT-SIGPLAN symposium on Principles on programming languages
On the time required for retention
HLLCA '73 Proceedings of a symposium on High-level-language computer architecture
Programming languages and their compilers: Preliminary notes
Programming languages and their compilers: Preliminary notes
SIMULA 67 common base language, (Norwegian Computing Center. Publication)
SIMULA 67 common base language, (Norwegian Computing Center. Publication)
Backtracking in a Generalized Control Setting
ACM Transactions on Programming Languages and Systems (TOPLAS)
Generic functions by nonstandard name scoping in APL
APL '81 Proceedings of the international conference on APL
Hi-index | 0.00 |
The range of control structures available in a higher-level programming language directly governs the set of algorithms conveniently programmable therein. This fact has been well-demonstrated by the salutary effect the ideas of structured programming have had on traditional control structures (sequential, iterative, and procedural). This paper seeks to demonstrate this same fact for more advanced control structures through the use of top-down parsing as a case study. A series of increasingly more satisfactory top-down parsers are presented, using (i) iterative, (ii) recursive, (iii) coroutine, and (iv) nondeterministic control forms. A fifth solution, using a new control form termed “non-forgetful backtracking”, is sketched. This study indicates that the development of new control forms, as well as more thorough understanding and application of existing ones, are worthy pursuits for software engineering. A few directions for continuing work in this spirit are offered in the concluding section.