mirror of
https://github.com/ukui/apt.git
synced 2026-03-09 09:35:45 -07:00
patterns: Provide Node constructor, simplify error throwing
By having a node constructor, we can construct a node inline for error reporting needs, simplifying the code a bit.
This commit is contained in:
@@ -33,13 +33,7 @@ std::unique_ptr<PatternTreeParser::Node> PatternTreeParser::parseTop()
|
||||
skipSpace();
|
||||
|
||||
if (node->end != sentence.size())
|
||||
{
|
||||
Node node2;
|
||||
|
||||
node2.start = node->end;
|
||||
node2.end = sentence.size();
|
||||
throw Error{node2, "Expected end of file"};
|
||||
}
|
||||
throw Error{Node{node->end, sentence.size()}, "Expected end of file"};
|
||||
|
||||
return node;
|
||||
}
|
||||
@@ -55,9 +49,8 @@ std::unique_ptr<PatternTreeParser::Node> PatternTreeParser::parse()
|
||||
if ((node = parseWord()) != nullptr)
|
||||
return node;
|
||||
|
||||
Node eNode;
|
||||
eNode.end = eNode.start = state.offset;
|
||||
throw Error{eNode, "Expected pattern, quoted word, or word"};
|
||||
throw Error{Node{state.offset, sentence.size()},
|
||||
"Expected pattern, quoted word, or word"};
|
||||
}
|
||||
|
||||
// Parse a list pattern (or function call pattern)
|
||||
|
||||
@@ -39,6 +39,8 @@ struct PatternTreeParser
|
||||
size_t start = 0;
|
||||
size_t end = 0;
|
||||
|
||||
explicit Node(size_t start = 0, size_t end = 0) : start(start), end(end) {}
|
||||
|
||||
virtual std::ostream &render(std::ostream &os) { return os; };
|
||||
std::nullptr_t error(std::string message);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user