   defp ascii_continue?(entry), do: entry in ?0..?9
 
   range = rangify.(unicode_upper)
+
   for {first, last} <- range do
     if first == last do
       defp unicode_upper?(unquote(first)), do: true

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

  range = rangify.(unicode_start)
  for {first, last} <- range do
    if first == last do
      defp unicode_start?(unquote(first)), do: true

      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
