19 std::shared_ptr<TokenStream> tokStream;
20 std::string stored_input;
23 std::shared_ptr<sammine_util::SourceInfo> source_info_;
25 [[nodiscard]]
size_t handleNumber(
size_t i,
const std::string &input);
26 size_t handleSpaces(
size_t i,
const std::string &input);
27 size_t handleID(
size_t i,
const std::string &input);
28 size_t handleInvalid(
size_t i,
const std::string &input);
29 size_t handleOperators(
size_t i,
const std::string &input);
30 size_t handleOperatorsADD(
size_t i,
const std::string &input);
31 size_t handleOperatorsSUB(
size_t i,
const std::string &input);
32 size_t handleOperatorsMUL(
size_t i,
const std::string &input);
33 size_t handleOperatorsDIV(
size_t i,
const std::string &input);
34 size_t handleOperatorsMOD(
size_t i,
const std::string &input);
35 size_t handleOperatorsAND(
size_t i,
const std::string &input);
36 size_t handleOperatorsOR(
size_t i,
const std::string &input);
37 size_t handleOperatorsXOR(
size_t i,
const std::string &input);
38 size_t handleOperatorsCompLeft(
size_t i,
const std::string &input);
39 size_t handleOperatorsCompRight(
size_t i,
const std::string &input);
40 size_t handleOperatorsEqual(
size_t i,
const std::string &input);
41 size_t handleOperatorsNot(
size_t i,
const std::string &input);
43 size_t handleUtility(
size_t i,
const std::string &input);
44 size_t handleUtilityPAREN(
size_t i,
const std::string &input);
45 size_t handleUtilityCURLY(
size_t i,
const std::string &input);
46 size_t handleUtilityCOMMENT(
size_t i,
const std::string &input);
47 size_t handleUtilityCOMMA(
size_t i,
const std::string &input);
48 size_t handleUtilitySemiColon(
size_t i,
const std::string &input);
49 size_t handleUtilityCOLON(
size_t i,
const std::string &input);
50 size_t handleUtilityBRACKET(
size_t i,
const std::string &input);
52 void updateLocation();
55 explicit Lexer(
const std::string &input);
56 Lexer(
const std::string &input, std::shared_ptr<sammine_util::SourceInfo> source_info);
57 Lexer() : location(), cursor(0), at_eof(
false) {
58 tokStream = std::make_shared<TokenStream>();
61 std::shared_ptr<Token> peek();
62 std::shared_ptr<Token> consume();
64 std::shared_ptr<TokenStream> getTokenStream()
const {
return tokStream; }
66 size_t advance(
size_t i);
68 size_t devance(
size_t i);