51 void process(
const std::string& filename,
const std::string& code);
57 [[nodiscard]]
const Node& ast()
const noexcept;
63 [[nodiscard]]
const std::vector<Import>& imports()
const;
75 [[nodiscard]] std::optional<Node>& positioned(std::optional<Node>& node,
FilePosition cursor)
const;
77 std::optional<Node> node();
86 std::optional<Node> macroCondition(
FilePosition filepos);
103 std::optional<Node> atom();
110 std::optional<Node> anyAtomOf(std::initializer_list<NodeType> types);
116 std::optional<Node> nodeOrValue();
124 std::optional<Node> wrapped(std::optional<Node> (
Parser::*parser)(
FilePosition),
const std::string& name);