summaryrefslogtreecommitdiffstats
path: root/parser.y
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2019-11-19 22:25:19 -0800
committerKaz Kylheku <kaz@kylheku.com>2019-11-19 22:25:19 -0800
commit98fe899f21eadf2eff1aa455c6f77edd09ff717f (patch)
tree5697919bda7ef048534395a904306aa6d573480d /parser.y
parent851b41f0ede8b0731df6bfd39fbaf2d38414cb40 (diff)
downloadtxr-98fe899f21eadf2eff1aa455c6f77edd09ff717f.tar.gz
txr-98fe899f21eadf2eff1aa455c6f77edd09ff717f.tar.bz2
txr-98fe899f21eadf2eff1aa455c6f77edd09ff717f.zip
parser: forgotten top-level .? cases.
* parser.y (hash_semi_or_n_expr, hash_semi_or_i_expr): We need to handle OREFDOT here so that .?sym can parse as a top-level expression. Issue reported by vapnik spaknik.
Diffstat (limited to 'parser.y')
-rw-r--r--parser.y8
1 files changed, 8 insertions, 0 deletions
diff --git a/parser.y b/parser.y
index a461fa4f..21414ed5 100644
--- a/parser.y
+++ b/parser.y
@@ -211,8 +211,12 @@ hash_semi_or_n_expr : HASH_SEMI { parser->ignore = 1; }
| HASH_SEMI '.' { parser->ignore = 1; }
n_expr { parser->ignore = 0;
$$ = nao; }
+ | HASH_SEMI OREFDOT { parser->ignore = 1; }
+ n_expr { parser->ignore = 0;
+ $$ = nao; }
| n_expr { $$ = $1; }
| '.' n_expr { $$ = uref_helper(parser, $2); }
+ | OREFDOT n_expr { $$ = uoref_helper(parser, $2); }
;
hash_semi_or_i_expr : HASH_SEMI { parser->ignore = 1; }
@@ -221,8 +225,12 @@ hash_semi_or_i_expr : HASH_SEMI { parser->ignore = 1; }
| HASH_SEMI '.' { parser->ignore = 1; }
i_expr { parser->ignore = 0;
$$ = nao; }
+ | HASH_SEMI OREFDOT { parser->ignore = 1; }
+ i_expr { parser->ignore = 0;
+ $$ = nao; }
| i_expr { $$ = $1; }
| '.' i_expr { $$ = uref_helper(parser, $2); }
+ | OREFDOT i_expr { $$ = uoref_helper(parser, $2); }
;