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
