This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
t/base/lex.t: Test pyoq with comment before delim
[perl5.git] / parser.h
index 0e5a8e3..dc5e89d 100644 (file)
--- a/parser.h
+++ b/parser.h
@@ -25,6 +25,10 @@ typedef struct {
    ing scopes. */
 typedef struct yy_lexshared {
     struct yy_lexshared        *ls_prev;
+    SV                 *ls_linestr;    /* mirrors PL_parser->linestr */
+    char               *ls_bufptr;     /* mirrors PL_parser->bufptr */
+    char               *re_eval_start; /* start of "(?{..." text */
+    SV                 *re_eval_str;   /* "(?{...})" text */
     line_t             herelines;      /* number of lines in here-doc */
 } LEXSHARED;
 
@@ -66,8 +70,8 @@ typedef struct yy_parser {
     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;
@@ -81,7 +85,11 @@ typedef struct yy_parser {
     char       *linestart;     /* beginning of most recently read line */
     char       *last_uni;      /* position of last named-unary op */
     char       *last_lop;      /* position of last list operator */
-    line_t     copline;        /* current line number */
+    /* copline is used to pass a specific line number to newSTATEOP.  It
+       is a one-time line number, as newSTATEOP invalidates it (sets it to
+       NOLINE) after using it.  The purpose of this is to report line num-
+       bers in multiline constructs using the number of the first line. */
+    line_t     copline;
     U16                in_my;          /* we're compiling a "my"/"our" declaration */
     U8         lex_state;      /* next token is determined */
     U8         error_count;    /* how many compile errors so far, max 10 */
@@ -120,6 +128,7 @@ typedef struct yy_parser {
     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 */