Copyright © Gordon S. Novak Jr.
Permission is granted for individuals to make copies of these notes for personal use, or for instructors to make copies for classroom use.
Note: Some of these pages use math symbols such as: ∀ ∃ . Microsoft Internet Explorer will not display the math symbols, but Firefox will.
absolute code 167
abstract syntax tree 325
accessor 300
activation 201
activation record 201
actual parameter 250
address 249
alignment 133
alist 326
ambiguous grammar 60
antisymmetric 275
aop 318
architecture 298
arithmetic instructions 230
array 137
array performance 145
aspect-oriented programming 318
assignment 202
assoc 326
association list 326
associativity 71
ast 325
atn 65
augmented transition network 65
automaton 39
available 282
available on entry 282
avl tree 117
babbage 292
backpatching 174
banked memory 171
base address 131
base register 168
basic block 273
behavior 299
binding list 326
bison 44
bit vector 277
block 273
boolean equations 282
bottom-up parsing 63
bounds check 152
bounds register 168
boxed number 307
branch 174
branch prediction 296
bss 169
bss storage 170
busy 284
byte code 204
cache 313
cache prefetch 296
call by name 249
call overhead 200
callee-saved 235
caller-saved 235
car 324
cartesian product 275
cascading errors 30
cast 189
cdr 324
character class 16
chart parser 64
chomsky 32
chomsky hierarchy 39
church 320
cky parser 64
closed function 341
code generator 167
code motion 288
code reordering 298
color 286
compare 231
compile-time 261
compiler 9
compiler generator 268
computed 280
concatenation of languages 59
conditional jump 237
constant propagation 263
context sensitive 57
control flow analysis 272
control stack 201
controllability 97
copying collector 195
correctness 255
cross-cutting 318
current status variable 82
data area 131
data flow 11
dead code 293
declaration 124
def-use chain 285
defined 280
definition-use chain 285
derivative 293
difference engine 292
disambiguating rules 60
dll 183
dominator 279
dynamic data 263
dynamic dispatch 309
dynamic type checking 321
dynamically linked library 183
empty string 37
environment 202
epilogue 199
equivalence 275
equivalent grammars 59
errors 30
exported symbol 178
expression 210
expression generation 211
external reference 178
finite differencing 291
fix 232
flex 44
float 232
floating point 27, 28, 29, 232
folding 259
formal parameter 250
forward branch 174
function call 234
futamura projections 268
garbage 191
garbage collection 191, 195, 321
genarith 213
genc 209
generation 34
generic 315
getchar 12
getter 300
goto 174
grammar notation 37
hardware 295
hash function 119
hash table 118
hash with buckets 120
heap 189
heuristic 286
hiding 302
hierarchy 299
hoisting 288
identifier lookup 128
ieee floating point 28
if statement 237
immediate 213
imported symbol 178
induction variable 290
inline 253
inline function 341
inlining 341
instance variable 304
instruction pointer 184
interaction 321
interface 302
interpretation 263
interpreted code 204
interpreter 322
intrinsic function 233
invariant code 288
ip 184
jigsaw-puzzle modularity 317
jit 313
jump 174
just in time 313
killed 280
kleene closure 37
lambda calculus 320
language generated 59
language translation 335
layer 315
leader 274
left recursion 83
left-associative 71
leftmost derivation 58
leverage 254
lexer 14
lexer output 26
lexical scoping 121
lifetime 201
line handler 12
link editor 175
lisp interpreter 322
list 324
load 171
loader 168
local optimization 257
loop fusion 288
loop header 279
loop transformation 288
loop unrolling 261
looping statements 112
machine language 6
macro 252
malloc 189
mark-and-sweep 193
matching 332
matrix 289
mccarthy 320
memoization 294
memory management 189
method 127, 299, 304, 305, 309
method lookup 310
mix 263
mnemonic 7
modulo unrolling 261
multi-processor 289
multiple inheritance 312
mutator 300
name equivalence 153
nan 170
negate 232
new 189
non-volatile 235
nonterminal 33
number conversion 24
obfuscation 342
object 304
object file 175
object-oriented programming 299
observability 97
opacity 315
open 253
open function 341
operator precedence 70, 71, 72, 80
out-of-order 296
overhead 315
overloading 155
padding 133
parameter passing 249
partial evaluation 262, 263, 313
partial order 275
partition 275
pattern matching 332
pattern-pair 334
pc 184
peephole 159
peephole optimization 260
performance 152, 246, 289, 295
pic 184
pie 184
pointer arithmetic 189
pointer reference 148
polish 161
polymorphic 155
position independent code 184
position independent executable 184
postamble 199
postincrement 290
powerpc 296
preamble 199
precedence 71
precompute 263
pretty-printer 79
printf 188
processor stall 298
productions 33
program analysis 272
program counter 184
prologue 199
prove 255
quadruple 159
quote 324
read-eval-print loop 322
record 135
record reference 142
recursion 321
recursive 56
reduce 70
reducing 263
reduction in strength 258
reference counting 196
referenced 280
reflexive 275
register allocation 215, 285, 286
register management 214
register reuse 217
register window 297
regular expressions 45
regular language 42
relation 275
release storage 190
relocatable code 167
relocate 182
relocation bit 182
representation 321
reserved word 21
restore registers 199
retarget 157
return address 199
return statement 199
reverse polish 161
right-associative 71
rightmost derivation 58
row-major order 144
rpn 161
run-time 261
run-time library 186
save registers 199
scheme 320
scope 121
search 310
self 313
semantics 68
separate compilation 154
setter 300
shadow 122
shift-reduce parser 86
side-effect 315
signature 154
simula 299
simulation 299
snan 170
sound 152
space 254
sparc 297
speculative execution 296
speedup 289
spill code 286
stack frame 201
stack machine 164
stall 298
start address 168
start symbol 38
state 202
static data 263
storage alignment 133
storage leak 190
storage management 190
store 171
store-multiple 296
strength reduction 258
strip mining 289
strong typing 152
structural equivalence 153
structure example 146
structure reference 140
subclass 304
sublis 327
subscripts 82
super 304
superclass 304
superscalar 296
switch 243
symbolic 319
symbols 126
symmetric 275
synthesized translation 89
tag 150
terminal 33
this 309
three-address code 159
time 254
top-down filtering 62
top-down parser 62
transitive 275
tree form 79
triad 160
triple 160
type coercion 139
type constructor 149
type equivalence 153
type inference 139
type lattice 139
type safety 189
type signature 154
types as trees 149
unary 82
unfolding 263
union of languages 59
unrolling 261
use number 218
var 249
variable declaration 129
variant record 152
virtual method table 311
vmt 311
volatile 235
vtable 311
white space 18
write 188
writeln 188
x86 processor 225
yacc 90
yacc code 130
yacc grammar 94
yacc hints 101