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

ruby-changes:15491

From: nobu <ko1@a...>
Date: Sun, 18 Apr 2010 22:16:41 +0900 (JST)
Subject: [ruby-changes:15491] Ruby:r27392 (trunk): * parse.y (IS_END, IS_SPCARG): macros for simplification.

nobu	2010-04-18 22:16:30 +0900 (Sun, 18 Apr 2010)

  New Revision: 27392

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=27392

  Log:
    * parse.y (IS_END, IS_SPCARG): macros for simplification.

  Modified files:
    trunk/parse.y

Index: parse.y
===================================================================
--- parse.y	(revision 27391)
+++ parse.y	(revision 27392)
@@ -6413,7 +6413,9 @@
 }
 
 #define IS_ARG() (lex_state == EXPR_ARG || lex_state == EXPR_CMDARG)
+#define IS_END() (lex_state == EXPR_END || lex_state == EXPR_ENDARG)
 #define IS_BEG() (lex_state == EXPR_BEG || lex_state == EXPR_MID || lex_state == EXPR_VALUE || lex_state == EXPR_CLASS)
+#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
 
 static int
 parser_yylex(struct parser_params *parser)
@@ -6555,7 +6557,7 @@
 		return tOP_ASGN;
 	    }
 	    pushback(c);
-	    if (IS_ARG() && space_seen && !ISSPACE(c)) {
+	    if (IS_SPCARG(c)) {
 		rb_warning0("`*' interpreted as argument prefix");
 		c = tSTAR;
 	    }
@@ -6826,7 +6828,7 @@
 	    return tOP_ASGN;
 	}
 	pushback(c);
-	if (IS_ARG() && space_seen && !ISSPACE(c)) {
+	if (IS_SPCARG(c)) {
 	    rb_warning0("`&' interpreted as argument prefix");
 	    c = tAMPER;
 	}
@@ -6884,9 +6886,8 @@
 	    lex_state = EXPR_BEG;
 	    return tOP_ASGN;
 	}
-	if (IS_BEG() ||
-	    (IS_ARG() && space_seen && !ISSPACE(c))) {
-	    if (IS_ARG()) arg_ambiguous();
+	if (IS_BEG() || IS_SPCARG(c)) {
+	    if (!IS_BEG()) arg_ambiguous();
 	    lex_state = EXPR_BEG;
 	    pushback(c);
 	    if (c != -1 && ISDIGIT(c)) {
@@ -6918,9 +6919,8 @@
 	    lex_state = EXPR_ARG;
 	    return tLAMBDA;
 	}
-	if (IS_BEG() ||
-	    (IS_ARG() && space_seen && !ISSPACE(c))) {
-	    if (IS_ARG()) arg_ambiguous();
+	if (IS_BEG() || IS_SPCARG(c)) {
+	    if (!IS_BEG()) arg_ambiguous();
 	    lex_state = EXPR_BEG;
 	    pushback(c);
 	    if (c != -1 && ISDIGIT(c)) {
@@ -7184,16 +7184,14 @@
       case ':':
 	c = nextc();
 	if (c == ':') {
-	    if (IS_BEG() ||
-		lex_state == EXPR_CLASS || (IS_ARG() && space_seen)) {
+	    if (IS_BEG() || lex_state == EXPR_CLASS || IS_SPCARG(-1)) {
 		lex_state = EXPR_BEG;
 		return tCOLON3;
 	    }
 	    lex_state = EXPR_DOT;
 	    return tCOLON2;
 	}
-	if ((!space_seen && (lex_state == EXPR_END || lex_state == EXPR_ENDARG)) ||
-	    (c != -1 && ISSPACE(c))) {
+	if ((IS_END() && !space_seen) || ISSPACE(c)) {
 	    pushback(c);
 	    lex_state = EXPR_BEG;
 	    return ':';
@@ -7223,12 +7221,10 @@
 	    return tOP_ASGN;
 	}
 	pushback(c);
-	if (IS_ARG() && space_seen) {
-	    if (!ISSPACE(c)) {
-		arg_ambiguous();
-		lex_strterm = NEW_STRTERM(str_regexp, '/', 0);
-		return tREGEXP_BEG;
-	    }
+	if (IS_SPCARG(c)) {
+	    arg_ambiguous();
+	    lex_strterm = NEW_STRTERM(str_regexp, '/', 0);
+	    return tREGEXP_BEG;
 	}
 	switch (lex_state) {
 	  case EXPR_FNAME: case EXPR_DOT:
@@ -7420,7 +7416,7 @@
 	    lex_state = EXPR_BEG;
 	    return tOP_ASGN;
 	}
-	if (IS_ARG() && space_seen && !ISSPACE(c)) {
+	if (IS_SPCARG(c)) {
 	    goto quotation;
 	}
 	switch (lex_state) {

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

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