Packages
A SQL92 predicate expression evaluator in Erlang
Retired package: Release invalid - contains and invalid dependency
Current section
Files
Jump to
Current section
Files
src/evaluator.hrl
-type pattern() :: { pattern, expression() }.
-type escape() :: { escape, expression() }.
-type comparison_operator() :: eq | neq | gt | gte | lt | lte.
-type not_predicate() :: { not_op, predicate() }.
-type is_null_predicate() :: { is_null, property_expression() }.
-type is_not_null_predicate() :: { is_not_null, property_expression() }.
-type exist_predicate() :: { exist, property_expression() }.
-type comparison_predicate() :: { comparison_operator(), expression(), expression() }.
-type and_predicate() :: { and_op, predicate(), predicate() }.
-type or_predicate() :: { or_op, predicate(), predicate() }.
-type in_predicate() :: { in, expression(), expression() }.
-type not_in_predicate() :: { not_in, expression(), expression() }.
-type like_predicate() :: { like, expression(), pattern() }.
-type not_like_predicate() :: { not_like, expression(), pattern() }.
-type like_escape_predicate() :: { like, expression(), pattern(), escape() }.
-type not_like_escape_predicate() :: { not_like, expression(), pattern(), escape() }.
-type unary_predicate() :: not_predicate() | is_null_predicate() | is_not_null_predicate() | exist_predicate().
-type binary_predicate() :: comparison_predicate() | and_predicate() | or_predicate() | in_predicate() | not_in_predicate() | like_predicate() | not_like_predicate().
-type ternary_predicate() :: like_escape_predicate() | not_like_escape_predicate().
-type predicate() :: unary_predicate() | binary_predicate() | ternary_predicate().
-type properties() :: any().
-type symbol() :: string().
-type constant_type() :: integer_constant | decimal_constant | approximate_number_constant | boolean_constant | string_constant.
-type arithmetic_operation() :: plus | minus | multiply | divide | percent.
-type sign_symbol() :: plus | minus.
-type property_expression() :: { property, symbol() }.
-type constant_expression() :: { constant_type(), symbol() }.
-type literal_expression() :: property_expression() | constant_expression().
-type unary_expression() :: { sign_symbol(), expression() }.
-type binary_expression() :: { arithmetic_operation(), expression(), expression() }.
-type expression() :: literal_expression() | unary_expression() | binary_expression().
-type value() :: number() | string().
-spec evaluator:make_expression_evaluator(expression()) -> expression_evaluator().
-type expression_evaluator() :: fun((properties()) -> value()).
-spec evaluator:make_integer_evaluator(string()) -> expression_evaluator().
-spec evaluator:make_decimal_evaluator(string()) -> expression_evaluator().
-spec evaluator:make_boolean_evaluator(string()) -> expression_evaluator().
-spec evaluator:make_string_evaluator(string()) -> expression_evaluator().
-spec evaluator:make_property_evaluator(string()) -> expression_evaluator().
-spec evaluator:make_negation_evaluator(expression_evaluator()) -> expression_evaluator().
-spec evaluator:make_addition_evaluator(expression_evaluator(), expression_evaluator()) -> expression_evaluator().
-spec evaluator:make_subtraction_evaluator(expression_evaluator(), expression_evaluator()) -> expression_evaluator().
-spec evaluator:make_predicate_evaluator(predicate()) -> predicate_evaluator().
-type predicate_evaluator() :: fun((properties()) -> true | false) |
fun((predicate_evaluator()) -> predicate_evaluator()) |
fun((predicate_evaluator(), predicate_evaluator()) -> predicate_evaluator()) |
fun((expression_evaluator(), expression_evaluator()) -> predicate_evaluator()).
-spec evaluator:make_not_evaluator(predicate_evaluator()) -> predicate_evaluator().
-spec evaluator:make_and_evaluator(predicate_evaluator(), predicate_evaluator()) -> predicate_evaluator().
-spec evaluator:make_equal_evaluator(expression_evaluator(), expression_evaluator()) -> predicate_evaluator().
-spec evaluator:make_greater_than_evaluator(expression_evaluator(), expression_evaluator()) -> predicate_evaluator().