ecoli_node_expr - Man Page

Name

ecoli_node_expr — Expression node

— A node for parsing and evaluating expressions with operators.  

Synopsis

Data Structures

struct ec_node_expr_eval_ops

Typedefs

typedef int(* ec_node_expr_eval_var_t) (void **result, void *userctx, const struct ec_pnode *var)
typedef int(* ec_node_expr_eval_pre_op_t) (void **result, void *userctx, void *operand, const struct ec_pnode *operator)
typedef int(* ec_node_expr_eval_post_op_t) (void **result, void *userctx, void *operand, const struct ec_pnode *operator)
typedef int(* ec_node_expr_eval_bin_op_t) (void **result, void *userctx, void *operand1, const struct ec_pnode *operator, void *operand2)
typedef int(* ec_node_expr_eval_parenthesis_t) (void **result, void *userctx, const struct ec_pnode *open_paren, const struct ec_pnode *close_paren, void *value)
typedef void(* ec_node_expr_eval_free_t) (void *result, void *userctx)

Functions

struct ec_node * ec_node_expr (const char *id)
int ec_node_expr_set_val_node (struct ec_node *gen_node, struct ec_node *val_node)
int ec_node_expr_add_bin_op (struct ec_node *gen_node, struct ec_node *op)
int ec_node_expr_add_pre_op (struct ec_node *gen_node, struct ec_node *op)
int ec_node_expr_add_post_op (struct ec_node *gen_node, struct ec_node *op)
int ec_node_expr_add_parenthesis (struct ec_node *gen_node, struct ec_node *open, struct ec_node *close)
int ec_node_expr_eval (void **result, const struct ec_node *node, struct ec_pnode *parse, const struct ec_node_expr_eval_ops *ops, void *userctx)

Detailed Description

A node for parsing and evaluating expressions with operators.

Configuration Schema

No configuration schema.

Typedef Documentation

typedef int(* ec_node_expr_eval_var_t) (void **result, void *userctx, const struct ec_pnode *var)

Callback function type for evaluating a variable

Parameters

result On success, this pointer must be set by the user to point to a user structure describing the evaluated result.
userctx A user-defined context passed to all callback functions, which can be used to maintain a state or store global information.
var The parse result referencing the variable.

Returns

0 on success (*result must be set), or -errno on error (*result is undefined).

Definition at line 32 of file node_expr.h.

typedef int(* ec_node_expr_eval_pre_op_t) (void **result, void *userctx, void *operand, const struct ec_pnode *operator)

Callback function type for evaluating a prefix-operator

Parameters

result On success, this pointer must be set by the user to point to a user structure describing the evaluated result.
userctx A user-defined context passed to all callback functions, which can be used to maintain a state or store global information.
operand The evaluated expression on which the operation should be applied.
operator The parse result referencing the operator.

Returns

0 on success (*result must be set, operand is freed), or -errno on error (*result is undefined, operand is not freed).

Definition at line 51 of file node_expr.h.

typedef int(* ec_node_expr_eval_post_op_t) (void **result, void *userctx, void *operand, const struct ec_pnode *operator)

Callback function type for evaluating a postfix-operator.

Same as ec_node_expr_eval_pre_op_t but for postfix operators.

Definition at line 63 of file node_expr.h.

typedef int(* ec_node_expr_eval_bin_op_t) (void **result, void *userctx, void *operand1, const struct ec_pnode *operator,void *operand2)

Callback function type for evaluating a binary operator.

Parameters

result On success, this pointer must be set by the user to point to a user structure describing the evaluated result.
userctx A user-defined context passed to all callback functions.
operand1 The evaluated left operand.
operator The parse result referencing the operator.
operand2 The evaluated right operand.

Returns

0 on success (*result must be set, operands are freed), or -errno on error (*result is undefined, operands are not freed).

Definition at line 88 of file node_expr.h.

typedef int(* ec_node_expr_eval_parenthesis_t) (void **result, void *userctx, const struct ec_pnode *open_paren, const struct ec_pnode *close_paren, void *value)

Callback function type for evaluating a parenthesized expression.

Parameters

result On success, this pointer must be set by the user to point to a user structure describing the evaluated result.
userctx A user-defined context passed to all callback functions.
open_paren The parse result referencing the opening parenthesis.
close_paren The parse result referencing the closing parenthesis.
value The evaluated expression inside the parentheses.

Returns

0 on success (*result must be set, value is freed), or -errno on error (*result is undefined, value is not freed).

Definition at line 114 of file node_expr.h.

typedef void(* ec_node_expr_eval_free_t) (void *result, void *userctx)

Callback function type for freeing an evaluated result.

Parameters

result The result to free.
userctx A user-defined context passed to all callback functions.

Definition at line 130 of file node_expr.h.

Function Documentation

struct ec_node * ec_node_expr (const char * id)

Create an expression node.

Parameters

id The node identifier.

Returns

The node, or NULL on error (errno is set).

int ec_node_expr_set_val_node (struct ec_node * gen_node, struct ec_node * val_node)

Set the value (terminal) node for an expression.

Parameters

gen_node The expression node.
val_node The node matching values. It is consumed and will be freed when the parent is freed, or immediately on error.

Returns

0 on success, -1 on error (errno is set).

int ec_node_expr_add_bin_op (struct ec_node * gen_node, struct ec_node * op)

Add a binary operator to an expression node.

Parameters

gen_node The expression node.
op The operator node. It is consumed and will be freed when the parent is freed, or immediately on error.

Returns

0 on success, -1 on error (errno is set).

int ec_node_expr_add_pre_op (struct ec_node * gen_node, struct ec_node * op)

Add a prefix operator to an expression node.

Parameters

gen_node The expression node.
op The operator node. It is consumed and will be freed when the parent is freed, or immediately on error.

Returns

0 on success, -1 on error (errno is set).

int ec_node_expr_add_post_op (struct ec_node * gen_node, struct ec_node * op)

Add a postfix operator to an expression node.

Parameters

gen_node The expression node.
op The operator node. It is consumed and will be freed when the parent is freed, or immediately on error.

Returns

0 on success, -1 on error (errno is set).

int ec_node_expr_add_parenthesis (struct ec_node * gen_node, struct ec_node * open, struct ec_node * close)

Add parentheses to an expression node.

Parameters

gen_node The expression node.
open The opening parenthesis node. It is consumed and will be freed when the parent is freed, or immediately on error.
close The closing parenthesis node. It is consumed and will be freed when the parent is freed, or immediately on error.

Returns

0 on success, -1 on error (errno is set).

int ec_node_expr_eval (void ** result, const struct ec_node * node, struct ec_pnode * parse, const struct ec_node_expr_eval_ops * ops, void * userctx)

Evaluate a parsed expression.

Parameters

result On success, this pointer will be set to the evaluated result.
node The expression node.
parse The parse tree to evaluate.
ops The evaluation callbacks.
userctx A user-defined context passed to all callbacks.

Returns

0 on success, -1 on error (errno is set).

Author

Generated automatically by Doxygen for Libecoli from the source code.

Referenced By

The man pages ec_node_expr(3), ec_node_expr_add_bin_op(3), ec_node_expr_add_parenthesis(3), ec_node_expr_add_post_op(3), ec_node_expr_add_pre_op(3), ec_node_expr_eval(3), ec_node_expr_eval_bin_op_t(3), ec_node_expr_eval_free_t(3), ec_node_expr_eval_parenthesis_t(3), ec_node_expr_eval_post_op_t(3), ec_node_expr_eval_pre_op_t(3), ec_node_expr_eval_var_t(3) and ec_node_expr_set_val_node(3) are aliases of ecoli_node_expr(3).

Version 0.11.3 Libecoli