summaryrefslogtreecommitdiffstats
path: root/eval_env.h
blob: 62f6c04153cf1dc8ef8bb448646dd1cb7cd072fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

struct EvalString {
  struct Env {
    virtual string Evaluate(const string& var) = 0;
  };
  bool Parse(const string& input);
  string Evaluate(Env* env);

  const string& unparsed() const { return unparsed_; }
  const bool empty() const { return unparsed_.empty(); }

  string unparsed_;
  enum TokenType { RAW, SPECIAL };
  typedef vector<pair<string, TokenType> > TokenList;
  TokenList parsed_;
};