190 |
static bool |
static bool |
191 |
symbol_pack (symbol_t *this) |
symbol_pack (symbol_t *this) |
192 |
{ |
{ |
|
if (getenv ("DEBUG")) |
|
|
fprintf (stderr, "Packing %s, %s, number = %d\n", |
|
|
this->tag, |
|
|
this->class == nterm_sym ? "nterm" : "TERM", |
|
|
this->number); |
|
193 |
if (this->class == nterm_sym) |
if (this->class == nterm_sym) |
194 |
{ |
{ |
195 |
this->number += ntokens; |
this->number += ntokens; |
218 |
assert (this->number != -1); |
assert (this->number != -1); |
219 |
} |
} |
220 |
|
|
|
if (getenv ("DEBUG")) |
|
|
fprintf (stderr, "Setting %d = %s\n", this->number, this->tag); |
|
221 |
symbols[this->number] = this; |
symbols[this->number] = this; |
222 |
return TRUE; |
return TRUE; |
223 |
} |
} |
232 |
static bool |
static bool |
233 |
symbol_translation (symbol_t *this) |
symbol_translation (symbol_t *this) |
234 |
{ |
{ |
|
if (getenv ("DEBUG")) |
|
|
fprintf (stderr, "Considering Setting UserVal %s = %d (val = %d)\n", |
|
|
this->tag, this->user_token_number, this->number); |
|
|
|
|
235 |
/* Non-terminal? */ |
/* Non-terminal? */ |
236 |
if (this->class == token_sym |
if (this->class == token_sym |
237 |
&& this->user_token_number != SALIAS) |
&& this->user_token_number != SALIAS) |
242 |
symbols[token_translations[this->user_token_number]]->tag, |
symbols[token_translations[this->user_token_number]]->tag, |
243 |
this->tag, this->user_token_number); |
this->tag, this->user_token_number); |
244 |
|
|
|
if (getenv ("DEBUG")) |
|
|
fprintf (stderr, "Setting UserVal %s = %d (val = %d)\n", |
|
|
this->tag, this->user_token_number, this->number); |
|
245 |
token_translations[this->user_token_number] = this->number; |
token_translations[this->user_token_number] = this->number; |
246 |
} |
} |
247 |
|
|
706 |
if (what_is == nterm_sym && oldclass != nterm_sym) |
if (what_is == nterm_sym && oldclass != nterm_sym) |
707 |
symbol->number = nvars++; |
symbol->number = nvars++; |
708 |
if (what_is == token_sym && symbol->number == -1) |
if (what_is == token_sym && symbol->number == -1) |
709 |
{ |
symbol->number = ntokens++; |
|
symbol->number = ntokens++; |
|
|
if (getenv ("DEBUG")) |
|
|
fprintf (stderr, "Set %s to %d\n", |
|
|
symbol->tag, symbol->number); |
|
|
} |
|
710 |
|
|
711 |
if (typename) |
if (typename) |
712 |
{ |
{ |
1640 |
fatal (_("too many symbols (tokens plus nonterminals); maximum %d"), |
fatal (_("too many symbols (tokens plus nonterminals); maximum %d"), |
1641 |
MAXSHORT); |
MAXSHORT); |
1642 |
|
|
|
if (getenv ("DEBUG")) |
|
|
fprintf (stderr, "nsyms == ntokens + nvars: %d == %d + %d\n", |
|
|
nsyms, ntokens, nvars); |
|
1643 |
assert (nsyms == ntokens + nvars); |
assert (nsyms == ntokens + nvars); |
1644 |
} |
} |
1645 |
|
|
1684 |
for (i = 0; i < ntokens; ++i) |
for (i = 0; i < ntokens; ++i) |
1685 |
{ |
{ |
1686 |
symbol_t *this = symbols[i]; |
symbol_t *this = symbols[i]; |
|
if (getenv ("DEBUG")) |
|
|
fprintf (stderr, "UserVal %s = %d (val = %d)\n", |
|
|
this->tag, this->user_token_number, this->number); |
|
1687 |
if (this->user_token_number == SUNDEF) |
if (this->user_token_number == SUNDEF) |
1688 |
this->user_token_number = ++last_user_token_number; |
this->user_token_number = ++last_user_token_number; |
1689 |
if (this->user_token_number > max_user_token_number) |
if (this->user_token_number > max_user_token_number) |
1690 |
max_user_token_number = this->user_token_number; |
max_user_token_number = this->user_token_number; |
|
if (getenv ("DEBUG")) |
|
|
fprintf (stderr, "Now: UserVal %s = %d (val = %d)\n", |
|
|
this->tag, this->user_token_number, this->number); |
|
1691 |
} |
} |
1692 |
|
|
1693 |
token_translations = XCALLOC (short, max_user_token_number + 1); |
token_translations = XCALLOC (short, max_user_token_number + 1); |