<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.kram.nz/index.php?action=history&amp;feed=atom&amp;title=SE250%3Alab-8%3Ahlin079</id>
	<title>SE250:lab-8:hlin079 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.kram.nz/index.php?action=history&amp;feed=atom&amp;title=SE250%3Alab-8%3Ahlin079"/>
	<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-8:hlin079&amp;action=history"/>
	<updated>2026-04-28T14:48:18Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.kram.nz/index.php?title=SE250:lab-8:hlin079&amp;diff=8162&amp;oldid=prev</id>
		<title>Mark: 5 revision(s)</title>
		<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-8:hlin079&amp;diff=8162&amp;oldid=prev"/>
		<updated>2008-11-03T05:20:27Z</updated>

		<summary type="html">&lt;p&gt;5 revision(s)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;To get start with the lab I tried to compile the file and it gave me an error. I changed:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
return sp &amp;gt;= str &amp;amp;&amp;amp; stircmp( sp, end ) == 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
return sp &amp;gt;= str &amp;amp;&amp;amp; stricmp( sp, end ) == 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
it can compile now&lt;br /&gt;
.Then i construct an expression using mkNode that, when passed to&lt;br /&gt;
 prefix tree, produces the output -(-(a b)).&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
ParseTree* t = mkNode( ’-’, mkNode( ’-’, mkNode( ’a’, 0 ), mkNode( ’b’, 0 ), 0 ),0).;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
in order to make sure it is right i wrote a main function.&lt;br /&gt;
i aslo got a graph for the tree.&lt;br /&gt;
&amp;lt;sorry i can&amp;#039;t upload it&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.After that i construct an expression that producesn ?(&amp;gt;(+(a b) c) *(z +(y b)) ?(=(a 2) -(x y) -(y x))).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ParseTree* t = mkNode( &amp;#039;?&amp;#039;,mkNode( &amp;#039;&amp;gt;&amp;#039;, mkNode(&amp;#039;+&amp;#039;,mkNode( &amp;#039;a&amp;#039;, 0 ), mkNode( &amp;#039;b&amp;#039;, 0 ),0),mkNode(&amp;#039;c&amp;#039;,0),0) ,mkNode(&amp;#039;*&amp;#039;,mkNode( &amp;#039;z&amp;#039;,mkNode( &amp;#039;+&amp;#039;, mkNode( &amp;#039;y&amp;#039;, 0 ), mkNode( &amp;#039;b&amp;#039;, 0 ), 0 ),0),0),mkNode(&amp;#039;?&amp;#039;,mkNode( &amp;#039;=&amp;#039;,mkNode( &amp;#039;a&amp;#039;,0), mkNode( &amp;#039;2&amp;#039;, 0 ),0), mkNode( &amp;#039;-&amp;#039;, mkNode(&amp;#039;x&amp;#039;,0 ),mkNode(&amp;#039;y&amp;#039;, 0 ),0), mkNode( &amp;#039;-&amp;#039;, mkNode(&amp;#039;y&amp;#039;,0 ),mkNode(&amp;#039;x&amp;#039;, 0 ),0),0),0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
i toke me a while to figured out which 0 goes to which.&lt;br /&gt;
.I have a graph for that tree but i can&amp;#039;t upload it .&lt;br /&gt;
.Question mark has three children. The second and third children are the thing goes to the left and right hand side of colon.&lt;br /&gt;
.I write a (recursive) function to evaluate a parse tree that consists of nodes that are either digits or the operators +, -, * and /. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
eval(ParseTree *node){&lt;br /&gt;
	  &lt;br /&gt;
	  if (node-&amp;gt;name==&amp;#039;+&amp;#039;){&lt;br /&gt;
		  return eval(node-&amp;gt;arg[0])+eval(node-&amp;gt;arg[1]);&lt;br /&gt;
	  }&lt;br /&gt;
	  if (node-&amp;gt;name==&amp;#039;-&amp;#039;){&lt;br /&gt;
		  return eval(node-&amp;gt;arg[0])-eval(node-&amp;gt;arg[1]);&lt;br /&gt;
	  }&lt;br /&gt;
	  if (node-&amp;gt;name==&amp;#039;/&amp;#039;){&lt;br /&gt;
		  return eval(node-&amp;gt;arg[0])/eval(node-&amp;gt;arg[1]);&lt;br /&gt;
	  }&lt;br /&gt;
	   if (node-&amp;gt;name==&amp;#039;*&amp;#039;){&lt;br /&gt;
		  return eval(node-&amp;gt;arg[0])*eval(node-&amp;gt;arg[1]);&lt;br /&gt;
	   }&lt;br /&gt;
	   if ((node-&amp;gt;name&amp;gt;=&amp;#039;0&amp;#039;)||(node-&amp;gt;name&amp;lt;=&amp;#039;9&amp;#039;)){&lt;br /&gt;
		   return node-&amp;gt;name-&amp;#039;0&amp;#039;;&lt;br /&gt;
	   }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[User:Hlin079|Hlin079]]&lt;br /&gt;
.&lt;/div&gt;</summary>
		<author><name>Mark</name></author>
	</entry>
</feed>