From: Matthew Fernandez Date: Wed, 4 Jan 2023 04:17:06 +0000 (-0800) Subject: expr gen: remove shadowing of 'expr' global X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=be3bbaac5343c3f80d9e29cd36ebd4616ee4c4b0;p=graphviz expr gen: remove shadowing of 'expr' global --- diff --git a/lib/expr/excc.c b/lib/expr/excc.c index 7a407b2ab..006bdf59d 100644 --- a/lib/expr/excc.c +++ b/lib/expr/excc.c @@ -184,9 +184,7 @@ static void scan(Excc_t *cc, Exnode_t *exnode) { * internal excc */ -static void -gen(Excc_t* cc, Exnode_t* expr) -{ +static void gen(Excc_t *cc, Exnode_t *exnode) { Exnode_t* x; Exnode_t* y; int n; @@ -196,17 +194,17 @@ gen(Excc_t* cc, Exnode_t* expr) Extype_t* v; Extype_t** p; - if (!expr) + if (!exnode) return; - if (expr->op == CALL) { - agxbprint(cc->ccdisc->text, "%s(", expr->data.call.procedure->name); - if (expr->data.call.args) - gen(cc, expr->data.call.args); + if (exnode->op == CALL) { + agxbprint(cc->ccdisc->text, "%s(", exnode->data.call.procedure->name); + if (exnode->data.call.args) + gen(cc, exnode->data.call.args); agxbputc(cc->ccdisc->text, ')'); return; } - x = expr->data.operand.left; - switch (expr->op) + x = exnode->data.operand.left; + switch (exnode->op) { case BREAK: agxbput(cc->ccdisc->text, "break;\n"); @@ -215,20 +213,20 @@ gen(Excc_t* cc, Exnode_t* expr) agxbput(cc->ccdisc->text, "continue;\n"); return; case CONSTANT: - switch (expr->type) + switch (exnode->type) { case FLOATING: - agxbprint(cc->ccdisc->text, "%g", expr->data.constant.value.floating); + agxbprint(cc->ccdisc->text, "%g", exnode->data.constant.value.floating); break; case STRING: - agxbprint(cc->ccdisc->text, "\"%s\"", fmtesq(expr->data.constant.value.string, quote)); + agxbprint(cc->ccdisc->text, "\"%s\"", fmtesq(exnode->data.constant.value.string, quote)); break; case UNSIGNED: agxbprint(cc->ccdisc->text, "%llu", - (long long unsigned)expr->data.constant.value.integer); + (long long unsigned)exnode->data.constant.value.integer); break; default: - agxbprint(cc->ccdisc->text, "%lld", expr->data.constant.value.integer); + agxbprint(cc->ccdisc->text, "%lld", exnode->data.constant.value.integer); break; } return; @@ -236,7 +234,7 @@ gen(Excc_t* cc, Exnode_t* expr) agxbprint(cc->ccdisc->text, "%s--", x->data.variable.symbol->name); return; case DYNAMIC: - agxbput(cc->ccdisc->text, expr->data.variable.symbol->name); + agxbput(cc->ccdisc->text, exnode->data.variable.symbol->name); return; case EXIT: agxbput(cc->ccdisc->text, "exit("); @@ -246,7 +244,7 @@ gen(Excc_t* cc, Exnode_t* expr) case FUNCTION: gen(cc, x); agxbputc(cc->ccdisc->text, '('); - if ((y = expr->data.operand.right)) { + if ((y = exnode->data.operand.right)) { gen(cc, y); } agxbputc(cc->ccdisc->text, ')'); @@ -255,7 +253,7 @@ gen(Excc_t* cc, Exnode_t* expr) agxbput(cc->ccdisc->text, "rand();\n"); return; case SRAND: - if (expr->binary) { + if (exnode->binary) { agxbput(cc->ccdisc->text, "srand("); gen(cc, x); agxbput(cc->ccdisc->text, ");\n"); @@ -265,30 +263,30 @@ gen(Excc_t* cc, Exnode_t* expr) case GSUB: case SUB: case SUBSTR: - s = (expr->op == GSUB ? "gsub(" : expr->op == SUB ? "sub(" : "substr("); + s = (exnode->op == GSUB ? "gsub(" : exnode->op == SUB ? "sub(" : "substr("); agxbput(cc->ccdisc->text, s); - gen(cc, expr->data.string.base); + gen(cc, exnode->data.string.base); agxbput(cc->ccdisc->text, ", "); - gen(cc, expr->data.string.pat); - if (expr->data.string.repl) { + gen(cc, exnode->data.string.pat); + if (exnode->data.string.repl) { agxbput(cc->ccdisc->text, ", "); - gen(cc, expr->data.string.repl); + gen(cc, exnode->data.string.repl); } agxbputc(cc->ccdisc->text, ')'); return; case IN_OP: - gen(cc, expr->data.variable.index); - agxbprint(cc->ccdisc->text, " in %s", expr->data.variable.symbol->name); + gen(cc, exnode->data.variable.index); + agxbprint(cc->ccdisc->text, " in %s", exnode->data.variable.symbol->name); return; case IF: agxbput(cc->ccdisc->text, "if ("); gen(cc, x); agxbput(cc->ccdisc->text, ") {\n"); - gen(cc, expr->data.operand.right->data.operand.left); - if (expr->data.operand.right->data.operand.right) + gen(cc, exnode->data.operand.right->data.operand.left); + if (exnode->data.operand.right->data.operand.right) { agxbput(cc->ccdisc->text, "} else {\n"); - gen(cc, expr->data.operand.right->data.operand.right); + gen(cc, exnode->data.operand.right->data.operand.right); } agxbput(cc->ccdisc->text, "}\n"); return; @@ -296,33 +294,33 @@ gen(Excc_t* cc, Exnode_t* expr) agxbput(cc->ccdisc->text, "for (;"); gen(cc, x); agxbput(cc->ccdisc->text, ");"); - if (expr->data.operand.left) + if (exnode->data.operand.left) { agxbputc(cc->ccdisc->text, '('); - gen(cc, expr->data.operand.left); + gen(cc, exnode->data.operand.left); agxbputc(cc->ccdisc->text, ')'); } agxbput(cc->ccdisc->text, ") {"); - if (expr->data.operand.right) - gen(cc, expr->data.operand.right); + if (exnode->data.operand.right) + gen(cc, exnode->data.operand.right); agxbputc(cc->ccdisc->text, '}'); return; case ID: if (cc->ccdisc->ccf) - cc->ccdisc->ccf(cc, expr, expr->data.variable.symbol, expr->data.variable.reference, expr->data.variable.index, cc->ccdisc); + cc->ccdisc->ccf(cc, exnode, exnode->data.variable.symbol, exnode->data.variable.reference, exnode->data.variable.index, cc->ccdisc); else - agxbput(cc->ccdisc->text, expr->data.variable.symbol->name); + agxbput(cc->ccdisc->text, exnode->data.variable.symbol->name); return; case INC: agxbprint(cc->ccdisc->text, "%s++", x->data.variable.symbol->name); return; case ITERATE: case ITERATER: - if (expr->op == DYNAMIC) + if (exnode->op == DYNAMIC) { agxbprint(cc->ccdisc->text, "{ Exassoc_t* %stmp_%d;", cc->id, ++cc->tmp); - agxbprint(cc->ccdisc->text, "for (%stmp_%d = (Exassoc_t*)dtfirst(%s); %stmp_%d && (%s = %stmp_%d->name); %stmp_%d = (Exassoc_t*)dtnext(%s, %stmp_%d)) {", cc->id, cc->tmp, expr->data.generate.array->data.variable.symbol->name, cc->id, cc->tmp, expr->data.generate.index->name, cc->id, cc->tmp, cc->id, cc->tmp, expr->data.generate.array->data.variable.symbol->name, cc->id, cc->tmp); - gen(cc, expr->data.generate.statement); + agxbprint(cc->ccdisc->text, "for (%stmp_%d = (Exassoc_t*)dtfirst(%s); %stmp_%d && (%s = %stmp_%d->name); %stmp_%d = (Exassoc_t*)dtnext(%s, %stmp_%d)) {", cc->id, cc->tmp, exnode->data.generate.array->data.variable.symbol->name, cc->id, cc->tmp, exnode->data.generate.index->name, cc->id, cc->tmp, cc->id, cc->tmp, exnode->data.generate.array->data.variable.symbol->name, cc->id, cc->tmp); + gen(cc, exnode->data.generate.statement); agxbput(cc->ccdisc->text, "} }"); } return; @@ -334,7 +332,7 @@ gen(Excc_t* cc, Exnode_t* expr) agxbput(cc->ccdisc->text, "()"); return; case PRINTF: - print(cc, expr); + print(cc, exnode); return; case RETURN: agxbput(cc->ccdisc->text, "return("); @@ -342,19 +340,19 @@ gen(Excc_t* cc, Exnode_t* expr) agxbput(cc->ccdisc->text, ");\n"); return; case SCANF: - scan(cc, expr); + scan(cc, exnode); return; case SPLIT: case TOKENS: - if (expr->op == SPLIT) + if (exnode->op == SPLIT) agxbput(cc->ccdisc->text, "split ("); else agxbput(cc->ccdisc->text, "tokens ("); - gen(cc, expr->data.split.string); - agxbprint(cc->ccdisc->text, ", %s", expr->data.split.array->name); - if (expr->data.split.seps) { + gen(cc, exnode->data.split.string); + agxbprint(cc->ccdisc->text, ", %s", exnode->data.split.array->name); + if (exnode->data.split.seps) { agxbputc(cc->ccdisc->text, ','); - gen(cc, expr->data.split.seps); + gen(cc, exnode->data.split.seps); } agxbputc(cc->ccdisc->text, ')'); return; @@ -363,7 +361,7 @@ gen(Excc_t* cc, Exnode_t* expr) agxbprint(cc->ccdisc->text, "{ %s %stmp_%d = ", extype(t), cc->id, ++cc->tmp); gen(cc, x); agxbputc(cc->ccdisc->text, ';'); - x = expr->data.operand.right; + x = exnode->data.operand.right; y = x->data.select.statement; n = 0; while ((x = x->data.select.next)) @@ -418,10 +416,10 @@ gen(Excc_t* cc, Exnode_t* expr) agxbputc(cc->ccdisc->text, '}'); return; case UNSET: - agxbprint(cc->ccdisc->text, "unset(%s", expr->data.variable.symbol->name); - if (expr->data.variable.index) { + agxbprint(cc->ccdisc->text, "unset(%s", exnode->data.variable.symbol->name); + if (exnode->data.variable.index) { agxbputc(cc->ccdisc->text, ','); - gen(cc, expr->data.variable.index); + gen(cc, exnode->data.variable.index); } agxbputc(cc->ccdisc->text, ')'); return; @@ -429,23 +427,23 @@ gen(Excc_t* cc, Exnode_t* expr) agxbput(cc->ccdisc->text, "while ("); gen(cc, x); agxbput(cc->ccdisc->text, ") {"); - if (expr->data.operand.right) - gen(cc, expr->data.operand.right); + if (exnode->data.operand.right) + gen(cc, exnode->data.operand.right); agxbputc(cc->ccdisc->text, '}'); return; case '#': - agxbprint(cc->ccdisc->text, "# %s", expr->data.variable.symbol->name); + agxbprint(cc->ccdisc->text, "# %s", exnode->data.variable.symbol->name); return; case '=': - agxbprint(cc->ccdisc->text, "(%s%s=", x->data.variable.symbol->name, expr->subop == '=' ? "" : exopname(expr->subop)); - gen(cc, expr->data.operand.right); + agxbprint(cc->ccdisc->text, "(%s%s=", x->data.variable.symbol->name, exnode->subop == '=' ? "" : exopname(exnode->subop)); + gen(cc, exnode->data.operand.right); agxbputc(cc->ccdisc->text, ')'); return; case ';': for (;;) { - if (!(x = expr->data.operand.right)) - switch (cc->lastop = expr->data.operand.left->op) + if (!(x = exnode->data.operand.right)) + switch (cc->lastop = exnode->data.operand.left->op) { case FOR: case IF: @@ -458,11 +456,11 @@ gen(Excc_t* cc, Exnode_t* expr) agxbprint(cc->ccdisc->text, "_%svalue=", cc->id); break; } - gen(cc, expr->data.operand.left); + gen(cc, exnode->data.operand.left); agxbput(cc->ccdisc->text, ";\n"); - if (!(expr = x)) + if (!(exnode = x)) break; - switch (cc->lastop = expr->op) + switch (cc->lastop = exnode->op) { case ';': continue; @@ -477,7 +475,7 @@ gen(Excc_t* cc, Exnode_t* expr) agxbprint(cc->ccdisc->text, "_%svalue=", cc->id); break; } - gen(cc, expr); + gen(cc, exnode); agxbput(cc->ccdisc->text, ";\n"); break; } @@ -485,15 +483,15 @@ gen(Excc_t* cc, Exnode_t* expr) case ',': agxbputc(cc->ccdisc->text, '('); gen(cc, x); - while ((expr = expr->data.operand.right) && expr->op == ',') + while ((exnode = exnode->data.operand.right) && exnode->op == ',') { agxbput(cc->ccdisc->text, "), ("); - gen(cc, expr->data.operand.left); + gen(cc, exnode->data.operand.left); } - if (expr) + if (exnode) { agxbput(cc->ccdisc->text, "), ("); - gen(cc, expr); + gen(cc, exnode); } agxbputc(cc->ccdisc->text, ')'); return; @@ -501,23 +499,23 @@ gen(Excc_t* cc, Exnode_t* expr) agxbputc(cc->ccdisc->text, '('); gen(cc, x); agxbput(cc->ccdisc->text, ") ? ("); - gen(cc, expr->data.operand.right->data.operand.left); + gen(cc, exnode->data.operand.right->data.operand.left); agxbput(cc->ccdisc->text, ") : ("); - gen(cc, expr->data.operand.right->data.operand.right); + gen(cc, exnode->data.operand.right->data.operand.right); agxbputc(cc->ccdisc->text, ')'); return; case AND: agxbputc(cc->ccdisc->text, '('); gen(cc, x); agxbput(cc->ccdisc->text, ") && ("); - gen(cc, expr->data.operand.right); + gen(cc, exnode->data.operand.right); agxbputc(cc->ccdisc->text, ')'); return; case OR: agxbputc(cc->ccdisc->text, '('); gen(cc, x); agxbput(cc->ccdisc->text, ") || ("); - gen(cc, expr->data.operand.right); + gen(cc, exnode->data.operand.right); agxbputc(cc->ccdisc->text, ')'); return; case F2I: @@ -546,10 +544,10 @@ gen(Excc_t* cc, Exnode_t* expr) agxbputc(cc->ccdisc->text, ')'); return; } - y = expr->data.operand.right; + y = exnode->data.operand.right; if (x->type == STRING) { - switch (expr->op) + switch (exnode->op) { case S2B: agxbput(cc->ccdisc->text, "*("); @@ -588,7 +586,7 @@ gen(Excc_t* cc, Exnode_t* expr) agxbput(cc->ccdisc->text, "** string bits not supported **"); return; } - switch (expr->op) + switch (exnode->op) { case '<': s = "<0"; @@ -616,12 +614,12 @@ gen(Excc_t* cc, Exnode_t* expr) else { if (!y) - agxbput(cc->ccdisc->text, exopname(expr->op)); + agxbput(cc->ccdisc->text, exopname(exnode->op)); agxbputc(cc->ccdisc->text, '('); gen(cc, x); if (y) { - agxbprint(cc->ccdisc->text, ")%s(", exopname(expr->op)); + agxbprint(cc->ccdisc->text, ")%s(", exopname(exnode->op)); gen(cc, y); } agxbputc(cc->ccdisc->text, ')');