struct yy_lexshared *ls_prev;
SV *ls_linestr; /* mirrors PL_parser->linestr */
char *ls_bufptr; /* mirrors PL_parser->bufptr */
- line_t herelines; /* number of lines in here-doc */
+ char *re_eval_start; /* start of "(?{..." text */
+ SV *re_eval_str; /* "(?{...})" text */
} LEXSHARED;
typedef struct yy_parser {
char *lex_brackstack;/* what kind of brackets to pop */
char *lex_casestack; /* what kind of case mods in effect */
U8 lex_defer; /* state after determined token */
- bool lex_dojoin; /* doing an array interpolation */
+ U8 lex_dojoin; /* doing an array interpolation
+ 1 = @{...} 2 = ->@ */
U8 lex_expect; /* expect after determined token */
U8 expect; /* how to interpret ambiguous tokens */
I32 lex_formbrack; /* bracket count at outer format level */
I32 multi_end; /* last line of multi-line string */
char multi_open; /* delimiter of said string */
char multi_close; /* delimiter of said string */
- char pending_ident; /* pending identifier lookup */
bool preambled;
+ bool lex_re_reparsing; /* we're doing G_RE_REPARSING */
I32 lex_allbrackets;/* (), [], {}, ?: bracket count */
SUBLEXINFO sublex_info;
LEXSHARED *lex_shared;
COP *saved_curcop; /* the previous PL_curcop */
char tokenbuf[256];
-
+ line_t herelines; /* number of lines in here-doc */
+ line_t preambling; /* line # when processing $ENV{PERL5DB} */
U8 lex_fakeeof; /* precedence at which to fake EOF */
U8 lex_flags;
PERL_BITFIELD16 in_pod:1; /* lexer is within a =pod section */
PERL_BITFIELD16 filtered:1; /* source filters in evalbytes */
+ PERL_BITFIELD16 saw_infix_sigil:1; /* saw & or * or % operator */
} yy_parser;
/* flags for lexer API */