Compiler construction
Encyclopedia
Compiler construction is an area of computer science
that deals with the theory and practice of developing programming languages and their associated compiler
s.
The theoretical portion is primarily concerned with syntax
, grammar
and semantics
of programming languages. One could say that this gives this particular area of computer science a strong tie with linguistics
. Some courses on compiler construction will include a simplified grammar of a spoken language that can be used to form a valid sentence for the purposes of providing students with an analogy to help them understand how grammar works for programming languages.
The practical portion covers actual implementation of compilers for languages. Students will typically end up writing the front end of a compiler for a simplistic teaching language, such as Micro
.
Computer science
Computer science or computing science is the study of the theoretical foundations of information and computation and of practical techniques for their implementation and application in computer systems...
that deals with the theory and practice of developing programming languages and their associated compiler
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...
s.
The theoretical portion is primarily concerned with syntax
Syntax
In linguistics, syntax is the study of the principles and rules for constructing phrases and sentences in natural languages....
, grammar
Grammar
In linguistics, grammar is the set of structural rules that govern the composition of clauses, phrases, and words in any given natural language. The term refers also to the study of such rules, and this field includes morphology, syntax, and phonology, often complemented by phonetics, semantics,...
and semantics
Semantics
Semantics is the study of meaning. It focuses on the relation between signifiers, such as words, phrases, signs and symbols, and what they stand for, their denotata....
of programming languages. One could say that this gives this particular area of computer science a strong tie with linguistics
Linguistics
Linguistics is the scientific study of human language. Linguistics can be broadly broken into three categories or subfields of study: language form, language meaning, and language in context....
. Some courses on compiler construction will include a simplified grammar of a spoken language that can be used to form a valid sentence for the purposes of providing students with an analogy to help them understand how grammar works for programming languages.
The practical portion covers actual implementation of compilers for languages. Students will typically end up writing the front end of a compiler for a simplistic teaching language, such as Micro
Micro programming language
The Micro programming language is a very basic programming language used in teaching computer science students principles of compiler construction.The language itself is built on top of an even more basic language called Tiny, which is also used in compiler construction courses...
.
Subfields
- ParsingParsingIn computer science and linguistics, parsing, or, more formally, syntactic analysis, is the process of analyzing a text, made of a sequence of tokens , to determine its grammatical structure with respect to a given formal grammar...
- Program analysisProgram analysisProgram analysis may refer to:* Program analysis , the process of automatically analysing the behavior of computer programs* Program evaluation, a disciplined way of assessing the merit, value, and worth of projects and programs...
- Program transformationProgram transformationA program transformation is any operation that takes a computer program and generates another program. In many cases the transformed program is required to be semantically equivalent to the original, relative to a particular formal semantics and in fewer cases the transformations result in programs...
- CompilerCompiler optimizationCompiler optimization is the process of tuning the output of a compiler to minimize or maximize some attributes of an executable computer program. The most common requirement is to minimize the time taken to execute a program; a less common one is to minimize the amount of memory occupied...
or program optimization - Code generation
Further reading
- Alfred V. Aho, Monica S. LamMonica S. LamMonica Sin-Ling Lam is a professor in the Computer Science Department at Stanford, and Founder and Chief Scientist of MokaFive.-Professional biography:...
, Ravi SethiRavi SethiRavi Sethi is an Indian computer scientist retired from Bell Labs and president of Avaya Labs Research. He is best known as one of three authors of the classic computer science textbook Compilers: Principles, Techniques, and Tools, also known as the Dragon Book.Sethi was born in 1947 in Murdana,...
, Jeffrey D. Ullman. Compilers: Principles, Techniques, and ToolsCompilers: Principles, Techniques, and ToolsCompilers: Principles, Techniques, and Tools is a famous computer science textbook by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman about compiler construction...
. - Michael Wolfe. High-Performance Compilers for Parallel Computing. ISBN 978-0805327304
External links
- The ACE CoSy compiler development suite, an industry leading C/C++ compiler development suite.
- The LLVM Compiler Infrastructure project, The leading open source compiler tools project.
- Let's Build a Compiler, by Jack Crenshaw, An interesting tutorial on compiler construction.