Given that @optype and @specialsv_name are hard coded tables, it seems
[p5sagit/p5-mst-13.2.git] / parser.h
index 847e50a..1df14b4 100644 (file)
--- a/parser.h
+++ b/parser.h
@@ -51,6 +51,7 @@ typedef struct yy_parser {
     OP         *lex_op;        /* extra info to pass back on op */
     SV         *lex_repl;      /* runtime replacement from s/// */
     U16                lex_inwhat;     /* what kind of quoting are we in */
+    OPCODE     last_lop_op;    /* last list operator */
     I32                lex_starts;     /* how many interps done on level */
     SV         *lex_stuff;     /* runtime pattern from m// or s/// */
     I32                multi_start;    /* 1st line of multi-line string */
@@ -61,6 +62,14 @@ typedef struct yy_parser {
     SUBLEXINFO sublex_info;
     SV         *linestr;       /* current chunk of src text */
     line_t     copline;        /* current line number */
+    char       *bufptr;        
+    char       *oldbufptr;     
+    char       *oldoldbufptr;  
+    char       *bufend;        
+    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 */
+    U8         lex_state;      /* next token is determined */
 
 #ifdef PERL_MAD
     SV         *endwhite;
@@ -75,7 +84,16 @@ typedef struct yy_parser {
     SV         *thisstuff;
     SV         *thistoken;
     SV         *thiswhite;
+
+/* What we know when we're in LEX_KNOWNEXT state. */
+    NEXTTOKE   nexttoke[5];    /* value of next token, if any */
+    I32                curforce;
+#else
+    YYSTYPE    nextval[5];     /* value of next token, if any */
+    I32                nexttype[5];    /* type of next token */
+    I32                nexttoke;
 #endif
+
 } yy_parser;