diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1998-06-23 10:30:12 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1998-06-23 10:30:12 +0000 |
commit | 6a3c97169c8a671f5feda7eba2b2a7529252daf3 (patch) | |
tree | 299c92f68d6acda64e18e3e43ceda8db1d59ff61 | |
parent | 6b15412c77fc82ceacb156e4595571dd7262ab5d (diff) | |
download | ruby-6a3c97169c8a671f5feda7eba2b2a7529252daf3.tar.gz |
*** empty log message ***
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@249 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | parse.y | 11 | ||||
-rw-r--r-- | regex.c | 10 |
3 files changed, 19 insertions, 6 deletions
@@ -1,3 +1,7 @@ +Tue Jun 23 11:46:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp> + + * parse.y (yylex): `&&=' and `||=' added. + Sat Jun 20 02:53:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp> * parse.y (assignable): nesting local variables should have higher @@ -441,7 +441,6 @@ mlhs : mlhs_head { $$ = $2; } - | mlhs_head tSTAR lhs { $$ = NEW_MASGN(NEW_LIST($1), $3); @@ -2470,6 +2469,11 @@ retry: case '&': if ((c = nextc()) == '&') { lex_state = EXPR_BEG; + if ((c = nextc()) == '=') { + yylval.id = tANDOP; + return tOP_ASGN; + } + pushback(c); return tANDOP; } else if (c == '=') { @@ -2493,6 +2497,11 @@ retry: case '|': lex_state = EXPR_BEG; if ((c = nextc()) == '|') { + if ((c = nextc()) == '=') { + yylval.id = tOROP; + return tOP_ASGN; + } + pushback(c); return tOROP; } else if (c == '=') { @@ -2824,7 +2824,7 @@ typedef union } while(0) #define AT_STRINGS_BEG(d) (d == string) -#define AT_STRINGS_END(d) (d == dend) +#define AT_STRINGS_END(d) (d == dend) #define AT_WORD_BOUNDARY(d) \ (AT_STRINGS_BEG(d) || AT_STRINGS_END(d) || IS_A_LETTER(d - 1) != IS_A_LETTER(d)) @@ -3300,14 +3300,14 @@ re_match(bufp, string_arg, size, pos, regs) case begline: if (size == 0 - || d == string + || AT_STRINGS_BEG(d) || (d && d[-1] == '\n')) break; else goto fail; case endline: - if (d == dend || *d == '\n') + if (AT_STRINGS_END(d) || *d == '\n') break; goto fail; @@ -3604,7 +3604,7 @@ re_match(bufp, string_arg, size, pos, regs) if (*p == 0xff) { p++; if (!--mcnt - || d == dend + || AT_STRINGS_END(d) || (unsigned char)*d++ != (unsigned char)*p++) goto fail; continue; @@ -3613,7 +3613,7 @@ re_match(bufp, string_arg, size, pos, regs) if (c != (unsigned char)*p++ || !--mcnt /* redundant check if pattern was compiled properly. */ - || d == dend + || AT_STRINGS_END(d) || (unsigned char)*d++ != (unsigned char)*p++) goto fail; continue; |