Assessable Learning Goals covered for Quiz 3 Learning Goals

The author suggests an AST node have access to what collection of other "nearby" nodes?

What is the common AST node structure associated with a sequence or block of statements?

What is the common AST node structure associated with a repeat-until or repeat-while post-test loop?

What is the common AST node structure associated with a while-do-done pre-test loop?

What is the common AST node structure associated with an if-then or if-then-else structure?

What is the common AST node structure associated with a switch or if-elif-elif-elif-else multi-way branch?

What is the difference between a concrete syntax tree and an abstract syntax tree (AST)?

Cite two pieces of information stored as control information in a stack frame.

How is the location of local variables in a function determined? How are these addresses accessed in modern CPUs?

What function specific information is commonly stored in the symbol table? Why is the symbol table the ideal structure?

What is a dynamic link of a stack frame? Why is it dynamic?

What is a frame or stack frame? What language construct implies the use of stack frames?

What is a local variablle? Where in memory is a local variable typically stored?

What is the difference between callee and caller saved registers? Which might not exist for a function and why?

An activation record is another name for what stack associated term?

Distinguish between the stack-top register and a frame pointer. How are each used in stack and procedure management?

Distinguish the use of data areas: global data, heap allocated data, stack allocated data. When are each used?

What is an object pointer, how is it used in the addressing of variables in modern CPUs?

Given a grammar and its LL(1) parsing table, show how a parse tree is created from a token stream.

How do you build an LL(1) parsing table from a grammar that is LL(1)?

How is a predict set calculated from first sets, follow sets, and "derives to λ"?

How are Item Follow Sets formed?

Know what an Item Set and its Progress Marker represent.

Be able to calculate Closure and Goto for LR Item Sets.

How are Follow Sets and the grammar's Item Set graph (CFSM) used to construct SLR parsing tables?

How are JUMPs for programmatic control structures (conditional branches, loops) calculated?

Understand how the treeCG algorithm operates, its parameters.

Understand how the treeCG algorithm can be modified to support different types of operators.

What is an immediate operand of a machine instruction? How do these affect register counting and allocation?

Be able to process a parse-tree for REs creating a structure for an equivilant NFA.

How can machine code for expression tree valuation be efficiently constructed?

Know the Sethi-Ullman numbering algorithm for expression trees.

What is register spilling?

What is register targeting in the context of register allocation in expression trees?

Why would it be advantageus to reorder (a+b)+(c+d) into ((a+b)+c)+d? Why can this NOT be done by a compiler?

In on-the-fly register allocation, what are allocatable registers, reserved registers, and work registers.

Understand how the registerNeeds Sethi-Ullman algorithm can be modified to account for other types of operations (assignment, cast).

What is a pseudo register or virtual register?

Be able to convert a RE (in the book's notation) to an equivalent NFA.

Be able to compare and contrast two approaches: one symbol table for all scopes and separate symbol table for each scope

What are semantic actions?

What are semantic values?

What is syntax directed translation (SDT)?

How are semantic actions different than syntactic actions?

Learn how to express logic for parse tree simplification during construction (AKA: syntax directed translation).

Describe a common simple data structure for maintaining a compiler's namespace.

What information is associated with a symbol? Name 3 distinct items.

What is the namespace of a compiler? What does the namespace store?

What special properties of names suggest a relatively simple data structure be used?

What is a token and a token stream in "compiler speak"?