From 80649d77ae0fc2c3dfd4cd3aee20e8a254de8a3f Mon Sep 17 00:00:00 2001 From: Maxwell Jeffress Date: Sat, 1 Aug 2026 08:13:47 +1000 Subject: [PATCH] Fix stuff --- src/lexer/lexer.cpp | 2 +- src/main.cpp | 17 +++++++++++++---- src/parser/parser.cpp | 1 - 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/lexer/lexer.cpp b/src/lexer/lexer.cpp index b9c23f8..9646062 100644 --- a/src/lexer/lexer.cpp +++ b/src/lexer/lexer.cpp @@ -90,7 +90,7 @@ namespace Solstice { return input[current + ahead]; } std::optional Lexer::consume() { - if (current + 1 >= input.size()) { + if (current >= input.size()) { return {}; } return input[current++]; diff --git a/src/main.cpp b/src/main.cpp index 9142062..19e06b5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,10 +1,19 @@ #include "lexer/lexer.hpp" #include "parser/parser.hpp" +#include +#include int main() { - Solstice::Lexer lexer{"2 + 2"}; - auto lexed = lexer.lex(); + try { + Solstice::Lexer lexer{"2 + 2"}; + auto lexed = lexer.lex(); - Solstice::Parser parser{lexed}; - auto parsed = parser.parse(); + Solstice::Parser parser{lexed}; + auto parsed = parser.parse(); + + } catch (const std::runtime_error& e) { + std::cout << e.what() << std::endl; + return 1; + } + return 0; } diff --git a/src/parser/parser.cpp b/src/parser/parser.cpp index e79835c..d6a83ac 100644 --- a/src/parser/parser.cpp +++ b/src/parser/parser.cpp @@ -45,7 +45,6 @@ namespace Solstice { if (!left.has_value()) { throw std::runtime_error("Expecting expression on left of '+'"); } - consume(); // be rid of the + Precedence precedence = getTokenPrecedence(Token(type)); auto right = parseOneNode(precedence); if (!right.has_value()) {