RSS Forums RSS
Please support our Assembly advertiser: Programming Forums
Views: 4528 | Replies: 0 | Thread Tools  Display Modes
Join Date: Sep 2005
Posts: 1
Reputation: hesheit is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 0
hesheit hesheit is offline Offline
Newbie Poster

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

  #1  
Sep 4th, 2005
/*
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 */
AddThis Social Bookmark Button
Reply With Quote  

Only community members can participate in forum threads. You must register or log in to contribute.



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)

 

Thread Tools Display Modes
Forums | Blogs | Tutorials | Code Snippets | Whitepapers | RSS Feeds | Advertising
All times are GMT -4. The time now is 6:15 am.
Newsletter Archive - Sitemap - Privacy Statement - Acceptable Use Policy - Contact Us
Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC