summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2025-05-30 18:21:48 -0700
committerKaz Kylheku <kaz@kylheku.com>2025-05-30 18:21:48 -0700
commit9bd308f89d9aaf75a05f9545e220b44420a697b7 (patch)
tree1179c447fa8fbe72c783c6d39a4d90fa8c7aaf6f
parente943099896e19c9638d55597c1b00474916d13e9 (diff)
downloadtxr-9bd308f89d9aaf75a05f9545e220b44420a697b7.tar.gz
txr-9bd308f89d9aaf75a05f9545e220b44420a697b7.tar.bz2
txr-9bd308f89d9aaf75a05f9545e220b44420a697b7.zip
parser: two fixes in buf literals.
* parser.y (buflit_items): Here we have length_buf($$) referring to the semantic result value of the rule. It should be referring to $1. It works because the Bison-generated code runs the $$ = $1 logic before all rules. (buflit_item): Let's use num_fast rather than num to produce the byte value since. * y.tab.c.shipped: Regenerated.
-rw-r--r--parser.y4
-rw-r--r--y.tab.c.shipped4
2 files changed, 4 insertions, 4 deletions
diff --git a/parser.y b/parser.y
index 0d2a4da0..0c544e0f 100644
--- a/parser.y
+++ b/parser.y
@@ -1472,13 +1472,13 @@ buflit : HASH_B_QUOTE '\'' { $$ = make_buf_fast(0, 0, 0);
yyerrok; }
;
-buflit_items : buflit_items buflit_item { buf_put_u8($1, length_buf($$), $2);
+buflit_items : buflit_items buflit_item { buf_put_u8($1, length_buf($1), $2);
$$ = $1; }
| buflit_item { $$ = make_buf_fast(0, 0, 512);
buf_put_u8($$, zero, $1); }
;
-buflit_item : LITCHAR LITCHAR { $$ = num($1 << 4 | $2); }
+buflit_item : LITCHAR LITCHAR { $$ = num_fast($1 << 4 | $2); }
| LITCHAR error { $$ = zero;
yyerr("unpaired digit in buffer literal");
yyerrok; }
diff --git a/y.tab.c.shipped b/y.tab.c.shipped
index ecfd5b97..c0ef56db 100644
--- a/y.tab.c.shipped
+++ b/y.tab.c.shipped
@@ -6833,7 +6833,7 @@ yyreduce:
/* Line 1806 of yacc.c */
#line 1475 "parser.y"
- { buf_put_u8((yyvsp[(1) - (2)].val), length_buf((yyval.val)), (yyvsp[(2) - (2)].val));
+ { buf_put_u8((yyvsp[(1) - (2)].val), length_buf((yyvsp[(1) - (2)].val)), (yyvsp[(2) - (2)].val));
(yyval.val) = (yyvsp[(1) - (2)].val); }
break;
@@ -6849,7 +6849,7 @@ yyreduce:
/* Line 1806 of yacc.c */
#line 1481 "parser.y"
- { (yyval.val) = num((yyvsp[(1) - (2)].chr) << 4 | (yyvsp[(2) - (2)].chr)); }
+ { (yyval.val) = num_fast((yyvsp[(1) - (2)].chr) << 4 | (yyvsp[(2) - (2)].chr)); }
break;
case 455: