{[ promptMessage ]}

Bookmark it

{[ promptMessage ]}


190_Assignment_3 - CS143 Summer2011 Handout19 July12th,2011...

Info iconThis preview shows pages 1–3. Sign up to view the full content.

View Full Document Right Arrow Icon
CS143 Handout 19 Summer 2011 July 12 th , 2011 Programming Project 3: Semantic Analysis The Goal In the third programming project, your job is to implement a semantic analyzer for your  compiler.  We're now at the penultimate phase of the front-end. If we confirm the  source program is free from compile-time errors, we're ready to generate code!   Your semantic analyzer will traverse your parse tree (as many times as is necessary)  and validate that the semantic rules of the language are being respected, printing  appropriate error messages for violations.  What kind of rules are being verified? Lots  of type checking, for one.  Arithmetic operations require numbers.  The actual  parameters in a call must be compatible with the formal parameters.  Variables must be  declared and can only be used in ways that are acceptable for the declared type.  The  test expression used in an if statement must evaluate to a Boolean value.  In addition to  type checking, there are other rules: new declarations don't conflict with earlier ones,  access control on class fields aren't violated, break statements only appear in loops, and  so on.  One of the more interesting and worthwhile parts of the assignment is thinking  through what is the best way to report various errors, so as to most help the  programmer fix the mistake and move on. Scope Checkpoint: Saturday, July 23 th  at 11:59 p.m. (Hard Deadline) Everything: Wednesday, July 27 st  at 11:59 p.m. This assignment has a bit more room for design decisions than the previous  assignments. Your program will be considered correct if it verifies the semantic rules  and reports appropriate errors, but there are various ways to go about accomplishing  this and ultimately how you structure things is up to you.  There is no definitive way,  but there are good and bad choices.  Part of your job is brainstorming your options,  making thoughtful decisions, and documenting your reasons.  Your finished  submission will have a working semantic analyzer that reports all varieties of errors.   Given that semantic analysis is a bigger job than the scanner or parser, we have plotted  a "checkpoint" along the way.  At the checkpoint, your analyzer needs to show it can  handle errors related to scoping and declarations, because these form the foundation for  the later work.  We’ll try to identify any issues and/or bad design decisions right away  so you don’t find yourself trapped after a huge time investment.
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Past students speak of the semantic analyzer project in hushed and reverent tones.  For 
Background image of page 2
Image of page 3
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}