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

ruby-changes:47988

From: nobu <ko1@a...>
Date: Tue, 3 Oct 2017 10:38:58 +0900 (JST)
Subject: [ruby-changes:47988] nobu:r60102 (trunk): parse.y: set ripper event ID symbols to operators

nobu	2017-10-03 10:38:52 +0900 (Tue, 03 Oct 2017)

  New Revision: 60102

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=60102

  Log:
    parse.y: set ripper event ID symbols to operators

  Modified files:
    trunk/parse.y
Index: parse.y
===================================================================
--- parse.y	(revision 60101)
+++ parse.y	(revision 60102)
@@ -636,13 +636,16 @@ static int lvar_defined_gen(struct parse https://github.com/ruby/ruby/blob/trunk/parse.y#L636
 #define nd_paren(node) (char)((node)->u2.id >> CHAR_BIT*2)
 #define nd_nest u3.cnt
 
-#define TOKEN2ID(tok) ( \
+#define TOKEN2ID_OR(tok, or) ( \
     tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
     tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
     tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
     tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
     tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
     tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
+    or)
+
+#define TOKEN2ID(tok) TOKEN2ID_OR(tok, \
     ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
 
 /****** Ripper *******/
@@ -677,6 +680,7 @@ static void ripper_error_gen(struct pars https://github.com/ruby/ruby/blob/trunk/parse.y#L680
 
 #define ID2VAL(id) STATIC_ID2SYM(id)
 #define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
+#define TOKEN2EID(t) ID2SYM(TOKEN2ID_OR(t, ripper_token2eventid(t)))
 
 #define arg_new() dispatch0(args_new)
 #define arg_add(l,a) dispatch2(args_add, (l), (a))
@@ -733,6 +737,7 @@ static VALUE parser_heredoc_dedent(struc https://github.com/ruby/ruby/blob/trunk/parse.y#L737
 #else
 #define ID2VAL(id) ((VALUE)(id))
 #define TOKEN2VAL(t) ID2VAL(t)
+#define TOKEN2EID(t) (t)
 #endif /* RIPPER */
 
 #ifndef RIPPER
@@ -1918,36 +1923,36 @@ undef_list	: fitem https://github.com/ruby/ruby/blob/trunk/parse.y#L1923
 		    }
 		;
 
-op		: '|'		{ ifndef_ripper($$ = '|'); }
-		| '^'		{ ifndef_ripper($$ = '^'); }
-		| '&'		{ ifndef_ripper($$ = '&'); }
-		| tCMP		{ ifndef_ripper($$ = tCMP); }
-		| tEQ		{ ifndef_ripper($$ = tEQ); }
-		| tEQQ		{ ifndef_ripper($$ = tEQQ); }
-		| tMATCH	{ ifndef_ripper($$ = tMATCH); }
-		| tNMATCH	{ ifndef_ripper($$ = tNMATCH); }
-		| '>'		{ ifndef_ripper($$ = '>'); }
-		| tGEQ		{ ifndef_ripper($$ = tGEQ); }
-		| '<'		{ ifndef_ripper($$ = '<'); }
-		| tLEQ		{ ifndef_ripper($$ = tLEQ); }
-		| tNEQ		{ ifndef_ripper($$ = tNEQ); }
-		| tLSHFT	{ ifndef_ripper($$ = tLSHFT); }
-		| tRSHFT	{ ifndef_ripper($$ = tRSHFT); }
-		| '+'		{ ifndef_ripper($$ = '+'); }
-		| '-'		{ ifndef_ripper($$ = '-'); }
-		| '*'		{ ifndef_ripper($$ = '*'); }
-		| tSTAR		{ ifndef_ripper($$ = '*'); }
-		| '/'		{ ifndef_ripper($$ = '/'); }
-		| '%'		{ ifndef_ripper($$ = '%'); }
-		| tPOW		{ ifndef_ripper($$ = tPOW); }
-		| tDSTAR	{ ifndef_ripper($$ = tDSTAR); }
-		| '!'		{ ifndef_ripper($$ = '!'); }
-		| '~'		{ ifndef_ripper($$ = '~'); }
-		| tUPLUS	{ ifndef_ripper($$ = tUPLUS); }
-		| tUMINUS	{ ifndef_ripper($$ = tUMINUS); }
-		| tAREF		{ ifndef_ripper($$ = tAREF); }
-		| tASET		{ ifndef_ripper($$ = tASET); }
-		| '`'		{ ifndef_ripper($$ = '`'); }
+op		: '|'		{ $$ = TOKEN2EID('|'); }
+		| '^'		{ $$ = TOKEN2EID('^'); }
+		| '&'		{ $$ = TOKEN2EID('&'); }
+		| tCMP		{ $$ = TOKEN2EID(tCMP); }
+		| tEQ		{ $$ = TOKEN2EID(tEQ); }
+		| tEQQ		{ $$ = TOKEN2EID(tEQQ); }
+		| tMATCH	{ $$ = TOKEN2EID(tMATCH); }
+		| tNMATCH	{ $$ = TOKEN2EID(tNMATCH); }
+		| '>'		{ $$ = TOKEN2EID('>'); }
+		| tGEQ		{ $$ = TOKEN2EID(tGEQ); }
+		| '<'		{ $$ = TOKEN2EID('<'); }
+		| tLEQ		{ $$ = TOKEN2EID(tLEQ); }
+		| tNEQ		{ $$ = TOKEN2EID(tNEQ); }
+		| tLSHFT	{ $$ = TOKEN2EID(tLSHFT); }
+		| tRSHFT	{ $$ = TOKEN2EID(tRSHFT); }
+		| '+'		{ $$ = TOKEN2EID('+'); }
+		| '-'		{ $$ = TOKEN2EID('-'); }
+		| '*'		{ $$ = TOKEN2EID('*'); }
+		| tSTAR		{ $$ = TOKEN2EID('*'); }
+		| '/'		{ $$ = TOKEN2EID('/'); }
+		| '%'		{ $$ = TOKEN2EID('%'); }
+		| tPOW		{ $$ = TOKEN2EID(tPOW); }
+		| tDSTAR	{ $$ = TOKEN2EID(tDSTAR); }
+		| '!'		{ $$ = TOKEN2EID('!'); }
+		| '~'		{ $$ = TOKEN2EID('~'); }
+		| tUPLUS	{ $$ = TOKEN2EID(tUPLUS); }
+		| tUMINUS	{ $$ = TOKEN2EID(tUMINUS); }
+		| tAREF		{ $$ = TOKEN2EID(tAREF); }
+		| tASET		{ $$ = TOKEN2EID(tASET); }
+		| '`'		{ $$ = TOKEN2EID('`'); }
 		;
 
 reswords	: keyword__LINE__ | keyword__FILE__ | keyword__ENCODING__

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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