175 |
} |
} |
176 |
|
|
177 |
/* Only terminals have a precedence. */ |
/* Only terminals have a precedence. */ |
178 |
symbol_class_set (symbol, token_sym); |
symbol_class_set (symbol, token_sym, location); |
179 |
} |
} |
180 |
|
|
181 |
|
|
184 |
`-------------------------------------*/ |
`-------------------------------------*/ |
185 |
|
|
186 |
void |
void |
187 |
symbol_class_set (symbol_t *symbol, symbol_class class) |
symbol_class_set (symbol_t *symbol, symbol_class class, location_t location) |
188 |
{ |
{ |
189 |
if (symbol->class != unknown_sym && symbol->class != class) |
if (symbol->class != unknown_sym && symbol->class != class) |
190 |
complain (_("symbol %s redefined"), symbol_tag_get (symbol)); |
complain_at (location, _("symbol %s redefined"), symbol_tag_get (symbol)); |
191 |
|
|
192 |
if (class == nterm_sym && symbol->class != nterm_sym) |
if (class == nterm_sym && symbol->class != nterm_sym) |
193 |
symbol->number = nvars++; |
symbol->number = nvars++; |
203 |
`-------------------------------------------------*/ |
`-------------------------------------------------*/ |
204 |
|
|
205 |
void |
void |
206 |
symbol_user_token_number_set (symbol_t *symbol, int user_token_number) |
symbol_user_token_number_set (symbol_t *symbol, |
207 |
|
int user_token_number, location_t location) |
208 |
{ |
{ |
209 |
assert (symbol->class == token_sym); |
assert (symbol->class == token_sym); |
210 |
|
|
211 |
if (symbol->user_token_number != USER_NUMBER_UNDEFINED |
if (symbol->user_token_number != USER_NUMBER_UNDEFINED |
212 |
&& symbol->user_token_number != user_token_number) |
&& symbol->user_token_number != user_token_number) |
213 |
complain (_("redefining user token number of %s"), |
complain_at (location, _("redefining user token number of %s"), |
214 |
symbol_tag_get (symbol)); |
symbol_tag_get (symbol)); |
215 |
|
|
216 |
symbol->user_token_number = user_token_number; |
symbol->user_token_number = user_token_number; |
217 |
/* User defined EOF token? */ |
/* User defined EOF token? */ |