944,114 Members | Top Members by Rank

Ad:
  • Assembly Discussion Thread
  • Unsolved
  • Views: 5878
  • Assembly RSS
Sep 4th, 2005
0

Please AnyBody Can Help Me To Build Assembly Code Infix To Postfix It So Hard T_T

Expand Post »
/*
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 */
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
hesheit is offline Offline
1 posts
since Sep 2005

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in Assembly Forum Timeline: Help for quicksort in assembly 8085
Next Thread in Assembly Forum Timeline: divide overflow???





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC