CSc 4340/6340, Introduction to Compilers
Fall 2009
Programming Assignment 1
Due: 30 August 2009 (Sunday)
INDIVIDUAL ASSIGNMENT

SUBMISSION INSTRUCTIONS:
Use the following command on tinman server to submit source files:

sudo handin 1 file1 file2 ...

Here 1 refers to assignment number and file1, file2,... refer to individual
files to be submitted. For this assignment you must submit

Makefile
.flex file
.cup file
all .java files that were created by you (do not submit Lexer.java etc).

Write a Java program (using JFlex/Cup) to interpret WAE expressions. The CFG for WAE expressions is given below:

<WAEStart> ::= <WAE> SEMI
<WAE> ::= <num> | {+ <WAE> <WAE>} | {- <WAE> <WAE>} | {with {<id> <WAE>} <WAE>} | <id>
You will write a main program, called WAE.java, that prompts the user with WAE> . The user can enter a WAE expression at the prompt or type exit to exit the WAE interpreter. If the user enters a WAE expression, your program should verify that it is a valid expression. If the expression is valid, it should be evaluated and the value of the expression should be printed; Otherwise and error message should be reported.

Sample Run:

$ java WAE
WAE> {with {x 3}
       {with {y 4}
         {with {z 5}
           {+ x {+ y z}}
         }
       }
     }

The value is 12

WAE> {with {x 3}
       {with {y 4}
         {+ y z}
     }

Syntax Error

WAE> {with {x 3}
       {with {y 4}
         {+ y z}
       }
     }

Semantic Error