PQCC

Last updated

The Production Quality Compiler-Compiler Project (or PQCC) was a long-term project led by William Wulf at Carnegie Mellon University to produce an industrial-strength compiler-compiler. PQCC would produce full, optimizing programming language compilers from descriptions of the programming language and the target machine. Though the goal of a fully automatic process was not realized, PQCC technology and ideas were the basis of production compilers from Intermetrics, Tartan Laboratories, and others. [1] [2] [3]

Contents

Objective

The focus of the project was on the semantics and machine-dependent phases of compilation, since lexical and syntactic analysis were already well understood. Each phase was formalized in a manner that permits expression in table-driven form. The automatic construction of the compiler then consists of deriving these tables from the semantic definitions of the language and target machine. Though this approach was largely successful for target machine description, it was less so for semantics.

See also

Related Research Articles

In computing, a compiler is a computer program that translates computer code written in one programming language into another language. The name "compiler" is primarily used for programs that translate source code from a high-level programming language to a lower level language to create an executable program.

<span class="mw-page-title-main">GNU Compiler Collection</span> Free and open-source compiler for various programming languages

The GNU Compiler Collection (GCC) is an optimizing compiler produced by the GNU Project supporting various programming languages, hardware architectures and operating systems. The Free Software Foundation (FSF) distributes GCC as free software under the GNU General Public License. GCC is a key component of the GNU toolchain and the standard compiler for most projects related to GNU and the Linux kernel. With roughly 15 million lines of code in 2019, GCC is one of the biggest free programs in existence. It has played an important role in the growth of free software, as both a tool and an example.

<span class="mw-page-title-main">Programming language</span> Language for communicating instructions to a machine

A programming language is any set of rules that converts strings, or graphical program elements in the case of visual programming languages, to various kinds of machine code output. Programming languages are one kind of computer language, and are used in computer programming to implement algorithms.

In computer science, static program analysis is the analysis of computer programs performed without executing them, in contrast with dynamic program analysis, which is performed on programs during their execution.

In computer science, a compiler-compiler or compiler generator is a programming tool that creates a parser, interpreter, or compiler from some form of formal description of a programming language and machine.

In computer engineering, a hardware description language (HDL) is a specialized computer language used to describe the structure and behavior of electronic circuits, and most commonly, digital logic circuits.

In computer science, formal methods are mathematically rigorous techniques for the specification, development, and verification of software and hardware systems. The use of formal methods for software and hardware design is motivated by the expectation that, as in other engineering disciplines, performing appropriate mathematical analysis can contribute to the reliability and robustness of a design.

In computer science, program analysis is the process of automatically analyzing the behavior of computer programs regarding a property such as correctness, robustness, safety and liveness. Program analysis focuses on two major areas: program optimization and program correctness. The first focuses on improving the program’s performance while reducing the resource usage while the latter focuses on ensuring that the program does what it is supposed to do.

In computing, code generation is part of the process chain of a compiler and converts intermediate representation of source code into a form that can be readily executed by the target system.

In computer science, a high-level programming language is a programming language with strong abstraction from the details of the computer. In contrast to low-level programming languages, it may use natural language elements, be easier to use, or may automate significant areas of computing systems, making the process of developing a program simpler and more understandable than when using a lower-level language. The amount of abstraction provided defines how "high-level" a programming language is.

William Allan Wulf is a computer scientist notable for his work in programming languages and compilers. Until June 2012, he was a university professor and the AT&T Professor of Engineering and Applied Sciences in the Department of Computer Science at the University of Virginia.

BLISS is a system programming language developed at Carnegie Mellon University (CMU) by W. A. Wulf, D. B. Russell, and A. N. Habermann around 1970. It was perhaps the best known system language until C debuted a few years later. Since then, C became popular and common, and BLISS faded into obscurity. When C was in its infancy, a few projects within Bell Labs debated the merits of BLISS vs. C.

IDL is a software interface description language created by William Wulf and John Nestor of Carnegie Mellon University and David Lamb of Queen's University, Canada.

PL/S, short for Programming Language/Systems, is a "machine-oriented" programming language based on PL/I. It was developed by IBM in the late 1960s, under the name Basic Systems Language (BSL), as a replacement for assembly language on internal software projects; it included support for inline assembly and explicit control over register usage.

In software engineering, retargeting is an attribute of software development tools that have been specifically designed to generate code for more than one computing platform.

DIANA, the Descriptive Intermediate Attributed Notation for Ada, is an intermediate language used to represent the semantics of an Ada program. It was originally designed as an interface between the front end and middle of the compiler on the one hand and the back end on the other. It is also used as an internal representation by other language tools.

<span class="mw-page-title-main">History of compiler construction</span>

In computing, a compiler is a computer program that transforms source code written in a programming language or computer language, into another computer language. The most common reason for transforming source code is to create an executable program.

<span class="mw-page-title-main">Dansk Datamatik Center</span> Danish software research and development centre

Dansk Datamatik Center (DDC) was a Danish software research and development centre that existed from 1979 to 1989. Its main purpose was to demonstrate the value of using modern techniques, especially those involving formal methods, in software design and development.

<span class="mw-page-title-main">Tartan Laboratories</span>

Tartan Laboratories, Inc., later renamed Tartan, Inc., was an American software company founded in 1981 and based in Pittsburgh, Pennsylvania, that specialized in programming language compilers, especially for the language Ada. It was based on work initially done at Carnegie Mellon University and gradually shifted from a focus on research and contract work to being more product-oriented. It was sold to Texas Instruments in 1996. Part of it was later acquired by DDC-I in 1998.

References

  1. Benjamin M. Brosgol, "TCOLAda and the “Middle End” of the PQCC Ada compiler", Proceedings of the ACM-SIGPLAN symposium on The ADA programming language (1980). ISBN   0-89791-030-3. Documents part of an industrial compiler using PQCC technology.
  2. B.W. Leverett, R.G. Cattell, S.O. Hobbs, J.M. Newcomer, A.H. Reiner, B.R. Schatz, W.A. Wulf, "An Overview of the Production-Quality Compiler-Compiler Project", IEEE Computer13:8:38-49 (August 1980).
  3. William Wulf, The Design of an Optimizing Compiler , Elsevier Science Ltd, 1980. ISBN   0-444-00158-1. Describes Wulf's BLISS-11 compiler, which included some PQCC ideas.