summaryrefslogtreecommitdiff
path: root/parse.y
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.y
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.y')
-rw-r--r--parse.y30
1 files changed, 18 insertions, 12 deletions
diff --git a/parse.y b/parse.y
index 16410a9c1e..524b188b29 100644
--- a/parse.y
+++ b/parse.y
@@ -2029,8 +2029,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++;
}
@@ -2174,10 +2176,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);
}
@@ -2252,10 +2256,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);
}
@@ -2616,7 +2622,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) {
@@ -3007,7 +3013,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 = '}';