blob: 9a886cb9aeb501bd7db3d95499c74b2993507907 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
Project: DRAGON
===============
- Arrange an online demo of your compiler during Finals week (15min).
- Send a self-contained compressed tar source of your compiler by
email. Your compiler must run on the ITL machines.
- Submit a hardcopy of your compiler documentation: design document,
user manual, testing report, status report (limitations, caveats, or
bugs), and a "dragon" haiku. Indicate clearly in your report an
extra feature that is unique to your compiler.
CHECK LIST
----------
(1.0) Lexical Analysis
a. Line numbering
b. Two styles of comments
c. (optional) Scientific notation
(1.5) Syntax Analysis: grammar adjustments
a. Unlimited nesting of subprograms
b. Array access on both sides of assignment
c. Allow for statements.
d. (optional) Another loop construct
e. (optional) Multidimensional arrays
f. (optional) Records and pointers
(2.0) Symbol Table
a. Memory-leak handler
b. (optional) Statistical analysis of hashpjw
(2.5) Syntax Tree (Intermediate Code Generation)
a. Visual print
b. Memory-leak handler
(3.0) Semantic Analysis & Type Checking
a. Check list
b. Error reporting
c. (optional) Error recovery
(4.0) Code Generation
a. Input/Output statements
b. Simple expressions (arithmetic and relational): gencode
c. Statements (assignment, conditional, loop)
d. Nonlocal names: base frame pointer (static scope parent)
e. Recursive routines (example: GCD program)
f. Complex expressions (register spilling)
g. (optional) Arrays (L-value, R-value, parameters, nonlocal)
h. (optional) Floating-point support
Extra Trails (under construction)
- Lambda or Objects.
- Code generator for IA64 or SPARC (RISC architecture).
- Code optimization.
|