# HG changeset patch # User Michael Pavone # Date 1661024733 25200 # Node ID d87a76afbd8a1f3b3c55c6c7e009cece09f1d68b # Parent 59e0dcc01b2c70e59918cc6fbed9f06f14d042bd Add '>', '<', '>=' and '<=' operators to debugger expression engine diff -r 59e0dcc01b2c -r d87a76afbd8a debug.c --- a/debug.c Sat Aug 20 12:08:01 2022 -0700 +++ b/debug.c Sat Aug 20 12:45:33 2022 -0700 @@ -116,7 +116,9 @@ case '~': case '=': case '!': - if (*start == '!' && start[1] == '=') { + case '>': + case '<': + if ((*start == '!' || *start == '>' || *start == '<') && start[1] == '=') { *end = start + 2; return (token) { .type = TOKEN_OPER, @@ -177,6 +179,8 @@ case '~': case '=': case '!': + case '>': + case '<': case '.': done = 1; break; @@ -323,6 +327,8 @@ return maybe_binary(bin, *end, end); case '=': case '!': + case '>': + case '<': bin->right = parse_expression(after_first, end); return bin; default: @@ -447,6 +453,8 @@ case '-': case '=': case '!': + case '>': + case '<': ret = bin->left; bin->left = NULL; free_expr(bin); @@ -572,6 +580,8 @@ return maybe_binary(bin, *end, end); case '=': case '!': + case '>': + case '<': bin->right = parse_expression(after_second, end); if (!bin->right) { fprintf(stderr, "Expected expression to the right of %s\n", second.v.op); @@ -669,6 +679,12 @@ case '!': *out = *out != right; break; + case '>': + *out = e->op.v.op[1] ? *out >= right : *out > right; + break; + case '<': + *out = e->op.v.op[1] ? *out <= right : *out < right; + break; default: return 0; }