Mercurial > hg > dmlib
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 |
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 } |