Lines Matching refs:p
202 static const char *classend (MatchState *ms, const char *p) { in classend() argument
203 switch (*p++) { in classend()
205 if (*p == '\0') in classend()
207 return p+1; in classend()
210 if (*p == '^') p++; in classend()
212 if (*p == '\0') in classend()
214 if (*(p++) == L_ESC && *p != '\0') in classend()
215 p++; /* skip escapes (e.g. `%]') */ in classend()
216 } while (*p != ']'); in classend()
217 return p+1; in classend()
220 return p; in classend()
245 static int matchbracketclass (int c, const char *p, const char *ec) { in matchbracketclass() argument
247 if (*(p+1) == '^') { in matchbracketclass()
249 p++; /* skip the `^' */ in matchbracketclass()
251 while (++p < ec) { in matchbracketclass()
252 if (*p == L_ESC) { in matchbracketclass()
253 p++; in matchbracketclass()
254 if (match_class(c, uchar(*p))) in matchbracketclass()
257 else if ((*(p+1) == '-') && (p+2 < ec)) { in matchbracketclass()
258 p+=2; in matchbracketclass()
259 if (uchar(*(p-2)) <= c && c <= uchar(*p)) in matchbracketclass()
262 else if (uchar(*p) == c) return sig; in matchbracketclass()
268 static int singlematch (int c, const char *p, const char *ep) { in singlematch() argument
269 switch (*p) { in singlematch()
271 case L_ESC: return match_class(c, uchar(*(p+1))); in singlematch()
272 case '[': return matchbracketclass(c, p, ep-1); in singlematch()
273 default: return (uchar(*p) == c); in singlematch()
278 static const char *match (MatchState *ms, const char *s, const char *p);
282 const char *p) { in matchbalance() argument
283 if (*p == 0 || *(p+1) == 0) in matchbalance()
285 if (*s != *p) return NULL; in matchbalance()
287 int b = *p; in matchbalance()
288 int e = *(p+1); in matchbalance()
302 const char *p, const char *ep) { in max_expand() argument
304 while ((s+i)<ms->src_end && singlematch(uchar(*(s+i)), p, ep)) in max_expand()
317 const char *p, const char *ep) { in min_expand() argument
322 else if (s<ms->src_end && singlematch(uchar(*s), p, ep)) in min_expand()
330 const char *p, int what) { in start_capture() argument
337 if ((res=match(ms, s, p)) == NULL) /* match failed? */ in start_capture()
344 const char *p) { in end_capture() argument
348 if ((res = match(ms, s, p)) == NULL) /* match failed? */ in end_capture()
365 static const char *match (MatchState *ms, const char *s, const char *p) { in match() argument
367 switch (*p) { in match()
369 if (*(p+1) == ')') /* position capture? */ in match()
370 return start_capture(ms, s, p+2, CAP_POSITION); in match()
372 return start_capture(ms, s, p+1, CAP_UNFINISHED); in match()
375 return end_capture(ms, s, p+1); in match()
378 switch (*(p+1)) { in match()
380 s = matchbalance(ms, s, p+2); in match()
382 p+=4; goto init; /* else return match(ms, s, p+4); */ in match()
386 p += 2; in match()
387 if (*p != '[') in match()
390 ep = classend(ms, p); /* points to what is next */ in match()
392 if (matchbracketclass(uchar(previous), p, ep-1) || in match()
393 !matchbracketclass(uchar(*s), p, ep-1)) return NULL; in match()
394 p=ep; goto init; /* else return match(ms, s, ep); */ in match()
397 if (isdigit(uchar(*(p+1)))) { /* capture results (%0-%9)? */ in match()
398 s = match_capture(ms, s, uchar(*(p+1))); in match()
400 p+=2; goto init; /* else return match(ms, s, p+2) */ in match()
410 if (*(p+1) == '\0') /* is the `$' the last char in pattern? */ in match()
415 const char *ep = classend(ms, p); /* points to what is next */ in match()
416 int m = s<ms->src_end && singlematch(uchar(*s), p, ep); in match()
422 p=ep+1; goto init; /* else return match(ms, s, ep+1); */ in match()
425 return max_expand(ms, s, p, ep); in match()
428 return (m ? max_expand(ms, s+1, p, ep) : NULL); in match()
431 return min_expand(ms, s, p, ep); in match()
435 s++; p=ep; goto init; /* else return match(ms, s+1, ep); */ in match()
498 const char *p = luaL_checklstring(L, 2, &l2); in str_find_aux() local
503 strpbrk(p, SPECIALS) == NULL)) { /* or no special characters? */ in str_find_aux()
505 const char *s2 = lmemfind(s+init, l1-init, p, l2); in str_find_aux()
514 int anchor = (*p == '^') ? (p++, 1) : 0; in str_find_aux()
522 if ((res=match(&ms, s1, p)) != NULL) { in str_find_aux()
552 const char *p = lua_tostring(L, lua_upvalueindex(2)); in gmatch_aux() local
562 if ((e = match(&ms, src, p)) != NULL) { in gmatch_aux()
647 const char *p = luaL_checkstring(L, 2); in str_gsub() local
650 int anchor = (*p == '^') ? (p++, 1) : 0; in str_gsub()
664 e = match(&ms, src, p); in str_gsub()
726 const char *p = strfrmt; in scanformat() local
727 while (*p != '\0' && strchr(FLAGS, *p) != NULL) p++; /* skip flags */ in scanformat()
728 if ((size_t)(p - strfrmt) >= sizeof(FLAGS)) in scanformat()
730 if (isdigit(uchar(*p))) p++; /* skip width */ in scanformat()
731 if (isdigit(uchar(*p))) p++; /* (2 digits at most) */ in scanformat()
732 if (*p == '.') { in scanformat()
733 p++; in scanformat()
734 if (isdigit(uchar(*p))) p++; /* skip precision */ in scanformat()
735 if (isdigit(uchar(*p))) p++; /* (2 digits at most) */ in scanformat()
737 if (isdigit(uchar(*p))) in scanformat()
740 strncpy(form, strfrmt, p - strfrmt + 1); in scanformat()
741 form += p - strfrmt + 1; in scanformat()
743 return p; in scanformat()