[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]