From f7a9103bbef39b7f6c5909d7f74fa2aea4b81fe1 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Fri, 13 Oct 2023 10:13:31 -0400 Subject: more refactoring, object organization --- libalee/parser.cpp | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) (limited to 'libalee/parser.cpp') diff --git a/libalee/parser.cpp b/libalee/parser.cpp index 2b1d8e1..da7ae0b 100644 --- a/libalee/parser.cpp +++ b/libalee/parser.cpp @@ -20,14 +20,14 @@ #include "ctype.hpp" #include "parser.hpp" +#include +#include + Error Parser::parse(State& state, const char *str) { auto addr = Dictionary::Input; - Cell len = 0; - for (auto ptr = str; *ptr; ++ptr) - ++len; - + const auto len = static_cast(std::strlen(str)); state.dict.write(addr, 0); state.dict.write(Dictionary::SourceLen, len); @@ -43,15 +43,12 @@ Error Parser::parse(State& state, const char *str) Error Parser::parseSource(State& state) { - auto word = state.dict.input(); - while (word.size() > 0) { - if (auto ret = parseWord(state, word); ret != Error::none) - return ret; + auto err = Error::none; - word = state.dict.input(); - } + while (err == Error::none && state.dict.hasInput()) + err = parseWord(state, state.dict.input()); - return Error::none; + return err; } Error Parser::parseWord(State& state, Word word) -- cgit v1.2.3