Packages

A library for parsing a simple query language into an abstract syntax tree.

Current section

Files

Jump to
dreaeql lib operators.ex
Raw

lib/operators.ex

defmodule DreaeQL.Operators do
defmacro binary_operator(name) do
quote do
defmodule DreaeQL.Operators.unquote(name) do
defstruct [:left_side, :right_side, operator: :binary]
end
end
end
defmacro unary_operator(name) do
quote do
defmodule DreaeQL.Operators.unquote(name) do
defstruct [:expr, operator: :unary]
end
end
end
defmacro __using__(_params) do
quote do
alias DreaeQL.Operators
Operators.binary_operator And
Operators.binary_operator Or
Operators.binary_operator NotEquals
Operators.binary_operator Equals
Operators.binary_operator GreaterThan
Operators.binary_operator LessThan
Operators.binary_operator GreaterThanEquals
Operators.binary_operator LessThanEquals
Operators.unary_operator Not
end
end
end