|
Overview |
|
|
|
The focus of 4115 will be the design and implementation of a little
language. You will divide into teams and design the goals, syntax,
and semantics of your language, and implement a compiler for your
language.
|
|
Resources |
|
|
|
A Two-page Introduction to ANTLR
|
|
|
The ANTLR homepage
|
|
|
A two-page introduction to the CVS version control system. I strongly suggest you keep your project under some version control system.
|
|
White Paper |
|
|
|
The Java white paper from Sun Microsystems
|
|
|
C# Introduction and Overview
|
|
Language Reference Manual |
|
|
|
Dennis M. Ritchie, C Reference Manual
|
|
|
Kernighan & Ritchie, The C Programming Language
|
|
|
The C Language Reference Manual (DEC)
|
|
|
The C Language Reference Manual (SGI)
|
|
|
The C Language Reference Manual (Microsoft)
|
|
|
Stroustrup, The C++ Programming Language
|
|
|
The C++ Language Reference (Microsoft)
|
|
|
The Java Language Specification
|
|
|
The C# Language Specification
|
|
|
Aho, Kernighan, and Weinberger,
The AWK Programming Language
|
|
Final Report |
|
|
|
A sample final report by Chris Conway,
Cheng-Hong Li, and Megan Pengelly from 4115 last term. It includes
the white paper, tutorial, language reference manual, project plan,
architectural design, and testing plan. It does not include the
lessons learned and code listings sections, although it should.
|
|
|
Source for the very successful MX language project
|
|
|
- Introduction
- Include your language white paper.
- Language Tutorial
- A short explanation telling a
novice how to use your language.
- Language Manual
- Include your language reference manual.
- Project Plan
- Identify process used for planning, specification, development
and testing
- Include a one-page programming style guide used by the team
- Show your project timeline
- Identify roles and responsibilities of each team member
- Describe the software development environment used (tools and
languages)
- Include your project log
- Architectural Design
- Give block diagram showing the major components of your translator
- Describe the interfaces between the components
- State who implemented each component
- Test Plan
- Show two or three representative source language programs along
with the target language program generated for each
Show the test suites used to test your translator
Explain why and how these test cases were chosen
What kind of automation was used in testing
- Lessons Learned
- Each team member should explain his or her most important
learning
- Include any advice the team has for future teams
- Appendix
- Attach a complete code listing of your
translator with each module signed by its author
|