020_Decaf_Specification

020_Decaf_Specification - CS143 Summer2011 Handout02...

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

View Full Document Right Arrow Icon
CS143 Handout 02 Summer 2011 June 22, 2011 Decaf Specification Written by Julie Zelenski and updated by Jerry and Keith. In this course, we will write a compiler for a simple object-oriented programming  language called Decaf.  Decaf is a strongly typed, object-oriented language with support  for inheritance and encapsulation.  By design, it has many similarities with C/C++/Java,  so you should find it fairly easy to pick up.  Keep in mind it is not an exact match to any  of those languages.  The feature set has been trimmed down and simplified to keep the  programming projects manageable.  Even so, you'll still find the language expressive  enough to build all sorts of nifty object-oriented programs. This document is designed to give the specification for the language syntax and  semantics, which you will need to refer to when implementing the course projects. Lexical Considerations The following are keywords .  They are all reserved, which means they cannot be used as  identifiers or redefined. void int double bool string class interface null this extends implements for while if else return break new NewArray Print ReadInteger ReadLine An identifier is a sequence of letters, digits, and underscores, starting with a letter.  Decaf is case-sensitive, e.g.,  if  is a keyword, but  IF  is an identifier;  binky  and  Binky  are  two distinct identifiers.  Identifiers can be at most 31 characters long. Whitespace (i.e. spaces, tabs, and carriage returns) serves to separate tokens, but is  otherwise ignored.  Keywords and identifiers must be separated by whitespace or a  token that is neither a keyword nor an identifier.  That is,  ifintthis  is a single identifier  rather than three keywords, but  if(23this  scans as four tokens.  A Boolean constant is either  true  or  false .  Like keywords, these words are reserved. An integer constant can either be specified in decimal (base 10) or hexadecimal (base 16).  A decimal integer is a sequence of decimal digits.  A hexadecimal integer must begin  with  0X  or  0x  (that is a zero, not the letter oh) and is followed by a sequence of  hexadecimal digits.  Hexadecimal digits include the decimal digits and the letters  a through  f  (either upper or lowercase).  For example, the following are valid integers:
Background image of page 1

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

View Full DocumentRight Arrow Icon
8 ,   012 ,   0x0 , 0X12aE . A double constant is a sequence of decimal digits, a period, followed by any sequence of  digits (maybe none).  Thus,  .12  is not valid, but both  0.12  and  12.  are.  A double can  also have an optional exponent, e.g.,  12.2E+2 .  For a double in this sort of scientific  notation, the decimal point is required, the sign of the exponent is optional (if not 
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.

This document was uploaded on 07/18/2011.

Page1 / 13

020_Decaf_Specification - CS143 Summer2011 Handout02...

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