Year Year arrow
arrow-active-down-0
Publisher Publisher arrow
arrow-active-down-1
Journal
1
Journal arrow
arrow-active-down-2
Institution Institution arrow
arrow-active-down-3
Institution Country Institution Country arrow
arrow-active-down-4
Publication Type Publication Type arrow
arrow-active-down-5
Field Of Study Field Of Study arrow
arrow-active-down-6
Topics Topics arrow
arrow-active-down-7
Open Access Open Access arrow
arrow-active-down-8
Language Language arrow
arrow-active-down-9
Filter Icon Filter 1
Year Year arrow
arrow-active-down-0
Publisher Publisher arrow
arrow-active-down-1
Journal
1
Journal arrow
arrow-active-down-2
Institution Institution arrow
arrow-active-down-3
Institution Country Institution Country arrow
arrow-active-down-4
Publication Type Publication Type arrow
arrow-active-down-5
Field Of Study Field Of Study arrow
arrow-active-down-6
Topics Topics arrow
arrow-active-down-7
Open Access Open Access arrow
arrow-active-down-8
Language Language arrow
arrow-active-down-9
Filter Icon Filter 1
Export
Sort by: Relevance
The design of a space efficient compiler

Writing a compiler for a small machine with minimal software support can be quite difficult because the program is long and debugging aids are usually inadequate. In addition, the usual techniques for compiler writing tend to produce programs which are quite large when compared to, for example, a BASIC interpreter. This frustrates efforts for producing compilers on small machines. We describe a method which can be used to reduce the size of a compiler and simultaneously provide good debugging tools. The resulting compiler sacrifices little in terms of execution speed (in part because compilers on minicomputers are often I/O bound). We have used this method to write an MPL [1] compiler for a Microdata 32/S minicomputer. The compiler requires approximately 12K bytes of memory as opposed to 32K bytes required by the compiler produced by the manufacturer, and compiles at essentially the same speed. Appendix II outlines the syntax of the MPL language and is included to illustrate the size of the language being compiled. MPL is based on PL/I and is quite similar to the PL/M* [2] language developed by the INTEL Corporation. The method described here uses an interpretive language for writing the compiler. Thus the interpreter is the only machine language program written. We coded the interpreter in MPL and used a cross compiler to compile it, however, the interpreter could have been easily coded in assembly language. Figure 1 illustrates the savings of the interpretive language over machine code. The procedure IF_STAT is typical of a routine which might appear in a recursive descent compiler for MPL. The gain in space occurs because machine language instructions carry too much information content when applied to a special purpose (such as compiling). Note for example that a subroutine call for the Microdata requires 6 bytes, but all that is really needed is an opcode to indicate a call and a byte to indicate which of a few subroutines is to be called.

Read full abstract
Visual interactive production language systems

In earlier work on anticipation and prompting systems for programming languages it was recognized that a more formal approach to development of such interactions with programmers at display terminals was needed. It was observed that the bulk of the data involved in these interactions was in the displays themselves and that certain display drivers operated on action strings similar to those in production language systems. The development of special Floyd-Evans production languages oriented toward a visual interactive environment was therefore undertaken. Based on two experimental interpreters which have been implemented, the language itself has now been substantially refined and compilers for a common language have been designed with one being implemented. In the first implementation which was accomplished on a Datapoint 2200, a substantial portion of the effort was devoted to a pedagogic display of the parsing process. In the second implementation on an Interdata 85, all of the programming was made reentrant so that multiple users can be served using the same or different target languages. Furthermore, some of the basic functions were reduced to microcode, although it was not possible to carry this as far as had been hoped. It was also learned during development of the second system that left-part matching and right-part replacement could be treated as generalized actions—thus simplifying the internal structure of the interpreter. Development of these systems is part of ongoing research with programming languages and automated programmer assistance.

Read full abstract
Open Access Icon Open Access