diff options
Diffstat (limited to 'utils/Burg/pattern.c')
-rw-r--r-- | utils/Burg/pattern.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/utils/Burg/pattern.c b/utils/Burg/pattern.c new file mode 100644 index 0000000..472aca5 --- /dev/null +++ b/utils/Burg/pattern.c @@ -0,0 +1,38 @@ +char rcsid_pattern[] = "$Id$"; + +#include <stdio.h> +#include "b.h" + +Pattern +newPattern(op) Operator op; +{ + Pattern p; + + p = (Pattern) zalloc(sizeof(struct pattern)); + p->op = op; + return p; +} + +void +dumpPattern(p) Pattern p; +{ + int i; + + if (!p) { + printf("[no-pattern]"); + return; + } + + if (p->op) { + printf("%s", p->op->name); + if (p->op->arity > 0) { + printf("("); + for (i = 0; i < p->op->arity; i++) { + printf("%s ", p->children[i]->name); + } + printf(")"); + } + } else { + printf("%s", p->children[0]->name); + } +} |