Compiler Design
Glossary
- #
- A meta-language operator representing the cardinality of a set
- ( )
- Grouping.
- *
- (BNF, EBNF, RE) The Kleene closure; zero or more occurances.
- ::=
- (BNF, EBNF) is defined as, may consist of.

- The empty string

- A metalanguage operator used to enclose a type.
- |
- (BNF, RE, EBNF) or, or alternatively. (binary operator)
- abstract machine
- A virtual machine.
- abstract syntax
- A syntax which defines only the phrase structure of a grammar.
- abstract syntax tree
- A syntax tree generated by an abstract syntax.
- applied occurence
- An occurence of an identifier which uses it.
- assembler
- A translator from an assembly language to the corresponding machine language.
- assembly language
- A symbolic language closely related to a machine language.
- associativity rule
- A rule which governs the evaluation of a series of operands with the same precedence.
- backpatching
- A code generation techniques which flags jumps to unknown locations for later completion (patching).
- Backus-Naur Form (BNF)
- A formal notation for specifying the production rules of a syntax devised by John Backus and Peter Naur.
- BASIC
- (Beginner's All-purpose Symbolic Instruction Code) A simple language designed by John G. Kemeny and Thomas E. Kurtz at Dartmouth College in 1963.
- best fit
- A placement strategy which selects the smallest space from the free list which is large enough.
- binding occurence
- The occurence of an identifier which declares it.
- black box
- A system characterized only by its external interface behavior.
- block
- A physical data record, separated on the medium from other blocks by inter-block gaps.
- bottom-up parsing
- Parsing in which the syntax tree is built from the terminal symbols toward the root.
- class
- A composite type which can contain both data and subprograms, and which can participate in inheritance.
- code function
- A function which translates instances of a source program phrase class into object code.
- code generation
- The phase of compilation which translates the source program into a semantically equivalent object program.
- code movement
- The movement of object code outside of the range of the source statement from which it was generated.
- code specification
- A collection of code functions and code templates
- code template
- A function which translates forms of a source program phrase class into object code.
- common subexpression evaluation
- The saving of the results of expression evaluation to be used when the same expression occurs again in the source code.
- compiler
- A translator from a high level language to a low level language.
- concrete syntax
- A syntax which defines the concrete details of a grammar.
- constant folding
- The evaluation of constant expressions at compile time rather than at run time.
- constant size representation
- Representation in which all values (of a given type) occupy the same space.
- contextual analysis
- The phase of compilation which analyzes a parsed program according to the contextual constraints of the language.
- contextual restraints
- The restriction of the use of symbols and words in particular kinds of phrases (context).
- cross compiler
- A compiler which runs on one machine and produces code for another machine.
- decompiler
- A translater from a low level language to a high level language.
- decorated syntax tree
- A syntax tree with added information from contextual analysis.
- decoration
- Addition of contextual information to the syntax tree.
- direct representation
- Representation which is itself the value of a data item.
- disassembler
- A translator from machine language to assembler language.
- dynamic binding
- A binding which is determined during execution.
- dynamic typing
- A typing which is determined during execution.
- editor
- A program allowing text to be entered and changed.
- emulator
- An interpreter which executes programs expressed in the code of a virtual machine.
- entity description
- A structure containing details of how an entity will be represented.
- error recovery
- The handling of an error in such a way that program continuation is possible and useful.
- Extended Backus-Naur Form (EBNF)
- BNF augmented by the use of regular expressions on the right hand side of productions.
- first fit
- A placement strategy which selects the first space on the free list which is large enough.
- flat block structure
- A program structure consisting of disjoint blocks.
- formal specification
- A specification written in precise notation.
- function
- A subprogram which returns a value to its point of invocation.
- global
- having a scope consisting of an entire program.
- handle
- A value which indirectly locates another value.
- hidden register
- A register which cannot be accessed explicitly by machine code.
- high-level language
- A programming language which is not a low-level language.
- high-level translator
- A translator from one high-level language to another.
- identification table
- A table which associates identifiers with their attributes.
- implementation language
- The language in which a program is expressed.
- indirect representation
- Representation which is not itself the value of a data item, but which is a locator for the value.
- infix notation
- A notation in which the operation appears between its operands.
- informal specification
- A specification written in a natural language.
- interpreter
- A program expressed in one language which executes programs expressed in another language.
- interpretive compiler
- A program which combines a compiler that produces object code in an intermediate language with an interpreter for that intermediate language.
- iterative interpreter
- An interpretater which repeats a sequence of fetching, analyzing, and executing.
- language
- The set of all sentences.
- left factorization
- The regrouping of expressions so that the repetion of symbols on the left side is eliminated.
- left recursion
- The condition in which the definition of a symbol begins with the same symbol.
- lexical grammar
- A grammar which describes tokens.
- lifetime
- The period during execution of a program in which a variable or function exists.
- linker
- A program which combines two or more object modules into a single object module or into an executable file.
- local
- having a scope limited to a program block.
- low-level language
- Machine language or assembly language.
- machine code
- Text expressed in machine language.
- machine language
- A programming language which can be directly executed by a machine.
- method
- A function contained in a class.
- mnemonic
- A symbolic label or code reminder that assists the user in remembering a specific operation or command.
- monolithic Block Structure
- A program structure consisting of a single block.
- N-phrase
- A phrase of the nonterminal symbol N.
- N-tree
- A syntax tree with the nonterminal symbol N as its root.
- name space
- A logical subdivision of a program within which all names must be unique
- nested block structure
- A program structure in which program blocks can contain other blocks.
- non-confusion
- Representation in which different values (of a given type) have different representations.
- nonterminal symbol
- A syntax symbol which is not a terminal symbol.
- object
- A variable which is the instantiation of a class.
- object program
- The output text of an assembler or compiler.
- parsing
- The process of analyzing a source program syntactically to determine its phrase structure.
- pass
- A complete traversal of the source program.
- pass by reference
- A parameter passing mechanism which makes the address of the actual parameter available to the subprogram.
- pass by value
- A parameter passing mechanism which makes only the value of the actual parameter available to the subprogram.
- phrase
- A string of terminal symbols labeling the terminal nodes (taken from left to right) of a syntax tree.
- phrase structure
- The way in which a program is formed from phrases and subphrases.
- pointer
- The address of a value.
- portable program
- A program which can be (compiled and) run on any machine.
- postfix notation
- A notation in which the operation appears after its operands.
- precedence
- A property of operators which affects the order of evaluation of different operators in an expression. affects the order of evaluation of different operators in an expression.
- primitive type
- A type whose values cannot be decomposed into simpler values.
- procedure
- A subprogram which does not return a value.
- production rule
- A rule which define the composition of a nonterminal symbol from symbols of the grammar.
- prototype
- A quickly developed version of software which is probably incomplete or inefficient.
- real machine
- A machine which exists physically as hardware.
- recursive interpreter
- Interpretater which recursively analyzes an entire program and then recursively executes the program.
- regular expression
- A shorthand for expressing patterns of text. An expression which generates a language from the operations union (alternation), concatenation, and concatenation closure.
- regular language
- A language which can be generated by regular expressions.
- RISC
- A computer which implements a small number of machine instructions, all of which are simple.
- scope
- The portion of a program in which a declaration is in effect.
- Scope error
- An error caused by a missing or duplicated declaration.
- scope rule
- A rule which defines the scope for an identifier.
- self-embedding
- A characteristic of languages in which an N-phrase of the language may contain an N-phrase.
- self-embedding language
- A language which is self-embedding.
- semantics
- The branch of language study which treats of meanings of symbols, words, and phrases.
- sentence
- A phrase of the start symbol.
- separator
- A value which can be compared to a key to determine the proper block of an index.
- source language
- The input language of a translator.
- source program
- The input text of an assembler or compiler.
- standard environment
- A standard collection of predefined variables, constants, types, procedures, and functions which is included implicitly in programs.
- start symbol
- A symbol which provides a starting point for a grammar.
- starter Set
- The set of all terminal symbols which can begin a non-terminal symbol.
- static binding
- A binding which is determined during compilation.
- static typing
- A typing which is determined during compilation.
- storage class
- Property of an item which determines when and in what area of memory a data item is assigned an address, and when it the address is unassigned.
- syntactic analysis
- The phase of compilation which parses a source program to verify its syntax and to determine its phrase structure.
- syntactic error
- An error caused by an unexpected, missing, or misplaced symbol, token, or phrase.
- syntax
- The branch of language study which treats of the combination of words and symbols into phrases.
- syntax tree
- An ordered labeled tree such that: (a) the terminal nodes are labeled by terminal symbols; (b) the nonterminal nodes are labeled by by nonterminal symbols; and (c) each nonterminal node labeled by N has children labeled by X1, ..., Xn (in order from left to right) such that N ::= X1 ... Xn is a production rule.
- target language
- The output language of a translator.
- terminal symbol
- An atomic symbol which actually appears in language text.
- token
- An atomic symbol of the source program.
- tombstone diagram
- A graphical representation of the overall function of a system.
- top-down parsing
- Parsing in which the syntax tree is built from the root toward the terminal symbols.
- translator
- A program that accepts text expressed in one language and generates semantically equivalent text expressed in another language.
- type
- A classification of values which defines internal representation, and, by implication, range of possible values.
- type checking
- verification that the types of variables and expressions are compatible.
- type error
- An error caused by attempting to apply an operation to an of incorrect or unsupported type.
- virtual machine
- A machine which is implemented in software.
- worst fit
- A placement strategy which selects the largest space from the free list (if it is large enough.)