Hong-Phuc Bui
2024-09-27 45c96fe258657363ef4ad1a2ae93513ca4139e26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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})