diff options
author | Akim Demaille <akim.demaille@gmail.com> | 2022-09-04 08:34:11 +0200 |
---|---|---|
committer | Akim Demaille <akim.demaille@gmail.com> | 2022-09-04 08:51:53 +0200 |
commit | 637636412037d1fc2079f81260b19de5d0dab199 (patch) | |
tree | 97344cb699477f69bf9a6cee37ca0b0bbfc635b6 /src | |
parent | eb83487606276fdefd20415176aff9309a62a5ee (diff) | |
download | bison-637636412037d1fc2079f81260b19de5d0dab199.tar.gz |
muscles: fix handling of the "@'" escape
When we use `b4_` or `m4_` somewhere in the input, it is escaped as
`b4@'_`/`m4@'_` so that the warning about unexpanded b4_foo/m4_foo
macros does not fire.
But in the case of muscles, the `@'` escape was not recognized, and an
assertion was triggered.
Reported by Han Zheng.
<https://github.com/akimd/bison/issues/91>
* src/muscle-tab.c (COMMON_DECODE): Handle `@'`.
* tests/skeletons.at (Suspicious sequences): Check that case.
Diffstat (limited to 'src')
-rw-r--r-- | src/muscle-tab.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/muscle-tab.c b/src/muscle-tab.c index 43911d3e..0945d609 100644 --- a/src/muscle-tab.c +++ b/src/muscle-tab.c @@ -294,10 +294,11 @@ muscle_location_grow (char const *key, location loc) case '@': \ switch (*++(Value)) \ { \ - case '@': obstack_sgrow (&muscle_obstack, "@" ); break; \ - case '{': obstack_sgrow (&muscle_obstack, "[" ); break; \ - case '}': obstack_sgrow (&muscle_obstack, "]" ); break; \ - default: aver (false); break; \ + case '\'': /* Ignore "@'" */ break; \ + case '@': obstack_sgrow (&muscle_obstack, "@" ); break; \ + case '{': obstack_sgrow (&muscle_obstack, "[" ); break; \ + case '}': obstack_sgrow (&muscle_obstack, "]" ); break; \ + default: aver (false); break; \ } \ break; \ default: \ |