239 |
AT_CLEANUP(input.c input.output) |
AT_CLEANUP(input.c input.output) |
240 |
|
|
241 |
|
|
242 |
|
|
243 |
|
## -------------------- ## |
244 |
|
## %expect not enough. ## |
245 |
|
## -------------------- ## |
246 |
|
|
247 |
|
AT_SETUP([%expect not enough]) |
248 |
|
|
249 |
|
AT_DATA([input.y], |
250 |
|
[[%token NUM OP |
251 |
|
%expect 0 |
252 |
|
%% |
253 |
|
exp: exp OP exp | NUM; |
254 |
|
]]) |
255 |
|
|
256 |
|
AT_CHECK([bison input.y -o input.c], 1, [], |
257 |
|
[input.y contains 1 shift/reduce conflict. |
258 |
|
expected 0 shift/reduce conflicts |
259 |
|
]) |
260 |
|
AT_CLEANUP(input.c) |
261 |
|
|
262 |
|
|
263 |
|
## --------------- ## |
264 |
|
## %expect right. ## |
265 |
|
## --------------- ## |
266 |
|
|
267 |
|
AT_SETUP([%expect right]) |
268 |
|
|
269 |
|
AT_DATA([input.y], |
270 |
|
[[%token NUM OP |
271 |
|
%expect 1 |
272 |
|
%% |
273 |
|
exp: exp OP exp | NUM; |
274 |
|
]]) |
275 |
|
|
276 |
|
AT_CHECK([bison input.y -o input.c], 0, [], |
277 |
|
[input.y contains 1 shift/reduce conflict. |
278 |
|
]) |
279 |
|
AT_CLEANUP(input.c) |
280 |
|
|
281 |
|
|
282 |
|
## ------------------ ## |
283 |
|
## %expect too much. ## |
284 |
|
## ------------------ ## |
285 |
|
|
286 |
|
AT_SETUP([%expect too much]) |
287 |
|
|
288 |
|
AT_DATA([input.y], |
289 |
|
[[%token NUM OP |
290 |
|
%expect 2 |
291 |
|
%% |
292 |
|
exp: exp OP exp | NUM; |
293 |
|
]]) |
294 |
|
|
295 |
|
AT_CHECK([bison input.y -o input.c], 1, [], |
296 |
|
[input.y contains 1 shift/reduce conflict. |
297 |
|
expected 2 shift/reduce conflicts |
298 |
|
]) |
299 |
|
AT_CLEANUP(input.c) |
300 |
|
|
301 |
|
|
302 |
## ---------------------- ## |
## ---------------------- ## |
303 |
## Mixing %token styles. ## |
## Mixing %token styles. ## |
304 |
## ---------------------- ## |
## ---------------------- ## |