# Intermediate code generation - To access named parameters and local variables inside a procedure, IR should be able to reference them. During the generation the needed information (e.g. offsets or registers) can be extracted from the symbol table and saved in the operands. # ELF generation - Don't ignore relocations where the symbol is not defined in the symbol table. Report an error about an undefined symbol. # Name analysis - Format error messages. - Return non-zero error code on errors. # Built-in Printi should print a sign for negative numbers. # Type analysis