SE250:lab-8:srag014
Lab 8
Lab 8 is all about parse trees.
Task 1
The first task was just to download the parsetree.c file...Quite an easy task!
Task 2
The second task was to cnstruct an expression (calling mkNode) that, when passed to prefix tree, produces the output. This task was not too bad, but it took me a while to figure out that the file had some errors in it which I fixed eventually.
int main() { ParseTree* t = mkNode('-', mkNode('-', mkNode('a', 0), mkNode('b', 0), 0), 0); prefix_tree(t); return 0; }
Used the visual studio compiler
cl parsetree.c
then
parsetree.exe
whcih gives the desire output!
-(-(a b))
Graph was obtained by using the command:
tree_to_graph( t, "output.dot" );
Had to use output.dot since I used da Visual studio compiler then I had to enter that output in graphviz!
Task 3
The third task was to construct a given expression.This task was a struggle, it took a while because I kept getting confused had to get some help....got there in the end though.
int main() { ParseTree* t3 = mkNode( '?', mkNode( '>', mkNode( '+', mkNode( 'a', 0 ), mkNode( 'b', 0 ), 0 ), mkNode( 'c', 0 ), 0 ), mkNode( '*', mkNode( 'z', 0 ), mkNode( '+', mkNode( 'y', 0 ), mkNode( 'b', 0 ), 0 ), 0 ),mkNode( '?', mkNode( '=', mkNode( 'a', 0 ), mkNode( '2', 0 ), 0 ), mkNode( '-', mkNode( 'x', 0 ), mkNode( 'y', 0 ), 0 ),mkNode( '-', mkNode( 'y', 0 ), mkNode( 'x', 0 ), 0 ), 0 ), 0 ); prefix_tree(t3); tree_to_graph( t3, "output3.dot" ); return 0; }
Task 4
The fourth task was just to get the graph from task 3. Note:Graph to come soon
Task 5
Not sure...tried googling it but to no avail.