Wildmeshing Toolkit
Loading...
Searching...
No Matches
Parser.hpp
1#pragma once
2
3#include "Expression.hpp"
4
5namespace wmtk::components::image_simulation::expression_parser {
6
7class Parser
8{
9public:
16 explicit Parser(const std::string& input, const std::map<std::string, int64_t>& tag_name_to_id)
17 : m_input(input)
18 , m_tag_name_to_id(tag_name_to_id)
19 {}
20
26 ExpressionPtr parse();
27
33 ExpressionPtr parseOr();
34
40 ExpressionPtr parseAnd();
41
47 ExpressionPtr parseUnary();
48
54 ExpressionPtr parsePrimary();
55
61 std::string parseIdentifier();
62
71 bool match(char c);
72
76 void skipWhitespace();
77
78private:
79 std::string m_input; // The input string to parse.
80 size_t m_pos = 0; // Current position in the input string.
81
82 std::map<std::string, int64_t> m_tag_name_to_id;
83};
84
92ExpressionPtr parse(const std::string& input, const std::map<std::string, int64_t>& tag_name_to_id);
93
94} // namespace wmtk::components::image_simulation::expression_parser
ExpressionPtr parseUnary()
Parses a unary expression (e.g., logical NOT).
Definition Parser.cpp:54
ExpressionPtr parse()
Parses the input string into a boolean expression tree.
Definition Parser.cpp:5
bool match(char c)
Checks if the current character matches a given character, advancing the internal pointer if it does.
Definition Parser.cpp:122
ExpressionPtr parsePrimary()
Parses a primary expression (variables, parenthesized expressions).
Definition Parser.cpp:65
std::string parseIdentifier()
Parses an identifier from the input string.
Definition Parser.cpp:103
ExpressionPtr parseAnd()
Parses a logical AND expression.
Definition Parser.cpp:36
void skipWhitespace()
Skips whitespaces in the input string.
Definition Parser.cpp:132
Parser(const std::string &input, const std::map< std::string, int64_t > &tag_name_to_id)
Constructs a new Parser object.
Definition Parser.hpp:16
ExpressionPtr parseOr()
Parses a logical OR expression.
Definition Parser.cpp:18