summaryrefslogtreecommitdiff
path: root/support/tools/Burg/operator.c
diff options
context:
space:
mode:
Diffstat (limited to 'support/tools/Burg/operator.c')
-rw-r--r--support/tools/Burg/operator.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/support/tools/Burg/operator.c b/support/tools/Burg/operator.c
new file mode 100644
index 0000000000..a6df9e304d
--- /dev/null
+++ b/support/tools/Burg/operator.c
@@ -0,0 +1,48 @@
+char rcsid_operator[] = "$Id$";
+
+#include "b.h"
+#include <stdio.h>
+
+int max_arity = -1;
+
+List operators;
+List leaves;
+
+Operator
+newOperator(name, num, arity) char *name; OperatorNum num; ArityNum arity;
+{
+ Operator op;
+
+ assert(arity <= MAX_ARITY);
+ op = (Operator) zalloc(sizeof(struct operator));
+ assert(op);
+ op->name = name;
+ op->num = num;
+ op->arity = arity;
+
+ operators = newList(op, operators);
+
+ return op;
+}
+
+void
+dumpOperator_s(op) Operator op;
+{
+ printf("Op: %s(%d)=%d\n", op->name, op->arity, op->num);
+}
+
+void
+dumpOperator(op, full) Operator op; int full;
+{
+ dumpOperator_s(op);
+ if (full) {
+ dumpTable(op->table, 0);
+ }
+}
+
+void
+dumpOperator_l(op) Operator op;
+{
+ dumpOperator(op, 1);
+}
+