diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2025-05-30 18:21:48 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2025-05-30 18:21:48 -0700 |
commit | 9bd308f89d9aaf75a05f9545e220b44420a697b7 (patch) | |
tree | 1179c447fa8fbe72c783c6d39a4d90fa8c7aaf6f | |
parent | e943099896e19c9638d55597c1b00474916d13e9 (diff) | |
download | txr-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.y | 4 | ||||
-rw-r--r-- | y.tab.c.shipped | 4 |
2 files changed, 4 insertions, 4 deletions
@@ -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: |