050_Assignment_1 - CS143 Summer2011 Handout05 June22,2011...

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

View Full Document Right Arrow Icon
CS143 Handout 05 Summer 2011 June 22, 2011 Programming Project 1: Lexical Analysis Handout written by Julie Zelenski with edits by Keith Schwarz. The Goal In the first programming project, you will get your compiler off to a great start by  implementing the lexical analyzer.  For the first task of the front-end, you will use  flex to create a scanner for the Decaf programming language. Your scanner will transform  the source file from a stream of bits and bytes into a series of meaningful tokens  containing information that will be used by the later stages of the compiler. This is a fairly straightforward assignment and most students don’t find it too time- consuming.  However, we are giving you more than a week to work on it.  Don’t let that  lull you into procrastinating.  Most of the work comes in figuring out how  flex  works.  If you’ve never really played with  flex , then start sooner than later so you don’t find  yourself using a late day on the easiest assignment of the quarter.   Once you get up to  speed, things should go relatively smoothly. Due July 1 th  at 11:59 p.m. Decaf Lexical Structure The handout on the Decaf specification (Handout 02) contains a full description of the  lexical structure of Decaf under the section “Lexical Considerations.”  Your job in this  assignment will be to write a scanner that implements this lexical specification. When writing your scanner, you will need to handle conversions from integer and real- valued literals into integer and real-valued numeric data.  That is, if you encounter the  sequence of characters  3.1415E+3 , while scanning the input you should convert this  into a  double  with this value.  Similarly, when seeing  137  you should convert it to an  int .  To save you some time and energy, you may want to use the  strtol  or  strtod functions to do these conversions.  You can learn more about  strtol  and  strtod  by  typing  man strtol  or  man strtod .  Alternatively, if you're familiar with the C++  stringstream  type, feel free to use that as well.  You may assume that any numeric  literal, whether integer or real, can be converted to the appropriate type without errors,  so don't worry about literals that overflow or underflow.
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
Decaf adopts the two types of comments available in C++.  A single-line comment starts  with  //  and extends to the end of the line.  Multi-line comments start with  /*  and end  with the first subsequent  */ .  Any symbol is allowed in a comment except the sequence  */  which ends the current comment.  Multi-line comments do not nest.  Your scanner 
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 ]}

Page1 / 6

050_Assignment_1 - CS143 Summer2011 Handout05 June22,2011...

This preview shows document pages 1 - 3. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online