Conway, Richard W.Wilcox, Thomas R.2007-04-192007-04-191971-09http://techreports.library.cornell.edu:8081/Dienst/UI/1.0/Display/cul.cs/TR71-107https://hdl.handle.net/1813/5952PL/C is a compiler for a dialect for PL/I. The design objective was to provide a maximum degree of diagnostic assistance in a batch processing environment. For the most part this assistance is implicit and is provided automatically by the compiler. The most remarkable characteristic of PL/C is its perseverance -- it completes translation of every program submitted and continues execution until a user-established error limit is reached. This requires that the compiler repair errors encountered during both translation and execution, and the design of PL/C is dominated by this consideration. PL/C also introduces several explicit user-controlled facilities for program testing. Some are conventional, providing a convenient high-level trace and dump capability. An experimental version of PL/C also permits the user to controllably reverse the direction of program execution and to write routines that are asynchronously invoked when an arbitrary condition becomes true. To accomodate these extensions to PL/I without abandoning compatibility with the IBM compiler, PL/C permits `pseudo-comments' - constructions whose contents can optionally be considered either source text or comment. In spite of th ediagnostic effort PL/C is a fast and efficient processor. It effectively demonstrates that compilers can provide better diagnostic assistance than is customarily offered, even when a sophisticated source language is employed, and that this assistance need not be prohibitively costly. Key Words and Phrases: Compilers, Debugging, PL/I3942686 bytes795925 bytesapplication/pdfapplication/postscripten-UScomputer sciencetechnical reportDesign and Implementation of a Diagnostic Compiler for PL/Itechnical report