Category
page 1Compiler construction

parsing
Parsing, syntax analysis, or syntactic analysis is a process of analyzing a string of symbols, either in natural language, computer languages or data structures, conforming to the rules of a formal grammar by breaking it into parts. The term parsing comes from Latin pars (orationis), meaning part (of speech).
Backus–Naur form
metasyntax notation for context-free grammars, developed by John Backus and Peter Naur for the ALGOL 60 report (1963); foundational to formal language specification in computer science
lexical analysis
computing process of parsing a sequence of characters into a sequence of tokens
context-free grammar
formal grammar whose production rules can be applied to a nonterminal symbol regardless of its context
just-in-time compilation
dynamically compiling bytecode to machine code during runtime
extended Backus–Naur form
family of metasyntax notations, any of which can be used to express a context-free grammar
intermediate representation
data structure or code used internally by a compiler or virtual machine to represent source code. An IR is designed to be conducive for further processing, such as optimization and translation
compiler-compiler
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.
code generation
process by which a compiler's code generator converts some intermediate representation of source code into a form that can be readily executed by a machine
control-flow graph
graphical representation of a computer program or algorithm
compile time
time during which source code is validated and converted to machine code by a compiler
data structure alignment
way in which data is arranged and accessed in computer memory
bootstrapping
process of writing a compiler (or assembler) in the source programming language that it intends to compile
three address code
representation of intermediate code used by compilers
first-class functions
programming language feature that allows manipulating functions like other values
object file
file containing relocatable format machine code
Compilers: Principles, Techniques, and Tools
computer science compiler technology textbook
attribute grammar
formal way to define attributes for the productions of a formal grammar, associating these attributes with values
optimizing compiler
compiler that tries to minimize or maximize some attributes of an executable computer program
Basic block
code sequence with no branches except at entry and exit
dead code
section in the source code of a program which is executed but whose result is never used in any other computation. The execution of dead code wastes computation time and memory
aliasing
programming concept: multiple names for the same data location
name mangling
programming languages concept
abstract syntax
syntactic structure independent of any particular representation or encoding
Standard Portable Intermediate Representation
intermediate language for parallel compute and graphics by Khronos Group
dynamic compilation
linking
phase of a software build process in which compiled modules are combined into a single unit
syntax-directed translation
intrinsic function
function implemented by the compiler
dynamic recompilation
technique of translating the machine code of one CPU or platform into the native machine code of another for emulation
Van Wijngaarden grammar
one of the two main notation techniques for context-free grammars in computer science
Sethi–Ullman algorithm
Algorithm for minimising register usage
call graph
control-flow graph which represents calling relationships between subroutines in a computer program
Principles of Compiler Design
Book by Alfred Aho and Jeffrey Ullman
funarg problem
compiler construction difficulty in supporting first-class functions that capture variables without dynamic memory allocation
tracing just-in-time compilation
technique used to optimize the execution of a program at runtime
Memory ordering
order of accesses to computer memory by a CPU
control table
data structure
translation unit
ultimate input to a C or C++ compiler from which an object file is generated
binary recompiler
compiler transforming or optimizing already-compiled code