Beispiel #1
0
factor = Forward()
factor << (atom | expr)

term = (factor | expr) + ZeroOrMore(multop + expr)
addterm = (term | expr) + ZeroOrMore(addop + expr)
expr << ((lpar + expr + rpar) | addterm)
bnf = expr

pattern = bnf + StringEnd()

# map operator symbols to corresponding arithmetic operations
opn = {
    "+": (lambda a, b: numpy.add(a, b)),
    "-": (lambda a, b: numpy.subtract(a, b)),
    "*": (lambda a, b: numpy.multiply(a, b)),
    "/": (lambda a, b: MathOperations.divisionLim(a, b)),
    "^": (lambda a, b: numpy.power(a, b)),
    "<": (lambda a, b: numpy.less(a, b)),
    ">": (lambda a, b: numpy.greater(a, b)),
    "=": (lambda a, b: numpy.equal(a, b)),
    "!=": (lambda a, b: numpy.not_equal(a, b)),
    "<=": (lambda a, b: numpy.less_equal(a, b)),
    ">=": (lambda a, b: numpy.greater_equal(a, b)),
}

func = {
    "sin": numpy.sin,
    "asin": numpy.arcsin,
    "cos": numpy.cos,
    "abs": numpy.abs,
    "acos": numpy.arccos,
Beispiel #2
0
factor = Forward()
factor << (atom | expr)

term =  (factor | expr) + ZeroOrMore( multop + expr )
addterm = (term | expr) + ZeroOrMore(  addop + expr )
expr << ((lpar + expr + rpar) | addterm)
bnf = expr

pattern =  bnf + StringEnd()

# map operator symbols to corresponding arithmetic operations
opn = { "+" : ( lambda a,b: numpy.add( a, b ) ),
        "-" : ( lambda a,b: numpy.subtract( a, b ) ),
        "*" : ( lambda a,b: numpy.multiply( a, b ) ),
        "/" : ( lambda a,b: MathOperations.divisionLim( a, b ) ),
        "^" : ( lambda a,b: numpy.power( a, b) ),
        "<" : ( lambda a,b: numpy.less( a, b) ),
        ">" : ( lambda a,b: numpy.greater( a, b) ),
        "=" : ( lambda a,b: numpy.equal( a, b) ),
        "!=" : ( lambda a,b: numpy.not_equal( a, b) ),
        "<=" : ( lambda a,b: numpy.less_equal( a, b) ),
        ">=" : ( lambda a,b: numpy.greater_equal( a, b) )
      }

func = { "sin": numpy.sin,
         "asin": numpy.arcsin,
         "cos": numpy.cos,
         "abs": numpy.abs,
         "acos": numpy.arccos,
         "tan": numpy.tan,