Public Function InfixToPrefix( _ ByVal vExpr As Variant _ ) As Variant
? InfixToPrefix("34 + 45 * 91") +(34,*(45,91)) ? InfixToPrefix("2 ^ 3 ^ 4 + 5") +(^(2,^(3,4)),5) ? InfixToPrefix("A * ( B + C ) + D") +(*(A,+(B,C)),D) ? InfixToPrefix("+ A") ' #4 Error: Expected two operands. ? InfixToPrefix("A / B ^ C + D * E - A * C") -(+(/(A,^(B,C)),*(D,E)),*(A,C)) ? InfixToPrefix("A + B") +(A,B) ? InfixToPrefix("A + 0 - B") -(+(A,0),B) ? InfixToPrefix("A * % ( D + C )") ' #8 Error: Expected two operands. ? InfixToPrefix("A + B * % G * H") ' #9 Error: Expected two operands. ? InfixToPrefix("% ( D + F ) * 2") ' #10 Error: Expected two operands.See also:
InfixToPostfix Function InfixToBasic Function InfixToPostfixInComingPriority FunctionNote: This function recognizes the following operators and functions (listed from highest precedence to lowest):
ABS, ASIN, ATAN, COS, LN, SIGN, SIN, SQRT, TAN ^ *, / \, MOD +, - (The functions at the top of this list have the highest precedence and the open parentheses character has the lowest precedence (and functions/operators on the same line have the same precedence). This function assumes that all other alphanumeric words represent variables or numeric constants.
vExpr: String containing the infix-format algebraic expression which will be converted to Prefix. Function returns Null if vExpr is Null or cannot be fixed up to a String.
Note: Function will return an error in the form of a string like "Error: Expected one operand." if the algebraic (infix) expression is ill-formed (as in examples #4, 8, 9, and 10). The possible errors include:
Error: Expected one operand. (Function has encountered a function call so it needs an operand but the operand stack is empty.)
Error: Expected two operands. (Function has encountered a binary operator so it needs two operands but the operand stack has less than two operands.)
Error: Expected end of expression. (Function has encountered the end of the input expression but there are still operands on the stack.)
Copyright 1996-1999 Entisoft
Entisoft Tools is a trademark of Entisoft.