CSc 4340/6340, Introduction to Compilers
Fall 2009
PROJECT - Phase I

Phase I: (Due: 4 October, 2009 - Sunday)
Electronic submission under p1

Using JFlex and JCup tools, build the lexical analyser and parser for the DRC Query language. Wrap the parser within an interactive program that behaves as the screen capture shown at the end.

The program should also build a DRC expression tree (first a binary tree) and then it should transform the binary tree into a general tree in which any seqeunce of "and" and "or" operators are combined within the same node. Make sure that you have the "displayTree" code turned on - so that we can see the pre-order listing of the nodes.

Test Cases for Phase 1

[raj@tinman phase1]$ java DRC db
DRC> { u,v | (exists t,w,x,y,z)(
            employee('John','B','Smith',t,u,v,w,x,y,z) ) }
::::Node:
Node Type: query  
Select Variables : ( 
U,
V,
)
::::Node:
Node Type: exists  
Variables are : ( 
T,
W,
X,
Y,
Z,
)
::::Node:
Node is  : predicate
Predicate name is  : EMPLOYEE
Arguments are : ( 
John,str
B,str
Smith,str
T,var
U,var
V,var
W,var
X,var
Y,var
Z,var
)
DRC> {a,b | p(x,y) and (exists u,v)p(a,b)}
Syntax Error
DRC> exit;
[raj@tinman phase1]$