Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article
Free access

Design and implementation of a diagnostic compiler for PL/I

Published: 01 March 1973 Publication History

Abstract

PL/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. To accommodate 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 the diagnostic 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.

References

[1]
Bell, J.R., and Kaman, C.H. The linear quotient hash code. Comm. ACM 13, 11 (Nov. 1970), 675-676.
[2]
Conway, M.E. Design of a separable transition diagram compiler. Comm. ACM 6, 7 (July 1963), 396-408.
[3]
Conway, R.W., and Maxwell, W.L. CORC the Cornell computing language. Comm. ACM 6, 6 (June 1963), 317-324.
[4]
Conway, R.W., and Maxwell, W.L. CUPL- An approach to introductory computing instruction. Res. Rept. 68-2, Dept. Computer Science, Cornell U., Also in Proc. Conf. on computers in engineering Commission on Engineering Education, 1966.
[5]
Conway, R.W., Morgan, H.L., Wagner, R.A., and Wilcox, T.R. PL/C, the Cornell compiler for PL/I. User's guide to release 6. Dept. Comput. Sci., Cornell U. Aug. 1971.
[6]
Conway, R.W. and Wilcox, T.R. Design and implementation of a diagnostic compiler for PL/I. Res. Rept. 71-107, Dept. Comput. Sci., Cornell U., Sept. 1971.
[7]
Gries, D. The use of transition matrices in compiling. Comm. ACM 11, 1 (Jan. 1968), 26-34.
[8]
Levy, J.P. Automatic correction of syntax errors in programming languages. Res. Rept. 71-116, Dept. Comput. Sci., Cornell U., Dec. 1971.
[9]
Lynch, W.C. Description of a high capacity, fast turnaround university computer center. Proc. ACM, 22nd Nat. Conf., 1967.
[10]
Morgan, H.L. Spelling correction in systems programs. Comm. ACM 13, 2 (Feb. 1970), 90-93.
[11]
Morgan, H.L. An interrupt based organization for management information systems. Comm. ACM 13, 12 (Dec. 1970), 734-739.
[12]
Morgan, H.L. Event sequenced programming. Tech. Rept. 119, Dept. Oper. Res., Cornell U., 1970.
[13]
Morgan, H.L., and Wagner, R.A. PL/C-the design of a high-performance compiler for PL/I. Proc. AFIPS 1971 SJCC, Vol. 38, AFIPS Press, Montvale, N.J., pp. 503-510.
[14]
Sackman, H. Time-sharing versus batch processing; the experimental evidence. Proc. AFIPS 1968 SJCC, Vol. 32, AFIPS Press, Montvale, N.J., pp. 1-10.
[15]
Tixier, V. Recursive functions of regular expressions in language analysis. CS 58, Comput. Sci. Dept., Stanford U., Mar. 1967.
[16]
Wilcox, T. R. Generating machine code for high-level programming languages. Res. Rept. 71-103, Dept. Comput. Sci., Cornell U., Aug. 1971.
[17]
Wilcox, T.R. Code generation in PL/C. Res. Rept. 70-89, Dept. Comput. Sci., Cornell U., Sept. 1970.
[18]
Zelkowitz, M. Reversible execution as a diagnostic tool. Res. Rept. 71-92, Dept. Comput. Sci., Cornell U., Jan. 1971.
[19]
Zelkowitz, M. Interrupt driven programming. Comm. ACM 14, 6 (June 1971), 417-418.

Cited By

View all

Index Terms

  1. Design and implementation of a diagnostic compiler for PL/I
    Index terms have been assigned to the content through auto-classification.

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image Communications of the ACM
    Communications of the ACM  Volume 16, Issue 3
    March 1973
    57 pages
    ISSN:0001-0782
    EISSN:1557-7317
    DOI:10.1145/361972
    Issue’s Table of Contents
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 01 March 1973
    Published in CACM Volume 16, Issue 3

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. PL/I
    2. compilers
    3. debugging
    4. programming languages

    Qualifiers

    • Article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)150
    • Downloads (Last 6 weeks)12
    Reflects downloads up to 01 Sep 2024

    Other Metrics

    Citations

    Cited By

    View all

    View Options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Get Access

    Login options

    Full Access

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media