summaryrefslogtreecommitdiff
path: root/parse.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1999-02-03 09:48:00 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1999-02-03 09:48:00 +0000
commit06d4e3b42d836b762c29cdc9dc7181caf14dcdec (patch)
tree4c85b1a55d024c59143e193b17e2444cb6873c6e /parse.c
parent99839272a3cf1dfe69bd3bad26d96a915b905ef1 (diff)
990203
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_3@389 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.c')
-rw-r--r--parse.c30
1 files changed, 18 insertions, 12 deletions
diff --git a/parse.c b/parse.c
index c9c48dc2a1..300b163d45 100644
--- a/parse.c
+++ b/parse.c
@@ -4940,8 +4940,10 @@ parse_regx(term, paren)
}
/* fall through */
default:
- if (c == paren) nest++;
- if (c == term) nest--;
+ if (paren) {
+ if (c == paren) nest++;
+ if (c == term) nest--;
+ }
if (c == '\n') {
ruby_sourceline++;
}
@@ -5085,10 +5087,12 @@ parse_string(func, term, paren)
}
continue;
}
- if (c == paren) nest++;
- if (c == term) {
- nest--;
- if (nest == 0) break;
+ if (paren) {
+ if (c == paren) nest++;
+ if (c == term) {
+ nest--;
+ if (nest == 0) break;
+ }
}
tokadd(c);
}
@@ -5163,10 +5167,12 @@ parse_qstring(term, paren)
tokadd('\\');
}
}
- if (c == paren) nest++;
- if (c == term) {
- nest--;
- if (nest == 0) break;
+ if (paren) {
+ if (c == paren) nest++;
+ if (c == term) {
+ nest--;
+ if (nest == 0) break;
+ }
}
tokadd(c);
}
@@ -5527,7 +5533,7 @@ retry:
return parse_string(c,c,c);
case '\'':
- return parse_qstring(c,c);
+ return parse_qstring(c,0);
case '?':
if (lex_state == EXPR_END) {
@@ -5918,7 +5924,7 @@ retry:
rb_compile_error("unterminated quoted string meets end of file");
return 0;
}
- paren = term;
+ paren = 0;
if (term == '(') term = ')';
else if (term == '[') term = ']';
else if (term == '{') term = '}';