X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/6745174b5616843ee57f0b733bd056bfab42f30f..a1c583cae893f7b865a4436117411a5c84ed09c3:/parser.h diff --git a/parser.h b/parser.h index 35f172e..4187e0a 100644 --- 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 */ @@ -56,8 +56,8 @@ typedef struct yy_parser { U8 lex_defer; /* state after determined token */ U8 lex_dojoin; /* doing an array interpolation 1 = @{...} 2 = ->@ */ - U8 lex_expect; /* UNUSED */ U8 expect; /* how to interpret ambiguous tokens */ + bool preambled; I32 lex_formbrack; /* bracket count at outer format level */ OP *lex_inpat; /* in pattern $) and $| are special */ OP *lex_op; /* extra info to pass back on op */ @@ -70,10 +70,12 @@ typedef struct yy_parser { I32 multi_end; /* last line of multi-line string */ UV multi_open; /* delimiter of said string */ UV multi_close; /* delimiter of said string */ - bool preambled; bool lex_re_reparsing; /* we're doing G_RE_REPARSING */ + U8 lex_super_state;/* lexer state to save */ + U16 lex_sub_inwhat; /* "lex_inwhat" to use in sublex_push */ I32 lex_allbrackets;/* (), [], {}, ?: bracket count */ - SUBLEXINFO sublex_info; + OP *lex_sub_op; /* current op in y/// or pattern */ + SV *lex_sub_repl; /* repl of s/// used in sublex_push */ LEXSHARED *lex_shared; SV *linestr; /* current chunk of src text */ char *bufptr; /* carries the cursor (current parsing @@ -96,18 +98,25 @@ typedef struct yy_parser { 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 */ - U32 nexttoke; - + 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 */