Lines Matching refs:sym

177 symbol_type_set (symbol *sym, uniqstr type_name, location loc)
181 if (sym->type_name)
182 symbol_redeclaration (sym, "%type", sym->type_location, loc);
184 sym->type_name = type_name;
185 sym->type_location = loc;
194 symbol_destructor_set (symbol *sym, code_props const *destructor)
196 if (sym->destructor.code)
197 symbol_redeclaration (sym, "%destructor", sym->destructor.location,
199 sym->destructor = *destructor;
222 symbol_destructor_get (symbol const *sym)
225 if (sym->destructor.code)
226 return &sym->destructor;
229 if (sym->type_name)
232 &semantic_type_get (sym->type_name)->destructor;
238 if (sym->tag[0] == '$' || sym == errtoken)
241 if (sym->type_name)
251 symbol_printer_set (symbol *sym, code_props const *printer)
253 if (sym->printer.code)
254 symbol_redeclaration (sym, "%printer",
255 sym->printer.location, printer->location);
256 sym->printer = *printer;
277 symbol_printer_get (symbol const *sym)
280 if (sym->printer.code)
281 return &sym->printer;
284 if (sym->type_name)
286 code_props const *printer = &semantic_type_get (sym->type_name)->printer;
292 if (sym->tag[0] == '$' || sym == errtoken)
295 if (sym->type_name)
306 symbol_precedence_set (symbol *sym, int prec, assoc a, location loc)
310 if (sym->prec != 0)
311 symbol_redeclaration (sym, assoc_to_string (a), sym->prec_location,
313 sym->prec = prec;
314 sym->assoc = a;
315 sym->prec_location = loc;
319 symbol_class_set (sym, token_sym, loc, false);
328 symbol_class_set (symbol *sym, symbol_class class, location loc, bool declaring)
330 if (sym->class != unknown_sym && sym->class != class)
332 complain_at (loc, _("symbol %s redefined"), sym->tag);
333 sym->declared = false;
336 if (class == nterm_sym && sym->class != nterm_sym)
337 sym->number = nvars++;
338 else if (class == token_sym && sym->number == NUMBER_UNDEFINED)
339 sym->number = ntokens++;
341 sym->class = class;
345 if (sym->declared)
346 warn_at (loc, _("symbol %s redeclared"), sym->tag);
347 sym->declared = true;
357 symbol_user_token_number_set (symbol *sym, int user_token_number, location loc)
361 if (sym->user_token_number != USER_NUMBER_HAS_STRING_ALIAS)
362 user_token_numberp = &sym->user_token_number;
364 user_token_numberp = &sym->alias->user_token_number;
367 complain_at (loc, _("redefining user token number of %s"), sym->tag);
373 endtoken = sym;
389 symbol_check_defined (symbol *sym)
391 if (sym->class == unknown_sym)
394 (sym->location,
396 sym->tag);
397 sym->class = nterm_sym;
398 sym->number = nvars++;
405 symbol_check_defined_processor (void *sym, void *null ATTRIBUTE_UNUSED)
407 return symbol_check_defined (sym);
412 symbol_make_alias (symbol *sym, symbol *str, location loc)
417 else if (sym->alias)
419 sym->tag);
423 str->user_token_number = sym->user_token_number;
424 sym->user_token_number = USER_NUMBER_HAS_STRING_ALIAS;
425 str->alias = sym;
426 sym->alias = str;
427 str->number = sym->number;
428 symbol_type_set (str, sym->type_name, loc);
441 symbol *sym = this;
449 if (str->type_name != sym->type_name)
452 symbol_type_set (sym, str->type_name, str->type_location);
454 symbol_type_set (str, sym->type_name, sym->type_location);
458 if (str->destructor.code || sym->destructor.code)
461 symbol_destructor_set (sym, &str->destructor);
463 symbol_destructor_set (str, &sym->destructor);
466 if (str->printer.code || sym->printer.code)
469 symbol_printer_set (sym, &str->printer);
471 symbol_printer_set (str, &sym->printer);
474 if (sym->prec || str->prec)
477 symbol_precedence_set (sym, str->prec, str->assoc,
480 symbol_precedence_set (str, sym->prec, sym->assoc,
481 sym->prec_location);
743 symbol *sym;
746 sym = symbol_get (buf, loc);
747 sym->class = nterm_sym;
748 sym->number = nvars++;
749 return sym;
753 symbol_is_dummy (const symbol *sym)
755 return sym->tag[0] == '@' || (sym->tag[0] == '$' && sym->tag[1] == '@');