summaryrefslogtreecommitdiff
path: root/valexpr.cc
diff options
context:
space:
mode:
Diffstat (limited to 'valexpr.cc')
-rw-r--r--valexpr.cc13
1 files changed, 10 insertions, 3 deletions
diff --git a/valexpr.cc b/valexpr.cc
index 4fed821e..0a2f27ee 100644
--- a/valexpr.cc
+++ b/valexpr.cc
@@ -833,7 +833,8 @@ value_expr_t * parse_value_term(std::istream& in, scope_t * scope,
bool definition = false;
if (c == '=') {
in.get(c);
- if (peek_next_nonws(in) == '=') {
+ if ((flags & PARSE_VALEXPR_NO_ASSIGN) ||
+ peek_next_nonws(in) == '=') {
in.unget();
c = '\0';
} else {
@@ -1160,10 +1161,16 @@ value_expr_t * parse_logic_expr(std::istream& in, scope_t * scope,
case '!':
case '=': {
bool negate = c == '!';
- if ((c = peek_next_nonws(in)) == '=')
+ if (! negate && (flags & PARSE_VALEXPR_NO_ASSIGN)) {
+ in.unget();
+ break;
+ }
+ else if ((c = peek_next_nonws(in)) == '=') {
in.get(c);
- else
+ }
+ else {
unexpected(c, '=');
+ }
value_expr prev(node.release());
node.reset(new value_expr_t(negate ? value_expr_t::O_NEQ :
value_expr_t::O_EQ));