should work
[c11concurrency-benchmarks.git] / mabain / binaries / expr_parser.h
1 /**
2  * Copyright (C) 2017 Cisco Inc.
3  *
4  * This program is free software: you can redistribute it and/or  modify
5  * it under the terms of the GNU General Public License, version 2,
6  * as published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15  */
16
17 // @author Changxue Deng <chadeng@cisco.com>
18
19 #ifndef __EXPR_PARSER_H__
20 #define __EXPR_PARSER_H__
21
22 #include <string>
23
24 // A simple mabain client expression LL parser
25 class ExprParser
26 {
27 public:
28     ExprParser(const std::string &expr);
29     ~ExprParser();
30     int Evaluate(std::string &result);
31
32 private:
33     int Parse(std::string &result);
34
35     size_t pos;
36     std::string expr;
37 #define EXPR_PARSER_BUFFER_SIZE 1024
38     uint8_t buffer[EXPR_PARSER_BUFFER_SIZE];
39     std::string err_str;
40 };
41
42 #endif