20 using const_iterator =
typename std::string_view::const_iterator;
28 std::optional<const_iterator> text_segment_start;
44 [[nodiscard]]
char const &operator*() const noexcept
49 [[nodiscard]]
bool atEOF() const noexcept
54 skeleton_parse_context &operator++() noexcept
62 skeleton_parse_context &operator+=(ssize_t x)
noexcept
64 for (ssize_t i = 0; i != x; ++i) {
70 bool starts_with(std::string_view text)
const noexcept
72 return std::string_view{index, last}.starts_with(text);
75 bool starts_with_and_advance_over(std::string_view text)
noexcept
77 if (starts_with(text)) {
85 bool advance_to(std::string_view text)
noexcept
88 if (starts_with(text)) {
96 bool advance_over(std::string_view text)
noexcept
98 if (advance_to(text)) {
110 template<
typename T,
typename... Args>
111 void push(Args &&...args)
113 statement_stack.
push_back(std::make_unique<T>(std::forward<Args>(args)...));
118 template<
typename T,
typename... Args>
119 [[nodiscard]]
bool append(Args &&...args)
noexcept
121 if (statement_stack.
size() > 0) {
122 return append(std::make_unique<T>(std::forward<Args>(args)...));
132 [[nodiscard]]
bool pop() noexcept;
134 void start_of_text_segment(
int back_track = 0) noexcept;
135 void end_of_text_segment();
137 [[nodiscard]]
bool top_statement_is_do() const noexcept;
formula_post_process_context post_process_context
Post process context is used to record functions that are defined in the template being parsed.
Definition skeleton_parse_context.hpp:33