木村です。
\cx記法で、\c\と記述することができません。
read_specialやtokadd_escapeを再帰呼び出ししているのが
原因だと思うのですが、これはなぜこうしているのでしょうか?
以下のパッチは1.8.2に対するものですが、1.9.0でも同じ現象は
発生します。
--- parse.y.1~ 2004-07-17 18:29:59.000000000 +0900
+++ parse.y 2005-07-10 04:23:35.000000000 +0900
@@ -2887,10 +2887,8 @@ tokadd_escape(term)
case 'c':
tokadd('\\'); tokadd('c');
escaped:
- if ((c = nextc()) == '\\') {
- return tokadd_escape(term);
- }
- else if (c == -1) goto eof;
+ c = nextc();
+ if (c == -1) goto eof;
tokadd(c);
return 0;
--- regex.c.1~ 2004-01-26 14:41:07.000000000 +0900
+++ regex.c 2005-07-10 04:25:59.000000000 +0900
@@ -1161,10 +1161,7 @@ read_special(p, pend, pp)
if (c != '-') return -1;
PATFETCH_RAW(c);
*pp = p;
- if (c == '\\') {
- return read_special(p, pend, pp) | 0x80;
- }
- else if (c == -1) return ~0;
+ if (c == -1) return ~0;
else {
return ((c & 0xff) | 0x80);
}
@@ -1175,10 +1172,7 @@ read_special(p, pend, pp)
case 'c':
PATFETCH_RAW(c);
*pp = p;
- if (c == '\\') {
- c = read_special(p, pend, pp);
- }
- else if (c == '?') return 0177;
+ if (c == '?') return 0177;
else if (c == -1) return ~0;
return c & 0x9f;
default:
--
木村浩一
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
mail kbk / kt.rim.or.jp
web www.kt.rim.or.jp/~kbk/index.html#zakkicho
homepage3.nifty.com/farstar/