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.