- 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_t ruleno;
+ symbol_number_t *s1;
+ symbol_number_t *s2;
+ rule_list_t *p;
+
+ symbol_number_t *squeue = XCALLOC (symbol_number_t, nvars);
+ short *rcount = XCALLOC (short, nrules);
+ /* RITEM contains all the rules, including useless productions.
+ Hence we must allocate room for useless nonterminals too. */
+ rule_list_t **rsets = XCALLOC (rule_list_t *, nvars) - ntokens;