Given that @optype and @specialsv_name are hard coded tables, it seems
[p5sagit/p5-mst-13.2.git] / parser.h
index f0a1710..1df14b4 100644 (file)
--- a/parser.h
+++ b/parser.h
@@ -45,11 +45,13 @@ typedef struct yy_parser {
     U8         lex_defer;      /* state after determined token */
     bool       lex_dojoin;     /* doing an array interpolation */
     U8         lex_expect;     /* expect after determined token */
+    U8         expect;         /* how to interpret ambiguous tokens */
     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 */
     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 */
@@ -59,6 +61,15 @@ typedef struct yy_parser {
     bool       preambled;
     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;
@@ -73,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;