aboutsummaryrefslogtreecommitdiff
path: root/src/parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser.h')
-rw-r--r--src/parser.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/parser.h b/src/parser.h
new file mode 100644
index 0000000..12d745a
--- /dev/null
+++ b/src/parser.h
@@ -0,0 +1,36 @@
+#ifndef PARSER_PARSER_H_
+#define PARSER_PARSER_H_
+
+#include <vector>
+#include <stack>
+#include <exception>
+
+#include "tree.h"
+
+namespace SimpleParser {
+
+class Parser {
+ public:
+ double calculate(std::string);
+
+ private:
+ int8_t getPriority(char);
+ std::vector<std::string> lexer(std::string);
+ Node* buildTree(Tree*, std::string);
+};
+
+class parenthese_exception: public std::exception {
+ virtual const char* what() const throw() {
+ return "Invalid parenthesized expression - check your input term.";
+ }
+};
+
+class operator_exception: public std::exception {
+ virtual const char* what() const throw() {
+ return "Unexpected operator placement - check your input term.";
+ }
+};
+
+}
+
+#endif // PARSER_PARSER_H_