Michael Quick wrote:
> It's 8AM and I haven't used C or with stacks in a long time; how does
> 'stack_anchor' become NULL? What is advancing the stack_anchor to the next
> value? I guess I'm wondering if you have some unintentional (obviously)
> conditions which would keep the loop from progressing.

Yes.  It looks like the body of your inner while statement is never executing.
You appear to be spinning in your outer while loop.

> 
> On Sun, Nov 4, 2012 at 5:42 PM, Allen <[email protected]> wrote:
> 
> > I'm stumped debugging a problem in a C self-study course. A "while"
> > expression
> > is hung in a loop without progressing to the body the "while" is supposed
> > to
> > execute. It seems to me this should not be possible. Can anyone see what's
> > going on?
> >
> > Here is the affected code snippet:
> >
> > else {  //token is an operator
> >             while (stack_anchor != NULL) {  // operators on stack
> >             while ((op_precedences[stack_anchor->value.op_code] >
> > op_precedences[ptoken->value.op_code]) || ((op_precedences[stack_anchor-
> > >value.op_code] == op_precedences[ptoken->value.op_code]) &&
> > (op_associativity[op_precedences[stack_anchor->value.op_code]] == LEFT))) {
> >                               ptoken2 = pop(ptop);
> >                 printf("Debug: Enqueue operator-precedences to postfix
> > queue
> > \n");
> >                 enqueue(&queue_postfix,ptoken2);
> >               } // end "pop operators off stack
> >                          }  // end "operators on stack"
> >               push(ptop,ptoken);  // push new operator onto stack
> >            } // end "token is an operator"
> >
> > The second "while" is line 298. When I single-step with GDB, line 298
> > repeats
> > indefinitely. If instead of single-stepping, I just let the program run,
> > the
> > printf is never executed.
> >
> > Here is the gdb output:
> >
> > 298                 while ((op_precedences[stack_anchor->value.op_code] >
> > op_precedences[ptoken->value.op_code]) || ((op_precedences[stack_anchor-
> > >value.op_code] == op_precedences[ptoken->value.op_code]) &&
> > (op_associativity[op_precedences[stack_anchor->value.op_code]] == LEFT))) {
> > (gdb) n
> > 298                 while ((op_precedences[stack_anchor->value.op_code] >
> > op_precedences[ptoken->value.op_code]) || ((op_precedences[stack_anchor-
> > >value.op_code] == op_precedences[ptoken->value.op_code]) &&
> > (op_associativity[op_precedences[stack_anchor->value.op_code]] == LEFT))) {
> > (gdb) n
> > 298                 while ((op_precedences[stack_anchor->value.op_code] >
> > op_precedences[ptoken->value.op_code]) || ((op_precedences[stack_anchor-
> > >value.op_code] == op_precedences[ptoken->value.op_code]) &&
> > (op_associativity[op_precedences[stack_anchor->value.op_code]] == LEFT))) {
> > (gdb) n
> > 298                 while ((op_precedences[stack_anchor->value.op_code] >
> > op_precedences[ptoken->value.op_code]) || ((op_precedences[stack_anchor-
> > >value.op_code] == op_precedences[ptoken->value.op_code]) &&
> > (op_associativity[op_precedences[stack_anchor->value.op_code]] == LEFT))) {
> > (gdb) n
> > 298                 while ((op_precedences[stack_anchor->value.op_code] >
> > op_precedences[ptoken->value.op_code]) || ((op_precedences[stack_anchor-
> > >value.op_code] == op_precedences[ptoken->value.op_code]) &&
> > (op_associativity[op_precedences[stack_anchor->value.op_code]] == LEFT))) {
> > (gdb) n
> > 298                 while ((op_precedences[stack_anchor->value.op_code] >
> > op_precedences[ptoken->value.op_code]) || ((op_precedences[stack_anchor-
> > >value.op_code] == op_precedences[ptoken->value.op_code]) &&
> > (op_associativity[op_precedences[stack_anchor->value.op_code]] == LEFT))) {
> >
> >
> > _______________________________________________
> > Mid-Hudson Valley Linux Users Group                  http://mhvlug.org
> > http://mhvlug.org/cgi-bin/mailman/listinfo/mhvlug
> >
> > Upcoming Meetings (6pm - 8pm)                         Vassar College
> >   Nov 7 - Typography: Physical Art to Digital Art
> >   Dec 5 - Sysadmin Panel
> >
> 


=============================================================================
michaelMuller = [email protected] | http://www.mindhog.net/~mmuller
-----------------------------------------------------------------------------
Government, like dress, is the badge of lost innocence; the palaces of kings
are built on the ruins of the bowers of paradise. - Thomas Paine
=============================================================================
_______________________________________________
Mid-Hudson Valley Linux Users Group                  http://mhvlug.org
http://mhvlug.org/cgi-bin/mailman/listinfo/mhvlug

Upcoming Meetings (6pm - 8pm)                         Vassar College
  Nov 7 - Typography: Physical Art to Digital Art
  Dec 5 - Sysadmin Panel

Reply via email to