This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perlapi: Remove per-thread section; move to real scns
[perl5.git] / parser.h
index 73d8790..abffd25 100644 (file)
--- a/parser.h
+++ b/parser.h
@@ -42,13 +42,14 @@ 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 */
+    int                    yylen;      /* length of active reduction */
 
     /* lexer state */
 
+    I32                lex_formbrack;  /* bracket count at outer format level */
     I32                lex_brackets;   /* square and curly bracket count */
     I32                lex_casemods;   /* casemod count */
     char       *lex_brackstack;/* what kind of brackets to pop */
@@ -58,7 +59,8 @@ typedef struct yy_parser {
                                   1 = @{...}  2 = ->@ */
     U8         expect;         /* how to interpret ambiguous tokens */
     bool       preambled;
-    I32                lex_formbrack;  /* bracket count at outer format level */
+    bool        sub_no_recover; /* can't recover from a sublex error */
+    U8         sub_error_count; /* the number of errors before sublexing */
     OP         *lex_inpat;     /* in pattern $) and $| are special */
     OP         *lex_op;        /* extra info to pass back on op */
     SV         *lex_repl;      /* runtime replacement from s/// */
@@ -110,10 +112,13 @@ typedef struct yy_parser {
     line_t     herelines;      /* number of lines in here-doc */
     line_t     preambling;     /* line # when processing $ENV{PERL5DB} */
 
-    /* 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 */
+    /* these are valid while parsing a subroutine signature */
+    UV          sig_elems;      /* number of signature elements seen so far */
+    UV          sig_optelems;   /* number of optional signature elems seen */
     char        sig_slurpy;     /* the sigil of the slurpy var (or null) */
+    bool        sig_seen;       /* the currently parsing sub has a signature */
+
+    bool        recheck_utf8_validity;
 
     PERL_BITFIELD16    in_pod:1;      /* lexer is within a =pod section */
     PERL_BITFIELD16    filtered:1;    /* source filters in evalbytes */