| Week # |
Date |
Goal |
| Week 1 |
Mon 4-Sep |
n/a |
| Week 2 |
Mon 11-Sep |
Project Definition |
| Week 3-4 |
Mon 18-Sep
Mon 25-Sep |
A Simple One-Pass Compiler
Read and understand ASU Ch. 1 and 2
Write and modify the simple one-pass compiler in Ch 2
|
| Week 5-6 |
Mon 2-Oct
Mon 9-Oct |
Lexical Analysis
Read and understand ASU Ch. 3
Write code to demonstrate mastery of material
|
| Week 7-9 |
Mon 16-Oct
Mon 30-Oct |
Syntax Analysis
Read and understand ASU Ch. 4
Write code to demonstrate mastery of material
|
| Week 10-13 |
Mon 6-Nov
Mon 13-Nov
Mon 20-Nov
Mon 27-Nov |
Syntax-Directed Translation
Read and understand ASU Ch. 5
Write code to demonstrate mastery of material
|
| Week 14 |
Mon 4-Dec |
More Robust Lisp Implementation
Document and eliminate all crashes
Acquire, install, use Franz Allegro CL
Assert
Half of:
Maintain ongoing, easy-to-read bug list
I/O: read/write from console and file
--> Preliminary debug suite in file
|
| Week 15 |
Mon 11-Dec |
More Robust Lisp Implementation (continued)
Change your set to setq
Maintain ongoing, easy-to-read bug list
I/O: read/write from console and file
--> Preliminary debug suite in file
Iteration -- While
Progn, Let with implicit Progn
|
| Week 16 |
Mon 18-Dec |
More Robust Lisp Implementation (continued)
Add comments to lexer
Expand debug suite with more examples + comments
Implicit Progn in Defun
Ability to redefine defun's
let -> let*
Variable typed values
const int TYPE_INT = 0;
const int TYPE_LIST = 1;
const int TYPE_STRING = 2;
class CValue
{
public:
int valueType;
void* pValue;
/*
int intValue;
List* pListValue;
String* pString;
*/
};
String* pString = (String*) pValue;
Define getType and is* functions (either as below or as defined in Steele):
(setq x 3)
--> 3
(getType x)
--> "Integer"
(isString x)
--> NIL
(isInteger x)
--> TRUE
Strings and Characters (either as below or as defined in Steele):
(setq x "foo")
--> "foo"
(setq y (nth x 1))
--> 'o'
(setq z "bar")
--> "bar"
(setq x (plus x z))
--> "foobar"
; Look at Allegro CL for more string + char stuf
Lists: NIL, cons, first (car), rest (cdr), nth
setf equivs: setFirst, setRest, setNth
Garbage collection
(setq x NIL)
NIL
(setq y (cons 3 x))
(3)
(setq z (cons y y))
( (3) 3 )
(car y) ; same as (first y)
3
(car z)
(3)
(cdr y) ; same as (rest y)
NIL
(cdr z)
(3)
The Brass Ring: Othello, using Alpha-Beta search, in your Lisp
|