Current section

Files

Jump to
caffeine_lang src caffeine_lang@cql@resolver.erl
Raw

src/caffeine_lang@cql@resolver.erl

-module(caffeine_lang@cql@resolver).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/cql/resolver.gleam").
-export([resolve_primitives/1]).
-export_type([primitives/0]).
-type primitives() :: {good_over_total,
caffeine_lang@cql@parser:exp(),
caffeine_lang@cql@parser:exp()}.
-file("src/caffeine_lang/cql/resolver.gleam", 18).
-spec find_division_in_exp(caffeine_lang@cql@parser:exp()) -> {ok, primitives()} |
{error, binary()}.
find_division_in_exp(Exp) ->
case Exp of
{operator_expr, Left, {operator_expr, Num, Denom, 'div'}, _} ->
{ok, {good_over_total, {operator_expr, Left, Num, add}, Denom}};
{operator_expr, Left@1, Right, 'div'} ->
{ok, {good_over_total, Left@1, Right}};
_ ->
{error, <<"Invalid expression"/utf8>>}
end.
-file("src/caffeine_lang/cql/resolver.gleam", 10).
-spec resolve_primitives(caffeine_lang@cql@parser:exp_container()) -> {ok,
primitives()} |
{error, binary()}.
resolve_primitives(Exp_container) ->
case Exp_container of
{exp_container, Exp} ->
find_division_in_exp(Exp)
end.