diff --git a/src/parser.cpp b/src/parser.cpp index 7b44223..c0773de 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -122,6 +122,8 @@ ParseReturn parse_instruction(vector tokens) { if (tokens.back().type != TokenType::Semicolon) throw ParseException(); + tokens.pop_back(); + return { .node=ret.node, .tokens=tokens @@ -135,6 +137,8 @@ ParseReturn parse_instruction(vector tokens) { if (tokens.size() < 1 || tokens.back().type != TokenType::Semicolon) throw ParseException(); + tokens.pop_back(); + return { .node=ret.node, .tokens=tokens @@ -187,7 +191,14 @@ ParseReturn parse_statement(vector tokens) { tokens = ret.tokens; Node expr = ret.node; - ret = parse_instruction(tokens); // Instruction1 + try { + ret = parse_instruction(tokens); // Instruction1 + } catch (const ParseException& pex) { + throw SyntaxError( + "Invalid Syntax", + pos=tokens.back().pos + ); + } if (holds_alternative(ret.node) && ( get(ret.node).type == NodeType::AssignedDeclaration ||