Current section

Files

Jump to
expression lib operator_helpers.ex
Raw

lib/operator_helpers.ex

defmodule Expression.OperatorHelpers do
@moduledoc false
import NimbleParsec
def plus(combinator \\ empty()), do: combinator |> ascii_char([?+]) |> replace(:+) |> label("+")
def minus(combinator \\ empty()),
do: combinator |> ascii_char([?-]) |> replace(:-) |> label("-")
def times(combinator \\ empty()),
do: combinator |> ascii_char([?*]) |> replace(:*) |> label("*")
def divide(combinator \\ empty()),
do: combinator |> ascii_char([?/]) |> replace(:/) |> label("/")
def concatenate(combinator \\ empty()),
do: combinator |> ascii_char([?&]) |> replace(:&) |> label("&")
def exponent(combinator \\ empty()),
do: combinator |> ascii_char([?^]) |> replace(:^) |> label("^")
def gte(combinator \\ empty()), do: combinator |> string(">=") |> replace(:>=) |> label(">=")
def lte(combinator \\ empty()), do: combinator |> string("<=") |> replace(:<=) |> label("<=")
def neq(combinator \\ empty()),
do: combinator |> choice([string("!="), string("<>")]) |> replace(:!=) |> label("!=")
def eq(combinator \\ empty()),
do: combinator |> choice([string("=="), string("=")]) |> replace(:==) |> label("==")
def gt(combinator \\ empty()), do: combinator |> ascii_char([?>]) |> replace(:>) |> label(">")
def lt(combinator \\ empty()), do: combinator |> ascii_char([?<]) |> replace(:<) |> label("<")
end