summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAkim Demaille <akim.demaille@gmail.com>2022-09-04 08:34:11 +0200
committerAkim Demaille <akim.demaille@gmail.com>2022-09-04 08:51:53 +0200
commit637636412037d1fc2079f81260b19de5d0dab199 (patch)
tree97344cb699477f69bf9a6cee37ca0b0bbfc635b6 /src
parenteb83487606276fdefd20415176aff9309a62a5ee (diff)
downloadbison-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.c9
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: \