summaryrefslogtreecommitdiffstats
path: root/parse.y
diff options
context:
space:
mode:
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y14
1 files changed, 10 insertions, 4 deletions
diff --git a/parse.y b/parse.y
index 657eafbad..bda57f428 100644
--- a/parse.y
+++ b/parse.y
@@ -7162,11 +7162,17 @@ parser_yylex(struct parser_params *parser)
if (tokadd_mbchar(c) == -1) return 0;
c = nextc();
} while (parser_is_identchar());
- if ((c == '!' || c == '?') && !peek('=')) {
- tokadd(c);
- }
- else {
+ switch (tok()[0]) {
+ case '@': case '$':
pushback(c);
+ break;
+ default:
+ if ((c == '!' || c == '?') && !peek('=')) {
+ tokadd(c);
+ }
+ else {
+ pushback(c);
+ }
}
tokfix();