From 9e3f124a6094d04c90e1ad4681ec0ec3a0a9cc6c Mon Sep 17 00:00:00 2001 From: yui-knk Date: Mon, 26 Oct 2026 10:04:52 +0900 Subject: [PATCH] Stop creating tokens in parser Keep STRING tokens emitted by the lexer instead of converting them to Ident tokens in the parser. Racc propagates the STRING value by default, and downstream grammar handling only requires the common token interface. --- lib/lrama/parser.rb | 9 ++------- parser.y | 2 +- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/lib/lrama/parser.rb b/lib/lrama/parser.rb index be4b6f8a..7fdf6ac0 100644 --- a/lib/lrama/parser.rb +++ b/lib/lrama/parser.rb @@ -1084,7 +1084,7 @@ def merge_locations(*locations) 1, 74, :_reduce_none, 1, 74, :_reduce_none, 1, 74, :_reduce_none, - 1, 101, :_reduce_135 ] + 1, 101, :_reduce_none ] racc_reduce_n = 136 @@ -2387,12 +2387,7 @@ def _reduce_129(val, _values, result) # reduce 134 omitted -module_eval(<<'.,.,', 'parser.y', 620) - def _reduce_135(val, _values, result) - result = Lrama::Lexer::Token::Ident.new(s_value: val[0].s_value, location: val[0].location) - result - end -.,., +# reduce 135 omitted def _reduce_none(val, _values, result) val[0] diff --git a/parser.y b/parser.y index d26a45da..e9267348 100644 --- a/parser.y +++ b/parser.y @@ -618,7 +618,7 @@ rule | STRING | "{...}" - string_as_id: STRING { result = Lrama::Lexer::Token::Ident.new(s_value: val[0].s_value, location: val[0].location) } + string_as_id: STRING end ---- inner