if (kw_active_len <= kw_len) {
return FALSE;
}
- for (p = kw_active; p < kw_active + kw_active_len - kw_len; p++) {
+ for (
+ p = kw_active;
+ (p = strchr(p, *kw_ptr)) &&
+ p < kw_active + kw_active_len - kw_len;
+ p++
+ ) {
if (
(p == kw_active || p[-1] == ' ') &&
p[kw_len] == ' ' &&
for (;;) {
c = lex_peek_unichar(0);
- if (c && strchr("$@%", c)) {
+ if (c == '$' || c == '@' || c == '%') {
sv_catpvf(params, "%c", (int)c);
lex_read_unichar(0);
lex_read_space(0);
sv_catpvs(gen, ")=@_;");
}
- /* fprintf(stderr, "! [%.*s]\n", (int)(PL_bufend - PL_bufptr), PL_bufptr); */
-
/* named sub */
if (saw_name) {
+ /* fprintf(stderr, "! [%.*s]\n", (int)(PL_bufend - PL_bufptr), PL_bufptr); */
lex_stuff_sv(gen, SvUTF8(gen));
*pop = parse_barestmt(0);
return KEYWORD_PLUGIN_STMT;
/* anon sub */
sv_catpvs(gen, "BEGIN{" MY_PKG "::_fini}");
+ /* fprintf(stderr, "!> [%.*s]\n", (int)(PL_bufend - PL_bufptr), PL_bufptr); */
lex_stuff_sv(gen, SvUTF8(gen));
*pop = parse_arithexpr(0);
s = PL_parser->bufptr;
croak("%s: internal error: expected '}', found '%c'", MY_PKG, *s);
}
lex_unstuff(s + 1);
+ /* fprintf(stderr, "!< [%.*s]\n", (int)(PL_bufend - PL_bufptr), PL_bufptr); */
return KEYWORD_PLUGIN_EXPR;
}
static int magic_free(pTHX_ SV *sv, MAGIC *mg) {
lex_stuff_pvn("}", 1, 0);
+ /* fprintf(stderr, "!~ [%.*s]\n", (int)(PL_bufend - PL_bufptr), PL_bufptr); */
return 0;
}
BOOT:
WARNINGS_ENABLE {
HV *const stash = gv_stashpvs(MY_PKG, GV_ADD);
+ /**/
newCONSTSUB(stash, "FLAG_NAME_OPTIONAL", newSViv(FLAG_NAME_OPTIONAL));
newCONSTSUB(stash, "FLAG_NAME_REQUIRED", newSViv(FLAG_NAME_REQUIRED));
newCONSTSUB(stash, "FLAG_NAME_PROHIBITED", newSViv(FLAG_NAME_PROHIBITED));
newCONSTSUB(stash, "HINTK_NAME_", newSVpvs(HINTK_NAME_));
newCONSTSUB(stash, "HINTK_SHIFT_", newSVpvs(HINTK_SHIFT_));
newCONSTSUB(stash, "HINTK_ATTRS_", newSVpvs(HINTK_ATTRS_));
- newCONSTSUB(stash, "SHIFT_NAME_LIMIT", newSViv(sizeof ((Spec *)NULL)->shift));
+ /**/
next_keyword_plugin = PL_keyword_plugin;
PL_keyword_plugin = my_keyword_plugin;
} WARNINGS_RESET