CSA 474/574 Compiler Design (3 credits)
Occasionally offered during the spring semester.
Catalog description:
Examination of the nature of programming languages and programs which implement them. Compiler and interpreter design and implementation techniques. Review of grammars and languages (context free, context sensitive, regular). Design of interactive interfaces. Parsing of context free languages. Lexical analysis. Semantic analysis and code optimization.
Prerequisites:
(CSA274 or CSA606 or equivalent) and (CSA278 or equivalent).
Course Objectives:
- To examine the nature of programming languages.
- to appreciate the various formal methods of specifying syntax.
- To differentiate between syntax, semantics, and pragmatics.
- To understand the operating and design principles behind language transducers.
- To understand the major components of a compiler: scanner, parser, code generator, and code optimizer.
- To have a working knowledge of at least one parsing technique.
- To experience a large systems programming project.
Learning Outcomes: |
CSA474.1: To describe and differentiate among the features of programming languages that can be described by language syntax versus semantics. |
CSA474.2: To describe and differentiate among the purposes of the major components of a compile: scanner, parser, code generator, code optimizer, and symbol table. |
CSA474.3: To demonstrate an understanding of some of the standard parsing techniques. |
CSA474.4: To demonstrate an understanding of semantic processing. |
CSA474.5: To work in a small team to implement a compiler for a small programming language that includes multiple control structures, functions, parameters, and a symbol table. |
Required topics (approximate weeks allocated):
- Overview of the translation process (.5)
- Formal notations (1)
- review of regular expressions
- review of formal grammars
- Compiler tools (1.5)
- currently available tools (e.g., lex and yacc)
- Lexical analysis (2)
- regular expression
- automata
- tokens
- Syntax analysis (3)
- parsers
- context-free grammars
- top-down parsing
- bottom-up parsing
- LL(1) grammars and parsing
- LR grammars and parsing
- parser generators
- Semantic processing (3)
- syntax-directed translation
- symbol tables
- type checking
- type systems
- type equivalence
- type conversions
- run-time environments
- attribute grammars
- Code optimization (1)
- Code generation (1)
- Compiler project (1)
- Exams/Review (1)
Graduate students:
Students enrolled in CSA 574 will be given additional readings and/or assignments.
