annotate src/dmevalw.c @ 1315:7687412f9aef

Fix jssmod sample conversion flags storing .. urgh.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 20 Aug 2017 01:54:54 +0300
parents 1e5cf1144f36
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
761
7be7c7c5deaa Large cleanup, breaking everything. Yay.
Matti Hamalainen <ccr@tnsp.org>
parents: 740
diff changeset
1 #include "dmeval.h"
725
f3cab48c6746 Add new header file dmevalw.h
Matti Hamalainen <ccr@tnsp.org>
parents: 724
diff changeset
2
724
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3
761
7be7c7c5deaa Large cleanup, breaking everything. Yay.
Matti Hamalainen <ccr@tnsp.org>
parents: 740
diff changeset
4 void dmDoEvalPrintOpTree(FILE *out, DMEvalContext *ev, DMEvalNode *node, int level)
724
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
5 {
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
6 int i;
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
7 while (node != NULL)
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
8 {
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
9 switch (node->op)
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
10 {
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
11 case OP_FUNC:
766
11fba703014f Some more work. Still broken.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
12 fprintf(out, "%s(", node->symbol != NULL ? node->symbol->name : "?ERROR");
11fba703014f Some more work. Still broken.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
13 for (i = 0; i < node->symbol->nargs; i++)
724
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
14 {
761
7be7c7c5deaa Large cleanup, breaking everything. Yay.
Matti Hamalainen <ccr@tnsp.org>
parents: 740
diff changeset
15 dmDoEvalPrintOpTree(out, ev, node->args[i], level + 1);
766
11fba703014f Some more work. Still broken.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
16 if (i < node->symbol->nargs - 1)
724
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
17 fprintf(out, ",");
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
18 }
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
19 fprintf(out, ")");
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
20 break;
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
21
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
22 case OP_VAR:
766
11fba703014f Some more work. Still broken.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
23 fprintf(out, "%s", node->symbol != NULL ? node->symbol->name : "?ERROR");
724
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
24 break;
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
25
766
11fba703014f Some more work. Still broken.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
26 case OP_VALUE:
724
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
27 fprintf(out, "%.1f", node->val);
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
28 break;
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
29
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
30 case OP_SUBEXPR:
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
31 fprintf(out, "(");
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
32 if (node->subexpr != NULL)
761
7be7c7c5deaa Large cleanup, breaking everything. Yay.
Matti Hamalainen <ccr@tnsp.org>
parents: 740
diff changeset
33 dmDoEvalPrintOpTree(out, ev, node->subexpr, level + 1);
724
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
34 else
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
35 fprintf(out, "?ERROR");
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
36 fprintf(out, ")");
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
37 break;
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
38
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
39 default:
761
7be7c7c5deaa Large cleanup, breaking everything. Yay.
Matti Hamalainen <ccr@tnsp.org>
parents: 740
diff changeset
40 if (node->op >= 0 && node->op < OP_NOPERS)
7be7c7c5deaa Large cleanup, breaking everything. Yay.
Matti Hamalainen <ccr@tnsp.org>
parents: 740
diff changeset
41 fprintf(out, "%s", dmEvalOpers[node->op].name);
724
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
42 else
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
43 fprintf(out, "ERROR!");
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
44 break;
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
45 }
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
46 node = node->next;
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
47 }
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
48 }
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
49
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
50
761
7be7c7c5deaa Large cleanup, breaking everything. Yay.
Matti Hamalainen <ccr@tnsp.org>
parents: 740
diff changeset
51 void dmEvalPrintOpTree(FILE *out, DMEvalContext *ev, DMEvalNode *node)
724
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
52 {
761
7be7c7c5deaa Large cleanup, breaking everything. Yay.
Matti Hamalainen <ccr@tnsp.org>
parents: 740
diff changeset
53 dmDoEvalPrintOpTree(out, ev, node, 0);
724
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
54 fprintf(out, "\n");
12ddeef948fc Move dm_print_optree() to dmevalw.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
55 }