1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
|
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
|
-
-
-
+
+
+
+
|
while(*pt==10) pt++;
break;
case 30: // "\d"
re:
pp=pt=ll_find(pt,30);
if(!pt) goto notfound;
for(i=0;ps[i];i++) {
if(ps[i]==':' || ps[i]=='\\') break;
if(ps[i]!=pt[i] && ps[i]!='?') {
pt+=i;
if(ps[i]==':' || ps[i]==';' || ps[i]=='\\') break;
if(ps[i]!=pt[i+1] && ps[i]!='?') {
if(!pt[i]) goto notfound;
pt+=i?:1;
goto re;
}
}
ps+=i+1;
pt+=i+2;
break;
case '+':
|
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
|
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
|
+
+
+
|
stack[sp++]=NVALUE(1);
return sp;
case '%':
if(!so || !eo || so>eo) break;
stack[sp++]=NVALUE(eo-so);
stack[sp++]=NVALUE(1);
return sp;
case 'Z':
if(main_options['t'] && main_options['v']) printf("'' (str=%p title=%p sp=%d ps=%p pt=%p so=%p eo=%p pp=%p q=%p)\n",str,title,sp,ps,pt,so,eo,pp,q);
break;
default: bad:
if(main_options['v']) fprintf(stderr,"Invalid character (0x%02X) in string in LevelTable definition\n",ps[-1]);
return 64;
}
}
notfound: stack[sp++]=NVALUE(0); return sp;
}
|