87 |
} |
} |
88 |
|
|
89 |
|
|
90 |
|
/*-------------------------------------. |
91 |
|
| Set the CLASS associated to SYMBOL. | |
92 |
|
`-------------------------------------*/ |
93 |
|
|
94 |
|
void |
95 |
|
symbol_class_set (symbol_t *symbol, symbol_class class) |
96 |
|
{ |
97 |
|
if (symbol->class != unknown_sym && symbol->class != class) |
98 |
|
complain (_("symbol %s redefined"), symbol->tag); |
99 |
|
|
100 |
|
if (class == nterm_sym && symbol->class != nterm_sym) |
101 |
|
symbol->number = nvars++; |
102 |
|
else if (class == token_sym && symbol->number == NUMBER_UNDEFINED) |
103 |
|
symbol->number = ntokens++; |
104 |
|
|
105 |
|
symbol->class = class; |
106 |
|
} |
107 |
|
|
108 |
|
|
109 |
|
/*-------------------------------------------------. |
110 |
|
| Set the USER_TOKEN_NUMBER associated to SYMBOL. | |
111 |
|
`-------------------------------------------------*/ |
112 |
|
|
113 |
|
void |
114 |
|
symbol_user_token_number_set (symbol_t *symbol, int user_token_number) |
115 |
|
{ |
116 |
|
assert (symbol->class == token_sym); |
117 |
|
|
118 |
|
if (symbol->user_token_number != USER_NUMBER_UNDEFINED) |
119 |
|
complain (_("redefining user token number of %s"), symbol->tag); |
120 |
|
|
121 |
|
symbol->user_token_number = user_token_number; |
122 |
|
/* User defined EOF token? */ |
123 |
|
if (user_token_number == 0) |
124 |
|
{ |
125 |
|
eoftoken = symbol; |
126 |
|
eoftoken->number = 0; |
127 |
|
/* It is always mapped to 0, so it was already counted in |
128 |
|
NTOKENS. */ |
129 |
|
--ntokens; |
130 |
|
} |
131 |
|
} |
132 |
|
|
133 |
|
|
134 |
/*------------. |
/*------------. |
135 |
| Free THIS. | |
| Free THIS. | |
136 |
`------------*/ |
`------------*/ |