diff options
Diffstat (limited to 'llvm/support/tools/Burg/burs.c')
| -rw-r--r-- | llvm/support/tools/Burg/burs.c | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/llvm/support/tools/Burg/burs.c b/llvm/support/tools/Burg/burs.c deleted file mode 100644 index b4f8b83d00e..00000000000 --- a/llvm/support/tools/Burg/burs.c +++ /dev/null @@ -1,71 +0,0 @@ -char rcsid_burs[] = "$Id$"; - -#include "b.h" - -Item_Set errorState; - -static void doLeaf ARGS((Operator)); - -static void -doLeaf(leaf) Operator leaf; -{ - int new; - List pl; - Item_Set ts; - Item_Set tmp; - - assert(leaf->arity == 0); - - ts = newItem_Set(leaf->table->relevant); - - for (pl = rules; pl; pl = pl->next) { - Rule p = (Rule) pl->x; - if (p->pat->op == leaf) { - if (!ts->virgin[p->lhs->num].rule || p->delta < ts->virgin[p->lhs->num].delta) { - ts->virgin[p->lhs->num].rule = p; - ASSIGNCOST(ts->virgin[p->lhs->num].delta, p->delta); - ts->op = leaf; - } - } - } - trim(ts); - zero(ts); - tmp = encode(globalMap, ts, &new); - if (new) { - closure(ts); - leaf->table->transition[0] = ts; - addQ(globalQ, ts); - } else { - leaf->table->transition[0] = tmp; - freeItem_Set(ts); - } -} - -void -build() -{ - int new; - List ol; - Item_Set ts; - - globalQ = newQ(); - globalMap = newMapping(GLOBAL_MAP_SIZE); - - ts = newItem_Set(0); - errorState = encode(globalMap, ts, &new); - ts->closed = ts->virgin; - addQ(globalQ, ts); - - foreachList((ListFn) doLeaf, leaves); - - debug(debugTables, printf("---initial set of states ---\n")); - debug(debugTables, dumpMapping(globalMap)); - debug(debugTables, foreachList((ListFn) dumpItem_Set, globalQ->head)); - - for (ts = popQ(globalQ); ts; ts = popQ(globalQ)) { - for (ol = operators; ol; ol = ol->next) { - Operator op = (Operator) ol->x; - addToTable(op->table, ts); - } - } -} |

