Project:
Perl
Code Location:
git://perl5.git.perl.org/perl.gitmaint-5.12
/
Outline
-
>
S
?
- V YYSTYPE val
- V short state
- V I32 savestack_ix
- V CV compcv
- V char name
- > T yy_stack_frame
-
>
S
yy_parser
- V yy_parser old_parser
- V YYSTYPE yylval
- V int yychar
- V int yyerrstatus
- V int stack_size
- V int yylen
- V yy_stack_frame stack
- V yy_stack_frame ps
- V I32 lex_brackets
- V I32 lex_casemods
- V char lex_brackstack
- V char lex_casestack
- V U8 lex_defer
- V bool lex_dojoin
- V U8 lex_expect
- V U8 expect
- V I32 lex_formbrack
- V OP lex_inpat
- V OP lex_op
- V SV lex_repl
- V U16 lex_inwhat
- V OPCODE last_lop_op
- V I32 lex_starts
- V SV lex_stuff
- V I32 multi_start
- V I32 multi_end
- V char multi_open
- V char multi_close
- V char pending_ident
- V bool preambled
- V SUBLEXINFO sublex_info
- V SV linestr
- V char bufptr
- V char oldbufptr
- V char oldoldbufptr
- V char bufend
- V char linestart
- V char last_uni
- V char last_lop
- V line_t copline
- V U16 in_my
- V U8 lex_state
- V U8 error_count
- V HV in_my_stash
- V PerlIO rsfp
- V AV rsfp_filters
- V SV endwhite
- V I32 faketokens
- V I32 lasttoke
- V SV nextwhite
- V I32 realtokenstart
- V SV skipwhite
- V SV thisclose
- V MADPROP thismad
- V SV thisopen
- V SV thisstuff
- V SV thistoken
- V SV thiswhite
- V NEXTTOKE nexttoke
- V I32 curforce
- V YYSTYPE nextval
- V I32 nexttype
- V I32 nexttoke
- V COP saved_curcop
- V char tokenbuf
- > T yy_parser
parser.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/* parser.h * * Copyright (c) 2006, 2007, Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * * This file defines the layout of the parser object used by the parser * and lexer (perly.c, toke,c). */ #define YYEMPTY (-2) typedef struct { YYSTYPE val; /* semantic value */ short state; I32 savestack_ix; /* size of savestack at this state */ CV *compcv; /* value of PL_compcv when this value was created */ #ifdef DEBUGGING const char *name; /* token/rule name for -Dpv */ #endif } yy_stack_frame; typedef struct yy_parser { /* parser state */ struct yy_parser *old_parser; /* previous value of PL_parser */ YYSTYPE yylval; /* value of lookahead symbol, set by yylex() */ int yychar; /* The lookahead symbol. */ /* 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 *ps; /* current stack frame */ /* lexer state */ I32 lex_brackets; /* bracket count */ I32 lex_casemods; /* casemod count */ char *lex_brackstack;/* what kind of brackets to pop */ char *lex_casestack; /* what kind of case mods in effect */ 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 */ I32 multi_end; /* last line of multi-line string */ char multi_open; /* delimiter of said string */ char multi_close; /* delimiter of said string */ char pending_ident; /* pending identifier lookup */ bool preambled; /* XXX I32 space */ SUBLEXINFO sublex_info; SV *linestr; /* current chunk of src text */ 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 */ line_t copline; /* current line number */ 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 */ 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 */ #ifdef PERL_MAD SV *endwhite; I32 faketokens; I32 lasttoke; SV *nextwhite; I32 realtokenstart; SV *skipwhite; SV *thisclose; MADPROP * thismad; SV *thisopen; 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 COP *saved_curcop; /* the previous PL_curcop */ char tokenbuf[256]; } yy_parser; /* flags for lexer API */ #define LEX_STUFF_UTF8 0x00000001 #define LEX_KEEP_PREVIOUS 0x00000002 /* * Local variables: * c-indentation-style: bsd * c-basic-offset: 4 * indent-tabs-mode: t * End: * * ex: set ts=8 sts=4 sw=4 noet: */
