The C programming language
Experiences creating a portable cedar
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
A FORTRAN IV to QuickBASIC translator
ACM SIGPLAN Notices
ACM SIGPLAN Notices
ACM SIGSOFT Software Engineering Notes
Retargetable Compiler Code Generation
ACM Computing Surveys (CSUR)
Multibox Parsers: No More Handwritten Lexical Analyzers
IEEE Software
An experiment in table driven code generation
SIGPLAN '82 Proceedings of the 1982 SIGPLAN symposium on Compiler construction
Experience with porting the Portable C Compiler
ACM '82 Proceedings of the ACM '82 conference
XGLR: an algorithm for ambiguity in programming languages
Science of Computer Programming - The fourth workshop on language descriptions, tools, and applications (LDTA'04)
JLAPACK - compiling LAPACK Fortran to Java
Scientific Programming
Hi-index | 0.00 |
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 language. These tools proved very valuable, but they are based on theory and experience one or two decades fresher than that underlying Fortran, so they really do not fit this application. The following discusses the approach taken, the ways in which the tools had to be bent to do the job, the properties of Fortran that seem to cause the most trouble, and the costs of writing a portable compiler. It also describes certain aspects of the approach to code generation, since others may wish to use the same tools. This paper does not describe low-level details of the implementation. This compiler is intimately connected with the programming language C[3]. The compiler is written in C, it uses tools written in C, the input/output library uses the standard C library, and it uses the second pass of a C compiler as code generator. To a much smaller extent, this compiler is based on the UNIXï戮聠 operating system, since all of the development work was done on UNIX systems and the current version of the compiler assumes the UNIX system process structure. It would require a serious but not enormous effort to move this compiler to a different operating system; it would be impossible to move it to a non-C environment.