ruby-changes:44870
From: nobu <ko1@a...>
Date: Wed, 30 Nov 2016 22:09:56 +0900 (JST)
Subject: [ruby-changes:44870] nobu:r56943 (trunk): parse.y: parser_tokadd_codepoint
nobu 2016-11-30 22:09:51 +0900 (Wed, 30 Nov 2016) New Revision: 56943 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=56943 Log: parse.y: parser_tokadd_codepoint * parse.y (parser_tokadd_codepoint): extract from parser_tokadd_utf8. Modified files: trunk/parse.y Index: parse.y =================================================================== --- parse.y (revision 56942) +++ parse.y (revision 56943) @@ -5757,6 +5757,24 @@ parser_tok_hex(struct parser_params *par https://github.com/ruby/ruby/blob/trunk/parse.y#L5757 #define tokcopy(n) memcpy(tokspace(n), lex_p - (n), (n)) +static void +parser_tokadd_codepoint(struct parser_params *parser, rb_encoding **encp, + int string_literal, int regexp_literal, + int codepoint, int numlen) +{ + lex_p += numlen; + if (regexp_literal) { + tokcopy(numlen); + } + else if (codepoint >= 0x80) { + *encp = rb_utf8_encoding(); + if (string_literal) tokaddmbc(codepoint, *encp); + } + else if (string_literal) { + tokadd(codepoint); + } +} + /* return value is for ?\u3042 */ static int parser_tokadd_utf8(struct parser_params *parser, rb_encoding **encp, @@ -5788,17 +5806,8 @@ parser_tokadd_utf8(struct parser_params https://github.com/ruby/ruby/blob/trunk/parse.y#L5806 yyerror("invalid Unicode codepoint (too large)"); return 0; } - lex_p += numlen; - if (regexp_literal) { - tokcopy((int)numlen); - } - else if (codepoint >= 0x80) { - *encp = rb_utf8_encoding(); - if (string_literal) tokaddmbc(codepoint, *encp); - } - else if (string_literal) { - tokadd(codepoint); - } + parser_tokadd_codepoint(parser, encp,string_literal, regexp_literal, + codepoint, (int)numlen); } while (string_literal && (peek(' ') || peek('\t'))); if (!peek(close_brace)) { @@ -5815,17 +5824,8 @@ parser_tokadd_utf8(struct parser_params https://github.com/ruby/ruby/blob/trunk/parse.y#L5824 yyerror("invalid Unicode escape"); return 0; } - lex_p += 4; - if (regexp_literal) { - tokcopy(4); - } - else if (codepoint >= 0x80) { - *encp = rb_utf8_encoding(); - if (string_literal) tokaddmbc(codepoint, *encp); - } - else if (string_literal) { - tokadd(codepoint); - } + parser_tokadd_codepoint(parser, encp, string_literal, regexp_literal, + codepoint, 4); } return codepoint; -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/