fix: Don't compare the consumed string's length for every iteration.

Closes #3.
This commit is contained in:
James Harton 2021-01-27 10:19:21 +13:00
parent 5075c958c8
commit 1178ee3ee6

View file

@ -60,12 +60,9 @@ defmodule LexLuthor.Runner do
line: line,
column: column})
# Are we at the end of the string?
if String.length(string) == len do
{ :ok, Enum.reverse lexer.tokens }
else
{ _ , new_string } = String.split_at string, len
do_lex module, rules, new_string, lexer
case String.split_at(string, len) do
{_, ""} -> {:ok, Enum.reverse(lexer.tokens)}
{_, new_string} -> do_lex(module, rules, new_string, lexer)
end
end
end