00001 #ifndef EXPRPARSER_H 00002 #define EXPRPARSER_H 00003 00004 #include "SundanceDefs.h" 00005 00006 #include <string> 00007 #include "Token.h" 00008 #include "ExprScanner.h" 00009 #include "XMLObject.h" 00010 00011 00012 namespace Sundance 00013 { 00014 00015 using namespace TSF; 00016 using std::string; 00017 00018 using std::ostream; 00019 00020 00021 class ExprParser 00022 { 00023 public: 00024 00025 static XMLObject evaluate(const string& line); 00026 static XMLObject evaluateAssignment(const string& line); 00027 00028 00029 static void assignLevel(const ExprScanner& scanner, 00030 XMLObject& result); 00031 static void addLevel(const ExprScanner& scanner, 00032 XMLObject& result); 00033 static void multLevel(const ExprScanner& scanner, 00034 XMLObject& result); 00035 static void unaryLevel(const ExprScanner& scanner, 00036 XMLObject& result); 00037 static void parenLevel(const ExprScanner& scanner, 00038 XMLObject& result); 00039 static void primitiveLevel(const ExprScanner& scanner, 00040 XMLObject& result); 00041 00042 static void parseError(const string& str, const ExprScanner& scanner); 00043 00044 00045 00046 private: 00047 00048 }; 00049 00050 } 00051 #endif