00001 #ifndef SIMPLEPARSER_H 00002 #define SIMPLEPARSER_H 00003 00004 #include <QVariant> 00005 00012 class Parser { 00013 public: 00014 virtual QVariant operator()(QString expression) const = 0; 00015 static const QVariant &invalid(); 00016 00017 private: 00018 static const QVariant Invalid; 00019 }; 00020 00027 class SimpleParser : public Parser { 00028 public: 00029 SimpleParser(); 00030 QVariant operator()(QString expression) const ; 00031 00032 private: 00033 QVariant evalFactor(const QString &str, int &pos) const; 00034 QVariant evalTerm(const QString &str, int &pos) const; 00035 QVariant evalExpression(const QString &str, int &pos) const; 00036 }; 00037 00038 #endif // SIMPLEPARSER_H