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.