35static const char quote[] =
"\"";
101 snprintf(buf,
sizeof(buf) - 1,
"(OP=%03lo)", op);
112 if ((x = exnode->
data.print.args))
117 while ((x = x->
next)) {
123 for (x = exnode->
data.print.args; x; x = x->
next)
149 if ((x = exnode->
data.print.args))
154 while ((x = x->
next)) {
160 for (x = exnode->
data.print.args; x; x = x->
next)
196 if (exnode->
data.call.args)
197 gen(cc, exnode->
data.call.args);
211 switch (exnode->
type)
264 s = (exnode->
op ==
GSUB ?
"gsub(" : exnode->
op ==
SUB ?
"sub(" :
"substr(");
266 gen(cc, exnode->
data.string.base);
268 gen(cc, exnode->
data.string.pat);
269 if (exnode->
data.string.repl) {
271 gen(cc, exnode->
data.string.repl);
317 agxbprint(cc->
text,
"for (tmp_%d = (Exassoc_t*)dtfirst(%s); tmp_%d && (%s = tmp_%d->name); tmp_%d = (Exassoc_t*)dtnext(%s, tmp_%d)) {", cc->
tmp, exnode->
data.generate.array->data.
variable.
symbol->
name, cc->
tmp, exnode->
data.generate.
index->name, cc->
tmp, cc->
tmp, exnode->
data.generate.array->data.
variable.
symbol->
name, cc->
tmp);
346 gen(cc, exnode->
data.split.string);
348 if (exnode->
data.split.seps) {
350 gen(cc, exnode->
data.split.seps);
391 (
unsigned long long)v->
integer);
565 agxbput(cc->
text,
"** cannot convert string value to external **");
583 agxbput(cc->
text,
"** string bits not supported **");
601 s =
"** unknown string op **";
632 Excc_t cc = {.
expr = ex, .disc = ex->disc, .text = xb};
640 gen(&cc, sym->value->data.procedure.body);
Dynamically expanding string buffers.
static int agxbprint(agxbuf *xb, const char *fmt,...)
Printf-style output to an agxbuf.
static int agxbputc(agxbuf *xb, char c)
add character to buffer
char * fmtesq(const char *, const char *)
static void scan(Excc_t *cc, Exnode_t *exnode)
static void print(Excc_t *cc, Exnode_t *exnode)
static const char quote[]
static void gen(Excc_t *, Exnode_t *)
void exdump(Expr_t *ex, Exnode_t *node, agxbuf *xb)
agxbuf * text
result of dumping
bool binary
data.operand.{left,right} ok
struct Exnode_s * param[3]
struct Exdata_u::@63 select
struct Exdata_u::@61 constant
struct Exdata_u::@62 operand
struct Exdata_u::@64 variable