ruby-changes:8468
From: mame <ko1@a...>
Date: Tue, 28 Oct 2008 21:34:37 +0900 (JST)
Subject: [ruby-changes:8468] Ruby:r20000 (trunk, ruby_1_9_1): * parse.y (parser_yylex): check EOF explicitly.
mame 2008-10-28 21:34:13 +0900 (Tue, 28 Oct 2008) New Revision: 20000 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=20000 Log: * parse.y (parser_yylex): check EOF explicitly. Modified files: branches/ruby_1_9_1/ChangeLog branches/ruby_1_9_1/parse.y trunk/ChangeLog trunk/parse.y Index: ChangeLog =================================================================== --- ChangeLog (revision 19999) +++ ChangeLog (revision 20000) @@ -1,3 +1,7 @@ +Tue Oct 28 21:31:55 2008 Yusuke Endoh <mame@t...> + + * parse.y (parser_yylex): check EOF explicitly. + Tue Oct 28 20:59:12 2008 NAKAMURA Usaku <usa@r...> * io.c (extract_binmode): new function to extract binmode/textmode Index: parse.y =================================================================== --- parse.y (revision 19999) +++ parse.y (revision 20000) @@ -6790,7 +6790,7 @@ if (IS_ARG()) arg_ambiguous(); lex_state = EXPR_BEG; pushback(c); - if (ISDIGIT(c)) { + if (c != -1 && ISDIGIT(c)) { c = '+'; goto start_num; } @@ -6824,7 +6824,7 @@ if (IS_ARG()) arg_ambiguous(); lex_state = EXPR_BEG; pushback(c); - if (ISDIGIT(c)) { + if (c != -1 && ISDIGIT(c)) { return tUMINUS_NUM; } return tUMINUS; @@ -6843,7 +6843,7 @@ return tDOT2; } pushback(c); - if (ISDIGIT(c)) { + if (c != -1 && ISDIGIT(c)) { yyerror("no .<digit> floating literal anymore; put 0 before dot"); } lex_state = EXPR_DOT; @@ -6868,7 +6868,7 @@ if (c == 'x' || c == 'X') { /* hexadecimal */ c = nextc(); - if (ISXDIGIT(c)) { + if (c != -1 && ISXDIGIT(c)) { do { if (c == '_') { if (nondigit) break; @@ -6916,7 +6916,7 @@ if (c == 'd' || c == 'D') { /* decimal */ c = nextc(); - if (ISDIGIT(c)) { + if (c != -1 && ISDIGIT(c)) { do { if (c == '_') { if (nondigit) break; @@ -6944,7 +6944,7 @@ if (c == 'o' || c == 'O') { /* prefixed octal */ c = nextc(); - if (c == '_' || !ISDIGIT(c)) { + if (c == -1 || c == '_' || !ISDIGIT(c)) { yyerror("numeric literal without digits"); } } @@ -7003,7 +7003,7 @@ } else { int c0 = nextc(); - if (!ISDIGIT(c0)) { + if (c == -1 || !ISDIGIT(c0)) { pushback(c0); goto decode_num; } @@ -7092,7 +7092,7 @@ lex_state = EXPR_DOT; return tCOLON2; } - if (lex_state == EXPR_END || lex_state == EXPR_ENDARG || ISSPACE(c)) { + if (lex_state == EXPR_END || lex_state == EXPR_ENDARG || (c != -1 && ISSPACE(c))) { pushback(c); lex_state = EXPR_BEG; return ':'; @@ -7251,7 +7251,7 @@ c = nextc(); quotation: - if (!ISALNUM(c)) { + if (c == -1 || !ISALNUM(c)) { term = c; c = 'Q'; } @@ -7401,7 +7401,7 @@ do { tokadd(c); c = nextc(); - } while (ISDIGIT(c)); + } while (c != -1 && ISDIGIT(c)); pushback(c); if (last_state == EXPR_FNAME) goto gvar; tokfix(); @@ -7426,7 +7426,7 @@ tokadd('@'); c = nextc(); } - if (ISDIGIT(c)) { + if (c != -1 && ISDIGIT(c)) { if (tokidx == 1) { compile_error(PARSER_ARG "`@%c' is not allowed as an instance variable name", c); } Index: ruby_1_9_1/ChangeLog =================================================================== --- ruby_1_9_1/ChangeLog (revision 19999) +++ ruby_1_9_1/ChangeLog (revision 20000) @@ -1,3 +1,7 @@ +Tue Oct 28 21:31:55 2008 Yusuke Endoh <mame@t...> + + * parse.y (parser_yylex): check EOF explicitly. + Tue Oct 28 21:11:58 2008 NAKAMURA Usaku <usa@r...> * io.c (extract_binmode): new function to extract binmode/textmode Index: ruby_1_9_1/parse.y =================================================================== --- ruby_1_9_1/parse.y (revision 19999) +++ ruby_1_9_1/parse.y (revision 20000) @@ -6790,7 +6790,7 @@ if (IS_ARG()) arg_ambiguous(); lex_state = EXPR_BEG; pushback(c); - if (ISDIGIT(c)) { + if (c != -1 && ISDIGIT(c)) { c = '+'; goto start_num; } @@ -6824,7 +6824,7 @@ if (IS_ARG()) arg_ambiguous(); lex_state = EXPR_BEG; pushback(c); - if (ISDIGIT(c)) { + if (c != -1 && ISDIGIT(c)) { return tUMINUS_NUM; } return tUMINUS; @@ -6843,7 +6843,7 @@ return tDOT2; } pushback(c); - if (ISDIGIT(c)) { + if (c != -1 && ISDIGIT(c)) { yyerror("no .<digit> floating literal anymore; put 0 before dot"); } lex_state = EXPR_DOT; @@ -6868,7 +6868,7 @@ if (c == 'x' || c == 'X') { /* hexadecimal */ c = nextc(); - if (ISXDIGIT(c)) { + if (c != -1 && ISXDIGIT(c)) { do { if (c == '_') { if (nondigit) break; @@ -6916,7 +6916,7 @@ if (c == 'd' || c == 'D') { /* decimal */ c = nextc(); - if (ISDIGIT(c)) { + if (c != -1 && ISDIGIT(c)) { do { if (c == '_') { if (nondigit) break; @@ -6944,7 +6944,7 @@ if (c == 'o' || c == 'O') { /* prefixed octal */ c = nextc(); - if (c == '_' || !ISDIGIT(c)) { + if (c == -1 || c == '_' || !ISDIGIT(c)) { yyerror("numeric literal without digits"); } } @@ -7003,7 +7003,7 @@ } else { int c0 = nextc(); - if (!ISDIGIT(c0)) { + if (c == -1 || !ISDIGIT(c0)) { pushback(c0); goto decode_num; } @@ -7092,7 +7092,7 @@ lex_state = EXPR_DOT; return tCOLON2; } - if (lex_state == EXPR_END || lex_state == EXPR_ENDARG || ISSPACE(c)) { + if (lex_state == EXPR_END || lex_state == EXPR_ENDARG || (c != -1 && ISSPACE(c))) { pushback(c); lex_state = EXPR_BEG; return ':'; @@ -7251,7 +7251,7 @@ c = nextc(); quotation: - if (!ISALNUM(c)) { + if (c == -1 || !ISALNUM(c)) { term = c; c = 'Q'; } @@ -7401,7 +7401,7 @@ do { tokadd(c); c = nextc(); - } while (ISDIGIT(c)); + } while (c != -1 && ISDIGIT(c)); pushback(c); if (last_state == EXPR_FNAME) goto gvar; tokfix(); @@ -7426,7 +7426,7 @@ tokadd('@'); c = nextc(); } - if (ISDIGIT(c)) { + if (c != -1 && ISDIGIT(c)) { if (tokidx == 1) { compile_error(PARSER_ARG "`@%c' is not allowed as an instance variable name", c); } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/