diff --git a/src/parser.cpp b/src/parser.cpp index 925bfdd..8bd3218 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -34,7 +34,6 @@ void _debug_print_tree(const Node& node, int depth, const string& prefix = "") { Node parse(vector tokens) { reverse(tokens.begin(), tokens.end()); - tokens.pop_back(); // Remove the last ';' if (tokens.size() == 0) throw ParseException(); @@ -50,11 +49,14 @@ Node parse(vector tokens) { ParseReturn ret = parse_instruction(tokens); tokens = ret.tokens; - InnerNode new_node = { - .type=NodeType::Prog, - .children={node, ret.node} - }; - node = new_node; + if (get(ret.node).type != NodeType::Epsilon) { + InnerNode new_node = { + .type=NodeType::Prog, + .children={node, ret.node} + }; + node = new_node; + } + } return node;