- register short *r;
- register short *s1;
- register short *s2;
- register int ruleno;
- register int symbol;
- register shorts *p;
-
- short *squeue;
- short *rcount;
- shorts **rsets;
- shorts *relts;
- char any_tokens;
- short *r1;
-
-#ifdef TRACE
- fprintf(stderr, _("Entering set_nullable"));
-#endif
-
- nullable = NEW2(nvars, char) - ntokens;
-
- squeue = NEW2(nvars, short);
- s1 = s2 = squeue;
-
- rcount = NEW2(nrules + 1, short);
- rsets = NEW2(nvars, shorts *) - ntokens;
+ rule_number ruleno;
+ symbol_number *s1;
+ symbol_number *s2;
+ rule_list *p;
+
+ symbol_number *squeue = CALLOC (squeue, nvars);
+ short *rcount = CALLOC (rcount, nrules);
+ /* RITEM contains all the rules, including useless productions.
+ Hence we must allocate room for useless nonterminals too. */
+ rule_list **rsets = CALLOC (rsets, nvars);