diff options
Diffstat (limited to 'support/tools/Burg/operator.c')
-rw-r--r-- | support/tools/Burg/operator.c | 48 |
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); +} + |