![]() |
| ||
| Please AnyBody Can Help Me To Build Assembly Code Infix To Postfix It So Hard T_T /* INTOPOST.C Rex Jaechke, "C Users Journal" mach 92. */ #include <ctype.h> void push(int); int pop(void); /*-------------------------------------------------------------------------- FUNCTION: intopost - converts infix to postfix A. Push a ( on the stack. This sentinel allows us to detect when we have flushed out the stack on completion in step 1. --- Perform steps B through H for each character in the infix string --- B. Ignore white space. C. Pass alphabetic characters through to postfix list. D. Push any ( on the stack. These sentinels allows us to detect when have flushed out the stack when handling ) and operators. E. Have a ) so pop off the stack and put into postfix list until a ( is popped. Discard the (. F Have a * or /. Pop off any operators of equal or higher precedence and put them into postfix list. If a ( or lower precedence operator (such as + or -) is popped, put it back and stop looking. Push new * or /. G. Have a + or -. Pop off any operators of equal or higher precedence (that includes all of them) and put them into postfix list. If a ( is popped, put it back and stop looking. Push new + or -. H. Report unknown character on input. -------- I. Have processed all input characters. New flush stack until we find the matchint ( put there in step A. J. Terminate the postfix list. --------------------------------------------------------------------------*/ void intopost(const char *infix, char *postfix) { int st; /*A*/ push('('); while (*infix != '\0') { #ifdef TRACE printf("*infix: %c\n", *infix); #endif /*B*/ if (isspace(*infix)) { ; } /*C*/ else if (isalpha(*infix)) { *postfix++ = *infix; } /*D*/ else if (*infix == '(') { push('('); } /*E*/ else if (*infix == ')') { while ((st = pop()) != '(') *postfix++ = st; } /*F*/ else if (*infix == '*' || *infix == '/') { while (1) { if ((st = pop()) == '(' || st == '+' || st == '-') { push(st); break; } *postfix++ = st; } push(*infix); } /*G*/ else if (*infix == '+' || *infix == '-') { while (1) { if ((st = pop()) == '(') { push(st); break; } *postfix++ = st; } push(*infix); } /*H*/ else { printf("Unknown input character %c\n", *infix); } ++infix; continue; } /*I*/ while ((st = pop()) != '(') *postfix++ = st; /*J*/ *postfix = '\0'; } I Can Write In C Language But Cannot In Assembly SomeOne Can Try Please Do it /* Fil Slut : INTOPOST.C */ |
| All times are GMT -4. The time now is 2:46 am. |
Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC