Mercurial > repos > blastem
changeset 2191:d87a76afbd8a
Add '>', '<', '>=' and '<=' operators to debugger expression engine
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 20 Aug 2022 12:45:33 -0700 |
parents | 59e0dcc01b2c |
children | 3247bec692a4 |
files | debug.c |
diffstat | 1 files changed, 17 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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; }