-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.