summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2009-01-22 16:25:51 -0400
committerJohn Wiegley <johnw@newartisans.com>2009-01-22 16:25:51 -0400
commitccedf7d57f6cc42553f1d80189bf1491df6680e2 (patch)
tree550826fed1ede33d005f6bfba7ebed109f79f453
parent4e64364d3a6e575d7c9cb3db412dae36132b9f2d (diff)
downloadledger-ccedf7d57f6cc42553f1d80189bf1491df6680e2.tar.gz
ledger-ccedf7d57f6cc42553f1d80189bf1491df6680e2.tar.bz2
ledger-ccedf7d57f6cc42553f1d80189bf1491df6680e2.zip
Parse != as !(==) and !~ as !(=~), for simplicity's sake.
-rw-r--r--src/op.cc12
-rw-r--r--src/op.h1
-rw-r--r--src/token.cc8
-rw-r--r--src/token.h1
4 files changed, 9 insertions, 13 deletions
diff --git a/src/op.cc b/src/op.cc
index 1d30188d..45d0e493 100644
--- a/src/op.cc
+++ b/src/op.cc
@@ -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;
diff --git a/src/op.h b/src/op.h
index 9a331da6..20add08b 100644
--- a/src/op.h
+++ b/src/op.h
@@ -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, // *