Mon, 16th Nov 2015, 02:33 Re: Program Lab 3



I know most of you have relegated lab 3 to history by now, but I thought
my response to a student might be useful to you all in the future.  I am
still answering student email about lab 3 even though it is now after 2am.
Too late for this assignment, but perhaps not too late for increasing
knowledge.

In any case, a student writes:


> Good Afternoon Dr. Patt,
>
> I am a student in your EE306 course and feel I am currently overthinking
> the third program lab.
>
> I have most of the core program written, yet my issues come with the test
> for the character to be placed onto the stack. My first method was simply
> to compare the value of the ASCII for ) with the negative (xFFD7). If their
> sum is zero, then the character is ),


Good!


> values should be popped off the
> stack, operations should be performed and result pushed back onto the
> stack.


Good again!


> However, in the case of "y=(2-((5*8)+1))", the equation will be
> reduced to "y=(2-41)". Comparing the value 41 will give a false answer to
> the ASCII ")" test.

> Thanks,
>
> <<name withheld to protect the student who is looking for too many ")" >>


Why are you comparing 41 with the ascii code for ).  Before getting there,
you had (,2,-,(,40,+,1 on the stack.  You popped 1,+,40,( off the stack.
Then you did the operation, got the result 41 and pushed it on the stack.
There is no ) parenthesis to check here.  Now your stack looks like
(,2,-,41 on the stack.  ...and you look at the next input character, which is
a ), so you pop off those four values, perform the operation, getting -39.
The input is done, the stack is empty, you put -39 in the right place and
you are done.

Hope this helps.  See you in class.



Yale Patt