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.