Final Vocab Flashcards
absolute code
computer program code that is executable without
further processing: all addresses in the code are absolute.
cf. relocatable code.
abstract syntax tree (AST)
a tree representation of a program
that is abstracted from the details of a particular programming
language and its surface syntax.
accepting state
a state of a finite automaton in which the input string is accepted
as being a member of the language recognized by the automaton.
actual parameter
a parameter used in a call to a subprogram. cf. formal parameter.
address alignment
see storage alignment.
adjacency matrix
a method of representing a graph by a Boolean
matrix M , where M_{ij = 1 iff there is an arc from node i
to node j in the graph.
aliasing
the creation of an alternate name for data, either in the definition of
a program or during its operation.
alphabet
a set of symbols used in the definition of a language.
ambiguity
a case where more than one interpretation is possible.
ambiguous grammar
a grammar that allows some sentence or string to be generated
or parsed in more than one way (i.e., with distinct parse trees).
antisymmetric
a relation * is antisymmetric iff
forall a, b . a b and b a –> a = b .
Example <=
arity
the number of arguments of a function.
associativity
a specification of the order in which operations should be performed
when two operators of the same precedence are adjacent. Most operators
are left-associative, e.g. the expression A - B - C
should be interpreted as ((A - B) - C).
augmented transition network (ATN)
a formalism for describing parsers, especially for natural language.
Similar to a finite automaton, but augmented in that arbitrary tests may be
attached to transition arcs, subgrammars may be called recursively, and
structure-building actions may be executed as an arc is traversed.
automatic programming
synthesis of a program that satisfies a
specification, where the specification is higher-level than ordinary
programming languages.
available
an expression is available if it has been computed previously in the
computation path preceding the current location and has not been killed.
AVL tree
self-balancing binary search tree
backpatching
filling in the address of a label, which has just become defined, in preceding parts of the program that made forward references to it.
backward referencing
a reference to an earlier statement in the program
base address
the address of the beginning of a data area. This address is added to a relative address or offset to compute an absolute address.
basic block
a sequence of program statements such that if any of them is executed, all
of them are; a sequence of statements that has a label (if any) only at the
beginning and a branch (if any) only at the end.
basic type
a data type that is implemented in computer hardware
instructions, such as integer or real.
bit vector
a sequence of Boolean values (0 or 1) represented as the
bits of one or more computer words. It is an efficient representation
for sets that are subsets of a fairly small finite set of possible elements.
BNF
Backus-Naur Form, a syntax for writing context-free grammars
that describe computer languages.
Boolean matrix
a matrix whose elements are Boolean values, 0
or 1.
bottom-up parsing
a parsing method in which input words are matched against the right-hand
sides of grammar productions in an attempt to build a parse tree from the
bottom towards the top.
boxed number
a form of number storage that contains type information as well as a numeric value, e.g. Integer in Java.
BSS
a pseudo-operation for some assemblers, used to specify the
reservation of a block of storage, perhaps initialized to some constant
value. (an abbreviation of Block Starting with Symbol.)
busy
describes a variable whose value will be needed later during
program execution. Also, live.
cache prefetch
an instruction that causes the contents
of a specified memory address to be fetched from main memory into the cache
memory so that it will be available for fast access when needed.
call by name
a form of parameter transmission in which the effect of a textual
substitution of the actual parameter for the formal parameter is achieved
call by reference
a form of parameter transmission in which the address of the actual
parameter is transmitted to the subprogram. Any changes to the parameter
made by the subprogram will change the argument as seen by the calling
program.
call by value
a form of parameter transmission in which the value of the actual
parameter is transmitted to the subprogram. Changes to the parameter
made by the subprogram will not be seen by the calling program.
callee-saved
registers whose value must be preserved by a subprogram. The subprogram can either not use those registers, or save their values and restore them before exiting. Also, nonvolatile.
caller-saved
registers whose value may be destroyed by a subprogram. If the calling program wants to save those values, it must do so. Also, volatile.
canonical form
a standardized form of expressions or data. If all programs put their
expressions into a canonical form, the number of cases that will have
to be considered by other programs is reduced.
Cartesian product
if A and B are sets, the Cartesian product
A X B is the set of ordered pairs (a, b) where
a in A and b in B .
cascading errors
a situation, e.g. in compiling a program, where one error causes many
reported errors. For example, failure to declare a variable may cause
an error every time that variable is referenced.
cast
to coerce a given value to be of a specified type.
Chomsky hierarchy
the hierarchy of formal language types: regular, context free, context
sensitive, and recursively enumerable languages, each of which is a proper
subset of the following class.
CKY parser
a kind of parser, due to Cocke, Kasami, and Younger, that efficiently produces all possible parses of an input. Also written CYK.
class
in object-oriented programming, a description of a set of similar objects.
For example, Fido, an object or instance, might be a member of the class Dogs.
code generation
the phase of a compiler in which executable output code is generated
from intermediate code.
code motion
the movement of code by a compiler to a place other than where it appears
in the source program. For example, an expensive but unchanging
computation might be moved outside a loop.
collision
in a hash table, a case in which a symbol has the same
hash function value as another symbol.
column-major order
a method of storing arrays in which values in a column of the array
are in adjacent memory locations. cf. row-major order.
computed
of a subexpression, having its value computed within a given block of code.
concatenation
making a sequence that consists of the elements of a first sequence
followed by those of a second sequence.
condition code register
A CPU register that describes the result of the last arithmetic operation
or comparison. It typically contains bits for <0, =0,
>0, carry, and overflow.
constant folding
performing at compile time an operation whose
operands are constant, giving a new constant result.
context-free grammar
a grammar in which the left-hand side of each production consists of a
single nonterminal symbol.
control flow analysis
analysis of the possible paths that control flow
may take in a program during execution.
dangling reference
in execution of a program, a reference, usually by means of a pointer,
to storage that has been deallocated. For example, in a recursive
language, a pointer to storage that is allocated on the execution stack
could be retained after the routine associated with that stack frame has
exited, resulting in errors.
data area
a contiguous area of memory, specified by its base address and size.
Data within the area are referenced by the base address of the area and
the offset, or relative address, of the data within the area.
data flow analysis
analysis of places in the programs where data
receive values and the places where those data values can subsequently be used.
dead code
parts of a program that cannot be reached during execution and therefore
can never be executed.
declaration
a statement in a programming language that provides
information to the compiler, such as the structure of a data record,
but does not specify executable code.
defined
of a variable, having received a value prior to a given point in a program.
definition-use chain
the portion of a program flow graph across which a
variable is both defined and live (busy), beginning at the point where
the variable receives a value and ending at the last place that value is used.
Also, du-chain.
derivation
a list of steps that shows how a sentence
in a language is derived from a grammar by application of grammar rules.
deterministic finite automaton
a finite automaton that has at most one transition from a state for each
input symbol and no empty transitions. Abbreviated DFA.
disambiguating rules
rules that allow an ambiguous situation to be resolved to a single
outcome, e.g. rules of operator precedence.
dominator
a basic block of a program is a dominator of a second block if every
path from the entry of the program to the second block passes through it.
dynamic
refers to things that happen or can only be determined
during actual execution of a program. cf. static.
dynamic memory
memory that is assigned during execution of a program, especially heap
memory.
dynamic type checking
testing of the types of the values of variables at runtime, as is done
in Lisp and object-oriented languages. cf. static type checking.
enumerated type
a scalar type consisting of a finite set of
enumerated values, e.g. type boolean = (false, true);.
epilogue
a section of code that is executed just before leaving a subprogram
to restore register values, transfer the result of the subprogram to
the calling program, and branch to the return address.
equivalent grammars
grammars that denote the same language.
error production
a grammar production, as in a Yacc grammar,
that is executed if no other production matches the input.
finite automaton
an abstract computer consisting of an alphabet of symbols, a finite
set of states, a starting state, a subset of accepting states, and
transition rules that specify transitions from one state to another
depending on the input symbol. The machine begins in the starting
state; for each input symbol, it makes a transition as specifies by the
transition rules. If the automaton is in an accepting state at the end
of the input, the input is recognized. Also, finite state machine.
Abbreviated FA.
formal parameter
a parameter specified in the argument list of a procedure definition.
cf. actual parameter.
forward reference
reference to a label in a program that has not yet appeared in the program
text.
fragmentation
the breaking up of memory into blocks that are too small to be of use.
cf. internal fragmentation, external fragmentation.
garbage
storage that can no longer be accessed because no pointer to it exists.
garbage collection
the identification of unused storage and collection of it so that it can
be placed back on the heap for reuse.
global optimization
optimization based on analysis of the entire
program or procedure.
grammar
a formal specification of a language, consisting of a set of nonterminal
symbols, a set of terminal symbols or words, and production rules that specify
transformations of strings containing nonterminals into other strings.
graph
a (directed) graph is a pair ( S, Gamma ) where S is a set of
nodes and Gamma subset S X S is a set of transitions between
nodes.
graph coloring
an algorithm for assigning a minimal number of ``colors’’ to nodes of
a graph such that no two nodes that are connected have the same color.
Used in compilers as a method of register assignment: colors correspond
to registers, nodes to variables or def-use chains, and connections to
variables that are simultaneously live.
hash function
a deterministic function that converts converts a
symbol or other input to a ``randomized’’ integer value.
hash table
a table that associates key values with data by use of
a hash function.
hash with buckets
a form of hash table in which the hash code denotes a bucket or set of entries whose keys hash to that value
heap
an area of contiguous memory and/or a set of unused storage records that
can be allocated to the running program as dynamic memory upon request;
the address of the record is returned and assigned to a pointer variable.
new in Pascal, malloc in C, and cons in Lisp allocate
heap memory.
infix
an expression written with an operator between its operand,
e.g. a + b . cf. prefix, postfix.
implicit parameter
a parameter that is passed to a subprogram without being specified directly
by the programmer, e.g., the return address.
induction variable
a variable that is incremented during a loop and used to perform a similar
action on multiple data; also, loop index.
inherit
to use a method defined in a superclass.
inherited attribute
an attribute of a node in a parse tree that is derived from the context
in which the node appears. cf. synthesized attribute.
inlining
inserting code of a subprogram directly into the code compiled for the
calling program, rather than compiling a subroutine call to an external
procedure.