diff options
author | Teddy <ted.sybil@gmail.com> | 2013-08-05 19:49:31 +0800 |
---|---|---|
committer | Teddy <ted.sybil@gmail.com> | 2013-08-05 19:49:31 +0800 |
commit | a6574b0025b68eb28a8c7d679ca6783132ad013d (patch) | |
tree | 09f8e9976e209c9e7bf48556e8d90f211c1b3464 /parser.cpp | |
parent | 5dba94ed1eec7a808cab022a23480b4d39518307 (diff) |
complex, real, rational, integral number support
Diffstat (limited to 'parser.cpp')
-rw-r--r-- | parser.cpp | 23 |
1 files changed, 6 insertions, 17 deletions
@@ -64,28 +64,17 @@ bool Tokenizor::get_token(string &ret) { } ASTGenerator::ASTGenerator() {} -EvalObj *ASTGenerator::to_float(const string &str) { - stringstream ss(str); - double val; - ss >> val; - if (ss.fail() || !ss.eof()) return NULL; - return new FloatObj(val); -} - -EvalObj *ASTGenerator::to_int(const string &str) { - stringstream ss(str); - int val; - ss >> val; - if (ss.fail() || !ss.eof()) return NULL; - return new IntObj(val); -} EvalObj *ASTGenerator::to_obj(const string &str) { EvalObj *res = NULL; - if ((res = ASTGenerator::to_int(str))) + if ((res = IntNumObj::from_string(str))) + return res; + if ((res = RatNumObj::from_string(str))) + return res; + if ((res = RealNumObj::from_string(str))) return res; - if ((res = ASTGenerator::to_float(str))) + if ((res = CompNumObj::from_string(str))) return res; return new SymObj(str); } |