diff options
author | John Wiegley <johnw@newartisans.com> | 2009-01-22 16:25:51 -0400 |
---|---|---|
committer | John Wiegley <johnw@newartisans.com> | 2009-01-22 16:25:51 -0400 |
commit | ccedf7d57f6cc42553f1d80189bf1491df6680e2 (patch) | |
tree | 550826fed1ede33d005f6bfba7ebed109f79f453 | |
parent | 4e64364d3a6e575d7c9cb3db412dae36132b9f2d (diff) | |
download | ledger-ccedf7d57f6cc42553f1d80189bf1491df6680e2.tar.gz ledger-ccedf7d57f6cc42553f1d80189bf1491df6680e2.tar.bz2 ledger-ccedf7d57f6cc42553f1d80189bf1491df6680e2.zip |
Parse != as !(==) and !~ as !(=~), for simplicity's sake.
-rw-r--r-- | src/op.cc | 12 | ||||
-rw-r--r-- | src/op.h | 1 | ||||
-rw-r--r-- | src/token.cc | 8 | ||||
-rw-r--r-- | src/token.h | 1 |
4 files changed, 9 insertions, 13 deletions
@@ -117,8 +117,6 @@ value_t expr_t::op_t::calc(scope_t& scope) break; } - case O_NEQ: - return left()->calc(scope) != right()->calc(scope); case O_EQ: return left()->calc(scope) == right()->calc(scope); case O_LT: @@ -260,15 +258,6 @@ bool expr_t::op_t::print(std::ostream& out, print_context_t& context) const out << ")"; break; - case O_NEQ: - out << "("; - if (left() && left()->print(out, context)) - found = true; - out << " != "; - if (right() && right()->print(out, context)) - found = true; - out << ")"; - break; case O_EQ: out << "("; if (left() && left()->print(out, context)) @@ -415,7 +404,6 @@ void expr_t::op_t::dump(std::ostream& out, const int depth) const case O_MUL: out << "O_MUL"; break; case O_DIV: out << "O_DIV"; break; - case O_NEQ: out << "O_NEQ"; break; case O_EQ: out << "O_EQ"; break; case O_LT: out << "O_LT"; break; case O_LTE: out << "O_LTE"; break; @@ -78,7 +78,6 @@ public: UNARY_OPERATORS, O_EQ, - O_NEQ, O_LT, O_LTE, O_GT, diff --git a/src/token.cc b/src/token.cc index 5c950d6d..66125b93 100644 --- a/src/token.cc +++ b/src/token.cc @@ -172,6 +172,14 @@ void expr_t::token_t::next(std::istream& in, const uint_least8_t pflags) length = 2; break; } + else if (c == '~') { + in.get(c); + symbol[1] = c; + symbol[2] = '\0'; + kind = NMATCH; + length = 2; + break; + } kind = EXCLAM; break; diff --git a/src/token.h b/src/token.h index 7516a87b..3663c104 100644 --- a/src/token.h +++ b/src/token.h @@ -55,6 +55,7 @@ struct expr_t::token_t : public noncopyable ASSIGN, // = MATCH, // =~ + NMATCH, // !~ MINUS, // - PLUS, // + STAR, // * |