Docstoc

CompilerSyllabus

Document Sample
CompilerSyllabus Powered By Docstoc
					                           COMPILER


Lecturer: Jason Jen-Yen Chen       Email: jasonjychen@gmail
Office: B313 Eng. Building 5       Office Hour: TBA

Course Description:

A compiler automatically translates source code (in a high-level programming language) to target
code (in a low-level assembly language for a computer architecture). Without it, there would have
been no way to build large-scale software quick enough to meet customer’s needs. This module
introduces the major components of a compiler covering scanner, parser, including top-down and
bottom-up parsers, abstract syntax tree (AST) generator, intermediate code generator, intermediate
code optimizer, and target code (assembly code) generator. In addition, runtime storage
management will be covered. Most of all, students will learn to develop a practical compiler that
transforms a Java-like language called “myLang” to ARM assembly code.

Learning Objectives:

       To understand the major components of a compiler through a simple example compiler.
       To understand the theory of scanning tokens from source code, namely, regular expression,
        non-deterministic finite automata (NFA), deterministic finite automata (DFA), and the
        subset construction algorithm to transform a NFA to a DFA.
       To specify the syntax of a programming language using context-free grammar (CFG),
        including terminal, non-terminal, production rules, left-most or right-most derivation,
        sentential form, and so on.
       To understand the theory of parsing, including first set, follow set, top-down parsing, and
        bottom-up parsing that includes LR(0), simple LR(1), LR(1), and LALR(1) methods.
       To understand abstract syntax tree (AST) that serves as the central data structure for
        compiler construction, which uses an array to implement a tree with 3 pointers: left-most
        child (LMC), right-sibling (RS) and parent (P).
       To understand the theory of bottom-up rewriting system (BURS) that recursively transforms
        an AST to target code of register machine architecture.
       To understand the runtime support of memory storage management provided by compiler.

  Learning Outcomes

       Recognize terminology, and describe the features of the components of a compiler. Create
        regular expression to identify tokens. Transform a regular expression to NFA, then to DFA.
        Design a scanner for the DFA.
       Explain context-free grammar (CFG) including production rule, start symbol, derivation,
        left-most or right-most derivation, parse tree and so on. Explain constructs of a
        programming language such as identifier, factor, term, expression, statement, and so on.
       Explain parsing issues such as first set, follow set, top-down parsing and 4 methods of
        bottom-up parsing. Design a top-down parser.
       Design the data structure for abstract syntax tree (AST). Explain how to use BURS to
        transform AST to target code.




                                                                                                 1
Grading Policy:

  Mid-Term Exam 30%
  Final Exam    30%
  Project       40% (4 Labs, 10% each)

  Bonus points: 1. Class attendance (1 point each class)
                2. Office hour visit (1 to 3 points, depending on your question)
  Note that the bonus points intend to help hard-working students pass this course. Thus, no
  bonus will be given beyond the passing grade of 60.

Learning Materials & Resources

Textbook:
Crafting a Compiler, Fischer, Cytron, and LeBlanc, Pearson 2010.
ISBN: 978-0-13-801785-9

Reference book:

Modern Compiler Design, Grune, Bal, Jacobs and Langendoen, Wiley 2000.

Access web site www.agilemethod.csie.ncu.edu.tw for online class notes.




                                                                                          2

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:0
posted:2/12/2012
language:
pages:2