Miranda: a non-strict functional language with polymorphic types
Proc. of a conference on Functional programming languages and computer architecture
On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
Formal models of stepwise refinements of programs
ACM Computing Surveys (CSUR)
Using induction to design algorithms
Communications of the ACM
Formal Program Construction by Transformations-Computer-Aided, Intuition-Guided Programming
IEEE Transactions on Software Engineering
Type theories and object-oriented programmimg
ACM Computing Surveys (CSUR)
Two-level grammar as a functional programming language
The Computer Journal
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Communications of the ACM
Semantic evaluation from left to right
Communications of the ACM
Guarded commands, nondeterminacy and formal derivation of programs
Communications of the ACM
Functional Programming
Studies in Automatic Programming Logic
Studies in Automatic Programming Logic
Attribute grammars as a functional programming paradigm
Proceedings of the Functional Programming Languages and Computer Architecture
LINGUIST-86: Yet another translator writing system based on attribute grammars
SIGPLAN '82 Proceedings of the 1982 SIGPLAN symposium on Compiler construction
An extended attribute grammar for Pascal
ACM SIGPLAN Notices
Hi-index | 0.00 |
Application programming is often carried out in an ad hoc way compared to the construction of code for implementing operations in 'standard calculi' such as relational calculus, number theory, set theory, etc. The various programming techniques, such as 'abstraction' and 'transformation', which are often used in the latter are infrequently used in application programming. We believe that more structured approaches to application programming may facilitate the use of established programming techniques in application programming. In this paper, we explore one such approach that is based on the notion of 'application programming as the construction of language interpreters'. We have built a 'system' to support this approach. The system that we have built consists of a number of higher order functions that can be used to 'glue together' parts of a specification of an attribute grammar such that the result is an executable interpreter. These functions facilitate the 'language processing' part of application programming. Our implementation language is a higher order, lazy, pure functional programming language; this facilitates the 'standard calculi' part of application programming. We claim that for certain types of application programming, our system not only helps the programmer to separate these two aspects of the problem, but that it also provides a framework in which both aspects can be addressed methodically, taking advantage of various programming techniques such as 'abstraction' and 'transformation', and subsequently re-integrated to obtain the required program. We have extended the basic notion of attribute grammars so that our approach has wider application. The extension is based upon a new notion of 'multi-input parsing'.