This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for signatures/attribute order flip
[perl5.git] / parser.h
index 8be2eaa..4187e0a 100644 (file)
--- a/parser.h
+++ b/parser.h
@@ -42,9 +42,9 @@ typedef struct yy_parser {
     /* Number of tokens to shift before error messages enabled.  */
     int                    yyerrstatus;
 
-    int                    stack_size;
     int                    yylen;      /* length of active reduction */
     yy_stack_frame  *stack;    /* base of stack */
+    yy_stack_frame  *stack_max1;/* (top-1)th element of allocated stack */
     yy_stack_frame  *ps;       /* current stack frame */
 
     /* lexer state */
@@ -95,30 +95,32 @@ typedef struct yy_parser {
     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 */
-               /* 16-BIT HOLE */
     HV         *in_my_stash;   /* declared class of this "my" declaration */
     PerlIO     *rsfp;          /* current source file pointer */
     AV         *rsfp_filters;  /* holds chain of active source filters */
-    U8         form_lex_state; /* remember lex_state when parsing fmt */
 
     YYSTYPE    nextval[5];     /* value of next token, if any */
     I32                nexttype[5];    /* type of next token */
     U8         nexttoke;
-
+    U8         form_lex_state; /* remember lex_state when parsing fmt */
+    U8         lex_fakeeof;    /* precedence at which to fake EOF */
+    U8         lex_flags;
     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;
+
+    /* these are valid while parsing a subroutine signature */
+    IV          sig_elems;      /* number of signature elements seen so far */
+    IV          sig_optelems;   /* number of optional signature elems seen */
+    char        sig_slurpy;     /* the sigil of the slurpy var (or null) */
+
+    bool        recheck_utf8_validity;
+
     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 */
     PERL_BITFIELD16    parsed_sub:1;  /* last thing parsed was a sub */
-    /* these are valid whiling parsing a subroutine signature */
-    IV          sig_elems;      /* number of signature elements seen so far */
-    IV          sig_optelems;   /* number of optional signature elems seen */
-    char        sig_slurpy;     /* the sigil of the slurpy var (or null) */
 } yy_parser;
 
 /* flags for lexer API */