       defp unicode_start?(entry) when entry in unquote(first)..unquote(last), do: true
     end
   end
+
   defp unicode_start?(_), do: false
 
   unless {13312, 19893} in range do

      defp unicode_continue?(entry) when entry in unquote(first)..unquote(last), do: true
    end
  end
  defp unicode_continue?(_), do: false

  # Pattern is used as a performance check since most

      defp ascii_pattern?(entry) when entry in unquote(first)..unquote(last), do: true
    end
  end

  defp ascii_pattern?(_), do: false

  def tokenize([head | tail]) do
    cond do
      ascii_upper?(head) ->
        validate(continue(tail, [head], 1, true, []), :alias)

      ascii_start?(head) ->
        validate(continue(tail, [head], 1, true, []), :identifier)

      unicode_upper?(head) ->
        validate(continue(tail, [head], 1, false, []), :atom)

      unicode_start?(head) ->
        validate(continue(tail, [head], 1, false, []), :identifier)

      true ->
        {:error, :empty}
    end
  end

  def tokenize([]) do
    {:error, :empty}
  end
