GET THE INFIX EXPRESSION IN A BUFFER
INITIALIZE PRINT QUEUE
INITIALIZE OPERATOR STACK
WHILE BUFFER IS NOT EMPTY
READ A TOKEN FROM THE BUFFER
IF TOKEN IS OPERAND
ENQUEUE THE TOKEN IN PRINT QUEUE
ELSE IF TOKEN IS A OPERATOR
IF OPERATOR STACK IS EMPTY
PUSH THE TOKEN IN THE OPERATOR STACK
ELSE
IF THE TOS (OPERATOR STACK) IS HIGHER PRIORITY OPERATOR THAN TOKEN
ENQUEUE ( POP FROM OPERATOR STACK) INTO PRINT QUEUE
PUSH THE TOKEN IN THE OPERATOR STACK
ELSE
PUSH THE TOKEN IN THE OPERATOR STACK
END IF
END IF
ELSE IF TOKEN IS "("
PUSH THE TOKEN IN THE OPERATOR STACK
ELSE IF TOKEN IS ")"
IF OPERATOR STACK IS EMPTY
INFIX EXPRESSION IS NOT VALID
ELSE
WHILE TOS (OPERATOR STACK) IS NOT "(" AND OPERATOR STACK NOT EMPTY
ENQUEUE ( POP FROM OPERATOR STACK) INTO PRINT QUEUE
END WHILE
IF OPERATOR STACK EMPTY
INFIX EXPRESSION IS NOT VALID
ELSE
POP FROM OPERATOR STACK /* POP "(" */
END IF
END IF
END IF
END WHILE
WHILE OPERATOR STACK IS NOT EMPTY
ENQUEUE ( POP FROM OPERATOR STACK) INTO PRINT QUEUE
END WHILE
Sunday, January 26, 2014
INFIX TO POSTFIX
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment