from typing import Callable
|
|
from numint.expression import Lark_StandAlone
|
from numint.expression_transformer import ExpressionTransformer
|
import math
|
|
def parse_function(expr: str) -> Callable[[float], float]:
|
"""
|
|
:param expr: ein gültiger python (arithmetischer) Ausdruck. Die Funktionen aus
|
math-Module (etwa sin, cos, sqrt, tan, atan) sowie Konstanten wie 'e' (entspricht math.e),
|
'pi' (entspricht math.pi) sind erlaubt
|
:return:
|
"""
|
parser = Lark_StandAlone(transformer=ExpressionTransformer())
|
parsed_expr = parser.parse(expr)
|
return lambda arg: eval(parsed_expr, {'x': float(arg), 'math': math})
|
|
def parse_value(expr:str) -> float:
|
"""
|
|
:param expr:
|
:return:
|
"""
|
parser = Lark_StandAlone(transformer=ExpressionTransformer())
|
parsed_expr = parser.parse(expr)
|
return eval(parsed_expr, {'math':math})
|