No abstract available.
Data abstraction: A static implementation strategy
A description of the implementation of the data abstraction mechanism for the Model programming language is discussed. The Model programming language utilizes a “static” approach to data abstraction in that abstract concepts are expanded by early phases ...
A model for implementing Euclid modules and type templates
The structuring of data has become a central theme in programming language research. The ultimate utility of data structuring techniques such as clustering and type parameterization mechanisms will, however be determined in large part by our ability to ...
Program checking
In languages such as Pascal, the programmer can arrange to have the compiler check such things as the range of the value of a variable only by defining a new type or sub-type. I have investigated how more powerful checking facilities might be provided ...
Dynamic allocation of space for attribute instances in multi-pass evaluators of attribute grammars
Attribute grammars [14] have proved useful as the basis of input languages for compiler-compilers. Many algorithms have evolved which can be used to automatically produce an evaluator for a given attribute grammar. The task of an evaluator is to compute ...
Semantic charts: A diagrammatic approach to semantic processing
This paper describes a technique for implementing the part of a compiler that processes the semantics of a programming language. It presents a concise, easy to understand notation for describing this semantic processing. The notation utilizes semantic ...
Hashed symbol tables for languages with explicit scope control
Newer programming languages such as Modula and Euclid provide more control than traditional Algol-like languages such as ALGOL-60 and Pascal over the inheritance, in inner scopes, of named entities available in outer scopes. They also provide mechanisms ...
A code generator generator language
Code generation has withstood attempts at automation for some time. This paper describes a non-procedural, problem-oriented language for expressing a code generator. The basis for the language is the description of the target machine as a finite-state ...
Code generation in a machine-independent compiler
This paper presents some code generation issues in the context of the PQCC Production-Quality Compiler-Compiler project [8]. The approach taken is unusual in several ways. The machine-dependent information for selection of code sequences, register ...
Implementation of an Interactive Programming System
Design and implementation experience with an Interactive Programming System are described. Reflections are made on various design decisions and on the effect of using a Tree Factored Interpreter as the core of the system.
Automatic storage optimization
Most studies of optimization techniques for higher level languages have focused on improving execution time of generated programs, often at the expense of increased storage. When storage optimization has been addressed, it is usually in conjunction with ...
Porting the Zed compiler
Zed is the base language used to implement the portable realtime operating system Thoth[7], and to write commands, utilities, application programs, and other software which run under Thoth. (Zed is similar to C, although language details are not ...
Implementation of a portable Fortran 77 compiler using modern tools
I have recently written a portable compiler [1] for the Fortran 77 language [2]. It attacks an old language with new tools: the parser is generated automatically from an LALR(1) grammar, the program is produced by code generators designed for another ...
The CIMS PL/I compiler
CIMS PL/I is an implementation of PL/I on the Control Data 6600 computer. The most challenging aspect of implementing PL/I is dealing with the sheer size and complexity of the language; since a PL/I compiler is an inherently large object, building one ...
Construction of a transportable, multi-pass compiler for extended Pascal
This paper describes the implementation of an extended Pascal compiler on the TI 990 minicomputer, the TI 980 minicomputer, and the IBM System 370. The compiler was designed to be as machine independent as possible; the parser and machine independent ...
Compiler design for efficient code generation and program optimization
This paper describes the design of a compiler for an extended PASCAL with particular emphasis on code generation and optimization. The design objectives are: compiler reliability, code generator portability and object code efficiency.
Designing a ...
On implementing separate compilation in block-structured languages
Perhaps the single most important paradigm of modern programming language design is block structure. Block-structured languages are characterized by nested definitional units (ALGOL blocks, PASCAL procedures, Euclid modules) having rather specialized ...
The use of transition matrices in a recursive-descent compiler
Transition matrices are a well-known tool for the construction of bottom-up compilers. This paper discusses the use of transition matrices in the recursive-descent compiler for the structured assembly language PL/85. In this compiler, a transition ...
An all(1) compiler generator
Aparse is a flexible and modular system for generating efficient one-pass compilers from attributed grammar specifications. The system is of particular interest in that it combines recent research in attributed parsing and error-correction into a ...
Global context recovery: A new strategy for parser recovery from syntax errors
Methods for error recovery in parsing a deterministic, context-free language need not be derived by ad hoc means. When fixed, table-driven parsing algorithms are used the error recovery procedures can also make use of knowledge about the grammar for the ...
Practical LR error recovery
We present a practical, language independent mechanism for error recovery in LR parsers. The method is easy to implement in existing parser generators. It uses only the normal parse tables and a small amount of symbol cost information. It is possible to ...
Efficient computation of LALR(1) look-ahead sets
We define two relations that capture the essential structure of the problem of computing LALR(1) look-ahead sets, and present an efficient algorithm to compute the sets in time linear in the size of the relations. In particular, for a PASCAL grammar, ...
An intermediate language for source and target independent code optimization
This paper describes an intermediate language to be generated by a syntax analyzer and processed by a code generator. An (essentially) optional code optimization phase may be used before code generation. The language is designed to exclude source and ...
Machine-independent PASCAL code optimization
A variant of PASCAL pseudo-code which is suitable for optimization is presented. This new language, Universal pseudo-code, is designed to be easily extended to meet the needs of a variety of target machines. The language is further designed such that ...
A comparison of PASCAL intermediate languages
PASCAL P-code is an aid when transporting PASCAL to new machines and environments. Implementations using P-code may modify the P-code. This modification process may require some creative effort. Some of this effort may be eliminated by looking at ...
Predicting the effects of optimization on a procedure body
Practical application of procedure integration (inline expansion) as a program optimization requires some method for estimating the effects of subsequent optimization on the integrated procedure. A technique is described for predicting the code ...
Machine-independent register allocation
The context of this paper is a machine-independent Pascal optimizer that transforms an intermediate stack-machine pseudo-code program into a generally smaller and faster pseudo-code program. The emphasis of this current paper is on the approach taken ...
The design of a global optimizer
We are constructing a compiler for a high level systems and applications programming language. Because the compiler is required to generate efficient object code, a global optimization phase and register allocation phase are an integral part of the ...
Index Terms
Proceedings of the 1979 SIGPLAN symposium on Compiler construction



