API reference

NumExpr.ExprNodeType
ExprNode

Represents a transitional nested obejct obtained after parsing by parse_expr function. Used by eval_expr function for evaluations an expression.

Fields

  • head::AbstractExpr: Leading variable or operation of current expression layer.
  • args::Vector{Union{AbstractExpr,ExprNode}}: Elements of current expression node such as variables or another operations.
source
NumExpr.VariableType
Variable{S<:AbstractScope}

Represents custom user defined variable in expression after parsing. Type S must be one of LocalScope or GlobalScope.

Note

Full name of the variable can be obtain by empty operator of getting index e.g []. It may be usefull in some function overloadings.

For more information see section Variables.

Fields

  • val::String: Full name of the variable including its tags.
  • name::String: The variable name without tags
  • tags::Dict{String,String}: Tags of the variable.

Examples

julia> const vars = Dict{String,Float64}(
           "var"              => 1,
           "var{tag='value'}" => 2,
       );

julia> NumExpr.eval_expr(var::NumExpr.Variable) = get(vars, var[], NaN)

julia> var = parse_expr("var{tag='value'}")
var{tag='value'}

julia> typeof(var)
NumExpr.Variable{NumExpr.LocalScope}

julia> var_name(var)
"var"

julia> var_tags(var)
Dict{String, String} with 1 entry:
  "tag" => "value"

julia> var[]
"var{tag='value'}"
source
NumExpr.parse_exprFunction
parse_expr(str::AbstractString) -> ExprNode

Parse the string expression x and turn it into nested ExprNode that can be evaluated by eval_expr.

For more information see syntax guide.

Examples

julia> colors = Dict{String,UInt32}(
           "color[name='red']"   => 0xff0000,
           "color[name='green']" => 0x00ff00,
           "color[name='blue']"  => 0x0000ff,
       );

julia> NumExpr.eval_expr(var::NumExpr.Variable) = get(colors, var[], NaN)

julia> expr = parse_expr("color[name='red'] + color[name='blue']")
NumExpr.ExprNode(
    +,
    Union{NumExpr.AbstractExpr, NumExpr.ExprNode}[
        color[name='red'],
        color[name='blue'],
    ],
)
source
NumExpr.eval_exprMethod
eval_expr(expr::ExprNode)

Evaluate the expression object expr obtained after parsing by the function parse_expr.

For more information see syntax guide.

Examples

julia> expr = parse_expr("1 + 2^3 + 4");

julia> eval_expr(expr)
13.0

julia> expr = parse_expr("sin(10)^2 + cos(10)^2");

julia> eval_expr(expr)
1.0

julia> expr = parse_expr("'a' * 'b'");

julia> eval_expr(expr)
"ab"
source
NumExpr.eval_exprMethod
eval_expr(x::Variable)

This function defines the behavior when evaluating the values of variables in a parsed expression.

Note

Initially, this function simply returns the value x, but can be overloaded to define new behavior for retrieving variable data from a new source.

For more information see variables.

Examples

julia> colors = Dict{String,UInt32}(
           "color[name='red']"   => 0xff0000,
           "color[name='green']" => 0x00ff00,
           "color[name='blue']"  => 0x0000ff,
       );

julia> NumExpr.eval_expr(var::NumExpr.Variable) = get(colors, var[], NaN)

julia> expr = parse_expr("color[name='red'] + color[name='blue']");

julia> eval_expr(expr)
0x00ff00ff
source