1720 |
fatal (_("too many items (max %d)"), MAXSHORT); |
fatal (_("too many items (max %d)"), MAXSHORT); |
1721 |
|
|
1722 |
ritem = XCALLOC (short, nitems + 1); |
ritem = XCALLOC (short, nitems + 1); |
1723 |
rule_table = XCALLOC (rule_t, nrules) - 1; |
rules = XCALLOC (rule_t, nrules) - 1; |
1724 |
|
|
1725 |
itemno = 0; |
itemno = 0; |
1726 |
ruleno = 1; |
ruleno = 1; |
1729 |
while (p) |
while (p) |
1730 |
{ |
{ |
1731 |
bucket *ruleprec = p->ruleprec; |
bucket *ruleprec = p->ruleprec; |
1732 |
rule_table[ruleno].lhs = p->sym->value; |
rules[ruleno].lhs = p->sym->value; |
1733 |
rule_table[ruleno].rhs = itemno; |
rules[ruleno].rhs = itemno; |
1734 |
rule_table[ruleno].line = p->line; |
rules[ruleno].line = p->line; |
1735 |
rule_table[ruleno].useful = TRUE; |
rules[ruleno].useful = TRUE; |
1736 |
rule_table[ruleno].action = p->action; |
rules[ruleno].action = p->action; |
1737 |
rule_table[ruleno].action_line = p->action_line; |
rules[ruleno].action_line = p->action_line; |
1738 |
rule_table[ruleno].guard = p->guard; |
rules[ruleno].guard = p->guard; |
1739 |
rule_table[ruleno].guard_line = p->guard_line; |
rules[ruleno].guard_line = p->guard_line; |
1740 |
|
|
1741 |
p = p->next; |
p = p->next; |
1742 |
while (p && p->sym) |
while (p && p->sym) |
1746 |
of the last token in it. */ |
of the last token in it. */ |
1747 |
if (p->sym->class == token_sym) |
if (p->sym->class == token_sym) |
1748 |
{ |
{ |
1749 |
rule_table[ruleno].prec = p->sym->prec; |
rules[ruleno].prec = p->sym->prec; |
1750 |
rule_table[ruleno].assoc = p->sym->assoc; |
rules[ruleno].assoc = p->sym->assoc; |
1751 |
} |
} |
1752 |
if (p) |
if (p) |
1753 |
p = p->next; |
p = p->next; |
1757 |
the specified symbol's precedence replaces the default. */ |
the specified symbol's precedence replaces the default. */ |
1758 |
if (ruleprec) |
if (ruleprec) |
1759 |
{ |
{ |
1760 |
rule_table[ruleno].prec = ruleprec->prec; |
rules[ruleno].prec = ruleprec->prec; |
1761 |
rule_table[ruleno].assoc = ruleprec->assoc; |
rules[ruleno].assoc = ruleprec->assoc; |
1762 |
rule_table[ruleno].precsym = ruleprec->value; |
rules[ruleno].precsym = ruleprec->value; |
1763 |
} |
} |
1764 |
|
|
1765 |
ritem[itemno++] = -ruleno; |
ritem[itemno++] = -ruleno; |