1 | /* File created from flex.skl via mkskel.sh */
|
---|
2 |
|
---|
3 | #include "flexdef.h"
|
---|
4 |
|
---|
5 | const char *skel[] = {
|
---|
6 | "%# -*-C-*- vi: set ft=c:",
|
---|
7 | "%# This file is processed in several stages.",
|
---|
8 | "%# Here are the stages, as best as I can describe:",
|
---|
9 | "%#",
|
---|
10 | "%# 1. flex.skl is processed through GNU m4 during the",
|
---|
11 | "%# pre-compilation stage of flex. Only macros starting",
|
---|
12 | "%# with `m4_' are processed, and quoting is normal.",
|
---|
13 | "%#",
|
---|
14 | "%# 2. The preprocessed skeleton is translated verbatim into a",
|
---|
15 | "%# C array, saved as \"skel.c\" and compiled into the flex binary.",
|
---|
16 | "%#",
|
---|
17 | "%# 3. At runtime, the skeleton is generated and filtered (again)",
|
---|
18 | "%# through m4. Macros beginning with `m4_' will be processed.",
|
---|
19 | "%# The quoting is \"[[\" and \"]]\" so we don't interfere with",
|
---|
20 | "%# user code.",
|
---|
21 | "%# ",
|
---|
22 | "%# All generate macros for the m4 stage contain the text \"m4\" or \"M4\"",
|
---|
23 | "%# in them. This is to distinguish them from CPP macros.",
|
---|
24 | "%# The exception to this rule is YY_G, which is an m4 macro, ",
|
---|
25 | "%# but it needs to be remain short because it is used everywhere.",
|
---|
26 | "%#",
|
---|
27 | "/* A lexical scanner generated by flex */",
|
---|
28 | "",
|
---|
29 | "%# Macros for preproc stage.",
|
---|
30 | "",
|
---|
31 | "",
|
---|
32 | "%# Macros for runtime processing stage.",
|
---|
33 | "m4_changecom",
|
---|
34 | "m4_changequote",
|
---|
35 | "m4_changequote([[, ]])",
|
---|
36 | "",
|
---|
37 | "%# ",
|
---|
38 | "%# Lines in this skeleton starting with a \"%\" character are \"control lines\"",
|
---|
39 | "%# and affect the generation of the scanner. The possible control codes are",
|
---|
40 | "%# listed and processed in misc.c.",
|
---|
41 | "%#",
|
---|
42 | "%# %# - A comment. The current line is omitted from the generated scanner.",
|
---|
43 | "%# %if-c++-only - The following lines are printed for C++ scanners ONLY.",
|
---|
44 | "%# %if-c-only - The following lines are NOT printed for C++ scanners.",
|
---|
45 | "%# %if-c-or-c++ - The following lines are printed in BOTH C and C++ scanners.",
|
---|
46 | "%# %if-reentrant - Print for reentrant scanners.(push)",
|
---|
47 | "%# %if-not-reentrant - Print for non-reentrant scanners. (push)",
|
---|
48 | "%# %if-bison-bridge - Print for bison-bridge. (push)",
|
---|
49 | "%# %if-not-bison-bridge - Print for non-bison-bridge. (push)",
|
---|
50 | "%# %endif - pop from the previous if code.",
|
---|
51 | "%# %% - A stop-point, where code is inserted by flex.",
|
---|
52 | "%# Each stop-point is numbered here and also in the code generator.",
|
---|
53 | "%# (See gen.c, etc. for details.)",
|
---|
54 | "%# %not-for-header - Begin code that should NOT appear in a \".h\" file.",
|
---|
55 | "%# %ok-for-header - %c and %e are used for building a header file.",
|
---|
56 | "%# %if-tables-serialization",
|
---|
57 | "%#",
|
---|
58 | "%# All control-lines EXCEPT comment lines (\"%#\") will be inserted into",
|
---|
59 | "%# the generated scanner as a C-style comment. This is to aid those who",
|
---|
60 | "%# edit the skeleton.",
|
---|
61 | "%#",
|
---|
62 | "#define FLEX_SCANNER",
|
---|
63 | "#define YY_FLEX_MAJOR_VERSION 2",
|
---|
64 | "#define YY_FLEX_MINOR_VERSION 5",
|
---|
65 | "#define YY_FLEX_SUBMINOR_VERSION 33",
|
---|
66 | "#if YY_FLEX_SUBMINOR_VERSION > 0",
|
---|
67 | "#define FLEX_BETA",
|
---|
68 | "#endif",
|
---|
69 | "",
|
---|
70 | "%# Some negated symbols",
|
---|
71 | "m4_ifdef( [[M4_YY_IN_HEADER]], , [[m4_define([[M4_YY_NOT_IN_HEADER]], [[]])]])",
|
---|
72 | "m4_ifdef( [[M4_YY_REENTRANT]], , [[m4_define([[M4_YY_NOT_REENTRANT]], [[]])]])",
|
---|
73 | "",
|
---|
74 | "%# This is the m4 way to say \"(stack_used || is_reentrant)",
|
---|
75 | "m4_ifdef( [[M4_YY_STACK_USED]], [[m4_define([[M4_YY_HAS_START_STACK_VARS]])]])",
|
---|
76 | "m4_ifdef( [[M4_YY_REENTRANT]], [[m4_define([[M4_YY_HAS_START_STACK_VARS]])]])",
|
---|
77 | "",
|
---|
78 | "%# Prefixes.",
|
---|
79 | "%# The complexity here is necessary so that m4 preserves",
|
---|
80 | "%# the argument lists to each C function.",
|
---|
81 | "",
|
---|
82 | "",
|
---|
83 | "m4_ifdef( [[M4_YY_PREFIX]],, [[m4_define([[M4_YY_PREFIX]], [[yy]])]])",
|
---|
84 | "",
|
---|
85 | "",
|
---|
86 | "",
|
---|
87 | "%if-c++-only",
|
---|
88 | " /* The c++ scanner is a mess. The FlexLexer.h header file relies on the",
|
---|
89 | " * following macro. This is required in order to pass the c++-multiple-scanners",
|
---|
90 | " * test in the regression suite. We get reports that it breaks inheritance.",
|
---|
91 | " * We will address this in a future release of flex, or omit the C++ scanner",
|
---|
92 | " * altogether.",
|
---|
93 | " */",
|
---|
94 | " #define yyFlexLexer M4_YY_PREFIX[[FlexLexer]]",
|
---|
95 | "%endif",
|
---|
96 | "",
|
---|
97 | "%if-c-only",
|
---|
98 | " m4_define(yy[[_create_buffer]], [[M4_YY_PREFIX[[_create_buffer]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
99 | " m4_define(yy[[_delete_buffer]], [[M4_YY_PREFIX[[_delete_buffer]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
100 | " m4_define(yy[[_scan_buffer]], [[M4_YY_PREFIX[[_scan_buffer]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
101 | " m4_define(yy[[_scan_string]], [[M4_YY_PREFIX[[_scan_string]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
102 | " m4_define(yy[[_scan_bytes]], [[M4_YY_PREFIX[[_scan_bytes]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
103 | " m4_define(yy[[_init_buffer]], [[M4_YY_PREFIX[[_init_buffer]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
104 | " m4_define(yy[[_flush_buffer]], [[M4_YY_PREFIX[[_flush_buffer]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
105 | " m4_define(yy[[_load_buffer_state]], [[M4_YY_PREFIX[[_load_buffer_state]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
106 | " m4_define(yy[[_switch_to_buffer]], [[M4_YY_PREFIX[[_switch_to_buffer]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
107 | " m4_define(yy[[push_buffer_state]], [[M4_YY_PREFIX[[push_buffer_state]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
108 | " m4_define(yy[[pop_buffer_state]], [[M4_YY_PREFIX[[pop_buffer_state]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
109 | " m4_define(yy[[ensure_buffer_stack]], [[M4_YY_PREFIX[[ensure_buffer_stack]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
110 | " m4_define(yy[[lex]], [[M4_YY_PREFIX[[lex]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
111 | " m4_define(yy[[restart]], [[M4_YY_PREFIX[[restart]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
112 | " m4_define(yy[[lex_init]], [[M4_YY_PREFIX[[lex_init]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
113 | " m4_define(yy[[lex_destroy]], [[M4_YY_PREFIX[[lex_destroy]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
114 | " m4_define(yy[[get_debug]], [[M4_YY_PREFIX[[get_debug]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
115 | " m4_define(yy[[set_debug]], [[M4_YY_PREFIX[[set_debug]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
116 | " m4_define(yy[[get_extra]], [[M4_YY_PREFIX[[get_extra]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
117 | " m4_define(yy[[set_extra]], [[M4_YY_PREFIX[[set_extra]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
118 | " m4_define(yy[[get_in]], [[M4_YY_PREFIX[[get_in]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
119 | " m4_define(yy[[set_in]], [[M4_YY_PREFIX[[set_in]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
120 | " m4_define(yy[[get_out]], [[M4_YY_PREFIX[[get_out]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
121 | " m4_define(yy[[set_out]], [[M4_YY_PREFIX[[set_out]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
122 | " m4_define(yy[[get_leng]], [[M4_YY_PREFIX[[get_leng]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
123 | " m4_define(yy[[get_text]], [[M4_YY_PREFIX[[get_text]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
124 | " m4_define(yy[[get_lineno]], [[M4_YY_PREFIX[[get_lineno]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
125 | " m4_define(yy[[set_lineno]], [[M4_YY_PREFIX[[set_lineno]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
126 | " m4_ifdef( [[M4_YY_REENTRANT]],",
|
---|
127 | " [[",
|
---|
128 | " m4_define(yy[[get_column]], [[M4_YY_PREFIX[[get_column]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
129 | " m4_define(yy[[set_column]], [[M4_YY_PREFIX[[set_column]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
130 | " ]])",
|
---|
131 | " m4_define(yy[[wrap]], [[M4_YY_PREFIX[[wrap]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
132 | "%endif",
|
---|
133 | "",
|
---|
134 | "m4_ifdef( [[M4_YY_BISON_LVAL]],",
|
---|
135 | "[[",
|
---|
136 | " m4_define(yy[[get_lval]], [[M4_YY_PREFIX[[get_lval]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
137 | " m4_define(yy[[set_lval]], [[M4_YY_PREFIX[[set_lval]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
138 | "]])",
|
---|
139 | "",
|
---|
140 | "m4_ifdef( [[<M4_YY_BISON_LLOC>]],",
|
---|
141 | "[[",
|
---|
142 | " m4_define(yy[[get_lloc]], [[M4_YY_PREFIX[[get_lloc]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
143 | " m4_define(yy[[set_lloc]], [[M4_YY_PREFIX[[set_lloc]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
144 | "]])",
|
---|
145 | "",
|
---|
146 | "",
|
---|
147 | " m4_define(yy[[alloc]], [[M4_YY_PREFIX[[alloc]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
148 | " m4_define(yy[[realloc]], [[M4_YY_PREFIX[[realloc]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
149 | " m4_define(yy[[free]], [[M4_YY_PREFIX[[free]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
150 | "",
|
---|
151 | "%if-c-only",
|
---|
152 | "m4_ifdef( [[M4_YY_NOT_REENTRANT]],",
|
---|
153 | "[[",
|
---|
154 | " m4_define(yy[[text]], [[M4_YY_PREFIX[[text]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
155 | " m4_define(yy[[leng]], [[M4_YY_PREFIX[[leng]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
156 | " m4_define(yy[[in]], [[M4_YY_PREFIX[[in]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
157 | " m4_define(yy[[out]], [[M4_YY_PREFIX[[out]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
158 | " m4_define(yy[[_flex_debug]], [[M4_YY_PREFIX[[_flex_debug]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
159 | " m4_define(yy[[lineno]], [[M4_YY_PREFIX[[lineno]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
160 | "]])",
|
---|
161 | "%endif",
|
---|
162 | "",
|
---|
163 | "",
|
---|
164 | "m4_ifdef( [[M4_YY_TABLES_EXTERNAL]],",
|
---|
165 | "[[",
|
---|
166 | " m4_define(yy[[tables_fload]], [[M4_YY_PREFIX[[tables_fload]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
167 | " m4_define(yy[[tables_destroy]], [[M4_YY_PREFIX[[tables_destroy]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
168 | " m4_define(yy[[TABLES_NAME]], [[M4_YY_PREFIX[[TABLES_NAME]]m4_ifelse($#,0,,[[($@)]])]])",
|
---|
169 | "]])",
|
---|
170 | "",
|
---|
171 | "/* First, we deal with platform-specific or compiler-specific issues. */",
|
---|
172 | "",
|
---|
173 | "/* begin standard C headers. */",
|
---|
174 | "%if-c-only",
|
---|
175 | "#include <stdio.h>",
|
---|
176 | "#include <string.h>",
|
---|
177 | "#include <errno.h>",
|
---|
178 | "#include <stdlib.h>",
|
---|
179 | "%endif",
|
---|
180 | "",
|
---|
181 | "%if-tables-serialization",
|
---|
182 | "#include <sys/types.h>",
|
---|
183 | "#include <netinet/in.h>",
|
---|
184 | "%endif",
|
---|
185 | "/* end standard C headers. */",
|
---|
186 | "",
|
---|
187 | "%if-c-or-c++",
|
---|
188 | "/* flex integer type definitions */",
|
---|
189 | "",
|
---|
190 | "#ifndef FLEXINT_H",
|
---|
191 | "#define FLEXINT_H",
|
---|
192 | "",
|
---|
193 | "/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */",
|
---|
194 | "",
|
---|
195 | "#if __STDC_VERSION__ >= 199901L",
|
---|
196 | "",
|
---|
197 | "/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,",
|
---|
198 | " * if you want the limit (max/min) macros for int types. ",
|
---|
199 | " */",
|
---|
200 | "#ifndef __STDC_LIMIT_MACROS",
|
---|
201 | "#define __STDC_LIMIT_MACROS 1",
|
---|
202 | "#endif",
|
---|
203 | "",
|
---|
204 | "#include <inttypes.h>",
|
---|
205 | "typedef int8_t flex_int8_t;",
|
---|
206 | "typedef uint8_t flex_uint8_t;",
|
---|
207 | "typedef int16_t flex_int16_t;",
|
---|
208 | "typedef uint16_t flex_uint16_t;",
|
---|
209 | "typedef int32_t flex_int32_t;",
|
---|
210 | "typedef uint32_t flex_uint32_t;",
|
---|
211 | "#else",
|
---|
212 | "typedef signed char flex_int8_t;",
|
---|
213 | "typedef short int flex_int16_t;",
|
---|
214 | "typedef int flex_int32_t;",
|
---|
215 | "typedef unsigned char flex_uint8_t; ",
|
---|
216 | "typedef unsigned short int flex_uint16_t;",
|
---|
217 | "typedef unsigned int flex_uint32_t;",
|
---|
218 | "#endif /* ! C99 */",
|
---|
219 | "",
|
---|
220 | "/* Limits of integral types. */",
|
---|
221 | "#ifndef INT8_MIN",
|
---|
222 | "#define INT8_MIN (-128)",
|
---|
223 | "#endif",
|
---|
224 | "#ifndef INT16_MIN",
|
---|
225 | "#define INT16_MIN (-32767-1)",
|
---|
226 | "#endif",
|
---|
227 | "#ifndef INT32_MIN",
|
---|
228 | "#define INT32_MIN (-2147483647-1)",
|
---|
229 | "#endif",
|
---|
230 | "#ifndef INT8_MAX",
|
---|
231 | "#define INT8_MAX (127)",
|
---|
232 | "#endif",
|
---|
233 | "#ifndef INT16_MAX",
|
---|
234 | "#define INT16_MAX (32767)",
|
---|
235 | "#endif",
|
---|
236 | "#ifndef INT32_MAX",
|
---|
237 | "#define INT32_MAX (2147483647)",
|
---|
238 | "#endif",
|
---|
239 | "#ifndef UINT8_MAX",
|
---|
240 | "#define UINT8_MAX (255U)",
|
---|
241 | "#endif",
|
---|
242 | "#ifndef UINT16_MAX",
|
---|
243 | "#define UINT16_MAX (65535U)",
|
---|
244 | "#endif",
|
---|
245 | "#ifndef UINT32_MAX",
|
---|
246 | "#define UINT32_MAX (4294967295U)",
|
---|
247 | "#endif",
|
---|
248 | "",
|
---|
249 | "",
|
---|
250 | "#endif /* ! FLEXINT_H */",
|
---|
251 | "",
|
---|
252 | "%endif",
|
---|
253 | "",
|
---|
254 | "%if-c++-only",
|
---|
255 | "/* begin standard C++ headers. */",
|
---|
256 | "#include <iostream> ",
|
---|
257 | "#include <errno.h>",
|
---|
258 | "#include <cstdlib>",
|
---|
259 | "#include <cstring>",
|
---|
260 | "/* end standard C++ headers. */",
|
---|
261 | "%endif",
|
---|
262 | "",
|
---|
263 | "#ifdef __cplusplus",
|
---|
264 | "",
|
---|
265 | "/* The \"const\" storage-class-modifier is valid. */",
|
---|
266 | "#define YY_USE_CONST",
|
---|
267 | "",
|
---|
268 | "#else /* ! __cplusplus */",
|
---|
269 | "",
|
---|
270 | "#if __STDC__",
|
---|
271 | "",
|
---|
272 | "#define YY_USE_CONST",
|
---|
273 | "",
|
---|
274 | "#endif /* __STDC__ */",
|
---|
275 | "#endif /* ! __cplusplus */",
|
---|
276 | "",
|
---|
277 | "#ifdef YY_USE_CONST",
|
---|
278 | "#define yyconst const",
|
---|
279 | "#else",
|
---|
280 | "#define yyconst",
|
---|
281 | "#endif",
|
---|
282 | "",
|
---|
283 | "%# For compilers that can not handle prototypes.",
|
---|
284 | "%# e.g.,",
|
---|
285 | "%# The function prototype",
|
---|
286 | "%# int foo(int x, char* y);",
|
---|
287 | "%# ",
|
---|
288 | "%# ...should be written as",
|
---|
289 | "%# int foo M4_YY_PARAMS(int x, char* y);",
|
---|
290 | "%# ",
|
---|
291 | "%# ...which could possibly generate",
|
---|
292 | "%# int foo ();",
|
---|
293 | "%# ",
|
---|
294 | "m4_ifdef( [[M4_YY_NO_ANSI_FUNC_PROTOS]],",
|
---|
295 | "[[",
|
---|
296 | " m4_define( [[M4_YY_PARAMS]], [[()]])",
|
---|
297 | "]],",
|
---|
298 | "[[",
|
---|
299 | " m4_define( [[M4_YY_PARAMS]], [[($*)]])",
|
---|
300 | "]])",
|
---|
301 | "",
|
---|
302 | "%not-for-header",
|
---|
303 | "/* Returned upon end-of-file. */",
|
---|
304 | "#define YY_NULL 0",
|
---|
305 | "%ok-for-header",
|
---|
306 | "",
|
---|
307 | "%not-for-header",
|
---|
308 | "/* Promotes a possibly negative, possibly signed char to an unsigned",
|
---|
309 | " * integer for use as an array index. If the signed char is negative,",
|
---|
310 | " * we want to instead treat it as an 8-bit unsigned char, hence the",
|
---|
311 | " * double cast.",
|
---|
312 | " */",
|
---|
313 | "#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)",
|
---|
314 | "%ok-for-header",
|
---|
315 | "",
|
---|
316 | "",
|
---|
317 | "",
|
---|
318 | "%if-reentrant",
|
---|
319 | "",
|
---|
320 | "/* An opaque pointer. */",
|
---|
321 | "#ifndef YY_TYPEDEF_YY_SCANNER_T",
|
---|
322 | "#define YY_TYPEDEF_YY_SCANNER_T",
|
---|
323 | "typedef void* yyscan_t;",
|
---|
324 | "#endif",
|
---|
325 | "",
|
---|
326 | "%# Declare yyguts variable",
|
---|
327 | "m4_define( [[M4_YY_DECL_GUTS_VAR]], [[struct yyguts_t * yyg = (struct yyguts_t*)yyscanner]])",
|
---|
328 | "%# For use wherever a Global is accessed or assigned.",
|
---|
329 | "m4_define( [[YY_G]], [[yyg->$1]])",
|
---|
330 | "",
|
---|
331 | "%# For use in function prototypes to append the additional argument.",
|
---|
332 | "m4_define( [[M4_YY_PROTO_LAST_ARG]], [[, yyscan_t yyscanner]])",
|
---|
333 | "m4_define( [[M4_YY_PROTO_ONLY_ARG]], [[yyscan_t yyscanner]])",
|
---|
334 | "",
|
---|
335 | "%# For use in function definitions to append the additional argument.",
|
---|
336 | "m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]],",
|
---|
337 | "[[",
|
---|
338 | " m4_define( [[M4_YY_DEF_LAST_ARG]], [[, yyscanner]])",
|
---|
339 | " m4_define( [[M4_YY_DEF_ONLY_ARG]], [[yyscanner]])",
|
---|
340 | "]],",
|
---|
341 | "[[",
|
---|
342 | " m4_define( [[M4_YY_DEF_LAST_ARG]], [[, yyscan_t yyscanner]])",
|
---|
343 | " m4_define( [[M4_YY_DEF_ONLY_ARG]], [[yyscan_t yyscanner]])",
|
---|
344 | "]])",
|
---|
345 | "m4_define( [[M4_YY_DECL_LAST_ARG]], [[yyscan_t yyscanner;]])",
|
---|
346 | "",
|
---|
347 | "%# For use in function calls to pass the additional argument.",
|
---|
348 | "m4_define( [[M4_YY_CALL_LAST_ARG]], [[, yyscanner]])",
|
---|
349 | "m4_define( [[M4_YY_CALL_ONLY_ARG]], [[yyscanner]])",
|
---|
350 | "",
|
---|
351 | "%# For use in function documentation to adjust for additional argument.",
|
---|
352 | "m4_define( [[M4_YY_DOC_PARAM]], [[@param yyscanner The scanner object.]])",
|
---|
353 | "",
|
---|
354 | "/* For convenience, these vars (plus the bison vars far below)",
|
---|
355 | " are macros in the reentrant scanner. */",
|
---|
356 | "#define yyin YY_G(yyin_r)",
|
---|
357 | "#define yyout YY_G(yyout_r)",
|
---|
358 | "#define yyextra YY_G(yyextra_r)",
|
---|
359 | "#define yyleng YY_G(yyleng_r)",
|
---|
360 | "#define yytext YY_G(yytext_r)",
|
---|
361 | "#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)",
|
---|
362 | "#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)",
|
---|
363 | "#define yy_flex_debug YY_G(yy_flex_debug_r)",
|
---|
364 | "",
|
---|
365 | "m4_define( [[M4_YY_INCR_LINENO]],",
|
---|
366 | "[[ ",
|
---|
367 | " do{ yylineno++;",
|
---|
368 | " yycolumn=0;",
|
---|
369 | " }while(0)",
|
---|
370 | "]])",
|
---|
371 | "",
|
---|
372 | "int yylex_init M4_YY_PARAMS(yyscan_t* scanner);",
|
---|
373 | "%endif",
|
---|
374 | "",
|
---|
375 | "",
|
---|
376 | "",
|
---|
377 | "%if-not-reentrant",
|
---|
378 | "",
|
---|
379 | "m4_define( [[M4_YY_INCR_LINENO]],",
|
---|
380 | "[[ ",
|
---|
381 | " yylineno++;",
|
---|
382 | "]])",
|
---|
383 | "",
|
---|
384 | "%# Define these macros to be no-ops.",
|
---|
385 | "m4_define( [[M4_YY_DECL_GUTS_VAR]], [[m4_dnl]])",
|
---|
386 | "m4_define( [[YY_G]], [[($1)]])",
|
---|
387 | "m4_define( [[M4_YY_PROTO_LAST_ARG]])",
|
---|
388 | "m4_define( [[M4_YY_PROTO_ONLY_ARG]], [[void]])",
|
---|
389 | "m4_define( [[M4_YY_DEF_LAST_ARG]])",
|
---|
390 | "",
|
---|
391 | "m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]],",
|
---|
392 | "[[",
|
---|
393 | " m4_define( [[M4_YY_DEF_ONLY_ARG]])",
|
---|
394 | "]],",
|
---|
395 | "[[",
|
---|
396 | " m4_define( [[M4_YY_DEF_ONLY_ARG]], [[void]])",
|
---|
397 | "]])",
|
---|
398 | "m4_define([[M4_YY_DECL_LAST_ARG]])",
|
---|
399 | "m4_define([[M4_YY_CALL_LAST_ARG]])",
|
---|
400 | "m4_define([[M4_YY_CALL_ONLY_ARG]])",
|
---|
401 | "m4_define( [[M4_YY_DOC_PARAM]], [[]])",
|
---|
402 | "",
|
---|
403 | "%endif",
|
---|
404 | "",
|
---|
405 | "",
|
---|
406 | "m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]],",
|
---|
407 | "[[",
|
---|
408 | "%# For compilers that need traditional function definitions.",
|
---|
409 | "%# e.g.,",
|
---|
410 | "%# The function prototype taking 2 arguments",
|
---|
411 | "%# int foo (int x, char* y)",
|
---|
412 | "%#",
|
---|
413 | "%# ...should be written as",
|
---|
414 | "%# int foo YYFARGS2(int,x, char*,y)",
|
---|
415 | "%#",
|
---|
416 | "%# ...which could possibly generate",
|
---|
417 | "%# int foo (x,y,yyscanner)",
|
---|
418 | "%# int x;",
|
---|
419 | "%# char * y;",
|
---|
420 | "%# yyscan_t yyscanner;",
|
---|
421 | "%#",
|
---|
422 | "%# Generate traditional function defs",
|
---|
423 | " m4_define( [[YYFARGS0]], [[(M4_YY_DEF_ONLY_ARG) [[\\]]",
|
---|
424 | " M4_YY_DECL_LAST_ARG]])",
|
---|
425 | " m4_define( [[YYFARGS1]], [[($2 M4_YY_DEF_LAST_ARG) [[\\]]",
|
---|
426 | " $1 $2; [[\\]]",
|
---|
427 | " M4_YY_DECL_LAST_ARG]])",
|
---|
428 | " m4_define( [[YYFARGS2]], [[($2,$4 M4_YY_DEF_LAST_ARG) [[\\]]",
|
---|
429 | " $1 $2; [[\\]]",
|
---|
430 | " $3 $4; [[\\]]",
|
---|
431 | " M4_YY_DECL_LAST_ARG]])",
|
---|
432 | " m4_define( [[YYFARGS3]], [[($2,$4,$6 M4_YY_DEF_LAST_ARG) [[\\]]",
|
---|
433 | " $1 $2; [[\\]]",
|
---|
434 | " $3 $4; [[\\]]",
|
---|
435 | " $5 $6; [[\\]]",
|
---|
436 | " M4_YY_DECL_LAST_ARG]])",
|
---|
437 | "]],",
|
---|
438 | "[[",
|
---|
439 | "%# Generate C99 function defs.",
|
---|
440 | " m4_define( [[YYFARGS0]], [[(M4_YY_DEF_ONLY_ARG)]])",
|
---|
441 | " m4_define( [[YYFARGS1]], [[($1 $2 M4_YY_DEF_LAST_ARG)]])",
|
---|
442 | " m4_define( [[YYFARGS2]], [[($1 $2, $3 $4 M4_YY_DEF_LAST_ARG)]])",
|
---|
443 | " m4_define( [[YYFARGS3]], [[($1 $2, $3 $4, $5 $6 M4_YY_DEF_LAST_ARG)]])",
|
---|
444 | "]])",
|
---|
445 | "",
|
---|
446 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
447 | "[[",
|
---|
448 | "/* Enter a start condition. This macro really ought to take a parameter,",
|
---|
449 | " * but we do it the disgusting crufty way forced on us by the ()-less",
|
---|
450 | " * definition of BEGIN.",
|
---|
451 | " */",
|
---|
452 | "#define BEGIN YY_G(yy_start) = 1 + 2 *",
|
---|
453 | "]])",
|
---|
454 | "",
|
---|
455 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
456 | "[[",
|
---|
457 | "/* Translate the current start state into a value that can be later handed",
|
---|
458 | " * to BEGIN to return to the state. The YYSTATE alias is for lex",
|
---|
459 | " * compatibility.",
|
---|
460 | " */",
|
---|
461 | "#define YY_START ((YY_G(yy_start) - 1) / 2)",
|
---|
462 | "#define YYSTATE YY_START",
|
---|
463 | "]])",
|
---|
464 | "",
|
---|
465 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
466 | "[[",
|
---|
467 | "/* Action number for EOF rule of a given start state. */",
|
---|
468 | "#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)",
|
---|
469 | "]])",
|
---|
470 | "",
|
---|
471 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
472 | "[[",
|
---|
473 | "/* Special action meaning \"start processing a new file\". */",
|
---|
474 | "#define YY_NEW_FILE yyrestart( yyin M4_YY_CALL_LAST_ARG )",
|
---|
475 | "]])",
|
---|
476 | "",
|
---|
477 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
478 | "[[",
|
---|
479 | "#define YY_END_OF_BUFFER_CHAR 0",
|
---|
480 | "]])",
|
---|
481 | "",
|
---|
482 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
483 | "[[",
|
---|
484 | "/* Size of default input buffer. */",
|
---|
485 | "#ifndef YY_BUF_SIZE",
|
---|
486 | "#define YY_BUF_SIZE 16384",
|
---|
487 | "#endif",
|
---|
488 | "",
|
---|
489 | "/* The state buf must be large enough to hold one state per character in the main buffer.",
|
---|
490 | " */",
|
---|
491 | "#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))",
|
---|
492 | "]])",
|
---|
493 | "",
|
---|
494 | "",
|
---|
495 | "#ifndef YY_TYPEDEF_YY_BUFFER_STATE",
|
---|
496 | "#define YY_TYPEDEF_YY_BUFFER_STATE",
|
---|
497 | "typedef struct yy_buffer_state *YY_BUFFER_STATE;",
|
---|
498 | "#endif",
|
---|
499 | "",
|
---|
500 | "%if-not-reentrant",
|
---|
501 | "extern int yyleng;",
|
---|
502 | "%endif",
|
---|
503 | "",
|
---|
504 | "%if-c-only",
|
---|
505 | "%if-not-reentrant",
|
---|
506 | "extern FILE *yyin, *yyout;",
|
---|
507 | "%endif",
|
---|
508 | "%endif",
|
---|
509 | "",
|
---|
510 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
511 | "[[",
|
---|
512 | "#define EOB_ACT_CONTINUE_SCAN 0",
|
---|
513 | "#define EOB_ACT_END_OF_FILE 1",
|
---|
514 | "#define EOB_ACT_LAST_MATCH 2",
|
---|
515 | "]])",
|
---|
516 | "",
|
---|
517 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
518 | "[[",
|
---|
519 | " m4_ifdef( [[M4_YY_USE_LINENO]],",
|
---|
520 | " [[",
|
---|
521 | " /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires",
|
---|
522 | " * access to the local variable yy_act. Since yyless() is a macro, it would break",
|
---|
523 | " * existing scanners that call yyless() from OUTSIDE yylex. ",
|
---|
524 | " * One obvious solution it to make yy_act a global. I tried that, and saw",
|
---|
525 | " * a 5% performance hit in a non-yylineno scanner, because yy_act is",
|
---|
526 | " * normally declared as a register variable-- so it is not worth it.",
|
---|
527 | " */",
|
---|
528 | " #define YY_LESS_LINENO(n) \\",
|
---|
529 | " do { \\",
|
---|
530 | " int yyl;\\",
|
---|
531 | " for ( yyl = n; yyl < yyleng; ++yyl )\\",
|
---|
532 | " if ( yytext[yyl] == '\\n' )\\",
|
---|
533 | " --yylineno;\\",
|
---|
534 | " }while(0)",
|
---|
535 | " ]],",
|
---|
536 | " [[",
|
---|
537 | " #define YY_LESS_LINENO(n)",
|
---|
538 | " ]])",
|
---|
539 | "]])",
|
---|
540 | "",
|
---|
541 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
542 | "[[",
|
---|
543 | "/* Return all but the first \"n\" matched characters back to the input stream. */",
|
---|
544 | "#define yyless(n) \\",
|
---|
545 | " do \\",
|
---|
546 | " { \\",
|
---|
547 | " /* Undo effects of setting up yytext. */ \\",
|
---|
548 | " int yyless_macro_arg = (n); \\",
|
---|
549 | " YY_LESS_LINENO(yyless_macro_arg);\\",
|
---|
550 | " *yy_cp = YY_G(yy_hold_char); \\",
|
---|
551 | " YY_RESTORE_YY_MORE_OFFSET \\",
|
---|
552 | " YY_G(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \\",
|
---|
553 | " YY_DO_BEFORE_ACTION; /* set up yytext again */ \\",
|
---|
554 | " } \\",
|
---|
555 | " while ( 0 )",
|
---|
556 | "]])",
|
---|
557 | "",
|
---|
558 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
559 | "[[",
|
---|
560 | "#define unput(c) yyunput( c, YY_G(yytext_ptr) M4_YY_CALL_LAST_ARG )",
|
---|
561 | "]])",
|
---|
562 | "",
|
---|
563 | "/* The following is because we cannot portably get our hands on size_t",
|
---|
564 | " * (without autoconf's help, which isn't available because we want",
|
---|
565 | " * flex-generated scanners to compile on their own).",
|
---|
566 | " */",
|
---|
567 | "",
|
---|
568 | "#ifndef YY_TYPEDEF_YY_SIZE_T",
|
---|
569 | "#define YY_TYPEDEF_YY_SIZE_T",
|
---|
570 | "typedef unsigned int yy_size_t;",
|
---|
571 | "#endif",
|
---|
572 | "",
|
---|
573 | "#ifndef YY_STRUCT_YY_BUFFER_STATE",
|
---|
574 | "#define YY_STRUCT_YY_BUFFER_STATE",
|
---|
575 | "struct yy_buffer_state",
|
---|
576 | " {",
|
---|
577 | "%if-c-only",
|
---|
578 | " FILE *yy_input_file;",
|
---|
579 | "%endif",
|
---|
580 | "",
|
---|
581 | "%if-c++-only",
|
---|
582 | " std::istream* yy_input_file;",
|
---|
583 | "%endif",
|
---|
584 | "",
|
---|
585 | "",
|
---|
586 | " char *yy_ch_buf; /* input buffer */",
|
---|
587 | " char *yy_buf_pos; /* current position in input buffer */",
|
---|
588 | "",
|
---|
589 | " /* Size of input buffer in bytes, not including room for EOB",
|
---|
590 | " * characters.",
|
---|
591 | " */",
|
---|
592 | " yy_size_t yy_buf_size;",
|
---|
593 | "",
|
---|
594 | " /* Number of characters read into yy_ch_buf, not including EOB",
|
---|
595 | " * characters.",
|
---|
596 | " */",
|
---|
597 | " int yy_n_chars;",
|
---|
598 | "",
|
---|
599 | " /* Whether we \"own\" the buffer - i.e., we know we created it,",
|
---|
600 | " * and can realloc() it to grow it, and should free() it to",
|
---|
601 | " * delete it.",
|
---|
602 | " */",
|
---|
603 | " int yy_is_our_buffer;",
|
---|
604 | "",
|
---|
605 | " /* Whether this is an \"interactive\" input source; if so, and",
|
---|
606 | " * if we're using stdio for input, then we want to use getc()",
|
---|
607 | " * instead of fread(), to make sure we stop fetching input after",
|
---|
608 | " * each newline.",
|
---|
609 | " */",
|
---|
610 | " int yy_is_interactive;",
|
---|
611 | "",
|
---|
612 | " /* Whether we're considered to be at the beginning of a line.",
|
---|
613 | " * If so, '^' rules will be active on the next match, otherwise",
|
---|
614 | " * not.",
|
---|
615 | " */",
|
---|
616 | " int yy_at_bol;",
|
---|
617 | "",
|
---|
618 | " int yy_bs_lineno; /**< The line count. */",
|
---|
619 | " int yy_bs_column; /**< The column count. */",
|
---|
620 | " ",
|
---|
621 | "",
|
---|
622 | " /* Whether to try to fill the input buffer when we reach the",
|
---|
623 | " * end of it.",
|
---|
624 | " */",
|
---|
625 | " int yy_fill_buffer;",
|
---|
626 | "",
|
---|
627 | " int yy_buffer_status;",
|
---|
628 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
629 | "[[",
|
---|
630 | "#define YY_BUFFER_NEW 0",
|
---|
631 | "#define YY_BUFFER_NORMAL 1",
|
---|
632 | " /* When an EOF's been seen but there's still some text to process",
|
---|
633 | " * then we mark the buffer as YY_EOF_PENDING, to indicate that we",
|
---|
634 | " * shouldn't try reading from the input source any more. We might",
|
---|
635 | " * still have a bunch of tokens to match, though, because of",
|
---|
636 | " * possible backing-up.",
|
---|
637 | " *",
|
---|
638 | " * When we actually see the EOF, we change the status to \"new\"",
|
---|
639 | " * (via yyrestart()), so that the user can continue scanning by",
|
---|
640 | " * just pointing yyin at a new input file.",
|
---|
641 | " */",
|
---|
642 | "#define YY_BUFFER_EOF_PENDING 2",
|
---|
643 | "]])",
|
---|
644 | " };",
|
---|
645 | "#endif /* !YY_STRUCT_YY_BUFFER_STATE */",
|
---|
646 | "",
|
---|
647 | "%if-c-only Standard (non-C++) definition",
|
---|
648 | "%not-for-header",
|
---|
649 | "%if-not-reentrant",
|
---|
650 | "",
|
---|
651 | "/* Stack of input buffers. */",
|
---|
652 | "static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */",
|
---|
653 | "static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */",
|
---|
654 | "static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */",
|
---|
655 | "%endif",
|
---|
656 | "%ok-for-header",
|
---|
657 | "%endif",
|
---|
658 | "",
|
---|
659 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
660 | "[[",
|
---|
661 | "/* We provide macros for accessing buffer states in case in the",
|
---|
662 | " * future we want to put the buffer states in a more general",
|
---|
663 | " * \"scanner state\".",
|
---|
664 | " *",
|
---|
665 | " * Returns the top of the stack, or NULL.",
|
---|
666 | " */",
|
---|
667 | "#define YY_CURRENT_BUFFER ( YY_G(yy_buffer_stack) \\",
|
---|
668 | " ? YY_G(yy_buffer_stack)[YY_G(yy_buffer_stack_top)] \\",
|
---|
669 | " : NULL)",
|
---|
670 | "]])",
|
---|
671 | "",
|
---|
672 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
673 | "[[",
|
---|
674 | "/* Same as previous macro, but useful when we know that the buffer stack is not",
|
---|
675 | " * NULL or when we need an lvalue. For internal use only.",
|
---|
676 | " */",
|
---|
677 | "#define YY_CURRENT_BUFFER_LVALUE YY_G(yy_buffer_stack)[YY_G(yy_buffer_stack_top)]",
|
---|
678 | "]])",
|
---|
679 | "",
|
---|
680 | "%if-c-only Standard (non-C++) definition",
|
---|
681 | "",
|
---|
682 | "%if-not-reentrant",
|
---|
683 | "%not-for-header",
|
---|
684 | "/* yy_hold_char holds the character lost when yytext is formed. */",
|
---|
685 | "static char yy_hold_char;",
|
---|
686 | "static int yy_n_chars; /* number of characters read into yy_ch_buf */",
|
---|
687 | "int yyleng;",
|
---|
688 | "",
|
---|
689 | "/* Points to current character in buffer. */",
|
---|
690 | "static char *yy_c_buf_p = (char *) 0;",
|
---|
691 | "static int yy_init = 0; /* whether we need to initialize */",
|
---|
692 | "static int yy_start = 0; /* start state number */",
|
---|
693 | "",
|
---|
694 | "/* Flag which is used to allow yywrap()'s to do buffer switches",
|
---|
695 | " * instead of setting up a fresh yyin. A bit of a hack ...",
|
---|
696 | " */",
|
---|
697 | "static int yy_did_buffer_switch_on_eof;",
|
---|
698 | "%ok-for-header",
|
---|
699 | "%endif",
|
---|
700 | "",
|
---|
701 | "void yyrestart M4_YY_PARAMS( FILE *input_file M4_YY_PROTO_LAST_ARG );",
|
---|
702 | "void yy_switch_to_buffer M4_YY_PARAMS( YY_BUFFER_STATE new_buffer M4_YY_PROTO_LAST_ARG );",
|
---|
703 | "YY_BUFFER_STATE yy_create_buffer M4_YY_PARAMS( FILE *file, int size M4_YY_PROTO_LAST_ARG );",
|
---|
704 | "void yy_delete_buffer M4_YY_PARAMS( YY_BUFFER_STATE b M4_YY_PROTO_LAST_ARG );",
|
---|
705 | "void yy_flush_buffer M4_YY_PARAMS( YY_BUFFER_STATE b M4_YY_PROTO_LAST_ARG );",
|
---|
706 | "void yypush_buffer_state M4_YY_PARAMS( YY_BUFFER_STATE new_buffer M4_YY_PROTO_LAST_ARG );",
|
---|
707 | "void yypop_buffer_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
708 | "",
|
---|
709 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
710 | "[[",
|
---|
711 | "static void yyensure_buffer_stack M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
712 | "static void yy_load_buffer_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
713 | "static void yy_init_buffer M4_YY_PARAMS( YY_BUFFER_STATE b, FILE *file M4_YY_PROTO_LAST_ARG );",
|
---|
714 | "]])",
|
---|
715 | "",
|
---|
716 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
717 | "[[",
|
---|
718 | "#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG)",
|
---|
719 | "]])",
|
---|
720 | "",
|
---|
721 | "YY_BUFFER_STATE yy_scan_buffer M4_YY_PARAMS( char *base, yy_size_t size M4_YY_PROTO_LAST_ARG );",
|
---|
722 | "YY_BUFFER_STATE yy_scan_string M4_YY_PARAMS( yyconst char *yy_str M4_YY_PROTO_LAST_ARG );",
|
---|
723 | "YY_BUFFER_STATE yy_scan_bytes M4_YY_PARAMS( yyconst char *bytes, int len M4_YY_PROTO_LAST_ARG );",
|
---|
724 | "",
|
---|
725 | "%endif",
|
---|
726 | "",
|
---|
727 | "void *yyalloc M4_YY_PARAMS( yy_size_t M4_YY_PROTO_LAST_ARG );",
|
---|
728 | "void *yyrealloc M4_YY_PARAMS( void *, yy_size_t M4_YY_PROTO_LAST_ARG );",
|
---|
729 | "void yyfree M4_YY_PARAMS( void * M4_YY_PROTO_LAST_ARG );",
|
---|
730 | "",
|
---|
731 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
732 | "[[",
|
---|
733 | "#define yy_new_buffer yy_create_buffer",
|
---|
734 | "]])",
|
---|
735 | "",
|
---|
736 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
737 | "[[",
|
---|
738 | "#define yy_set_interactive(is_interactive) \\",
|
---|
739 | " { \\",
|
---|
740 | " if ( ! YY_CURRENT_BUFFER ){ \\",
|
---|
741 | " yyensure_buffer_stack (M4_YY_CALL_ONLY_ARG); \\",
|
---|
742 | " YY_CURRENT_BUFFER_LVALUE = \\",
|
---|
743 | " yy_create_buffer( yyin, YY_BUF_SIZE M4_YY_CALL_LAST_ARG); \\",
|
---|
744 | " } \\",
|
---|
745 | " YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \\",
|
---|
746 | " }",
|
---|
747 | "]])",
|
---|
748 | "",
|
---|
749 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
750 | "[[",
|
---|
751 | "#define yy_set_bol(at_bol) \\",
|
---|
752 | " { \\",
|
---|
753 | " if ( ! YY_CURRENT_BUFFER ){\\",
|
---|
754 | " yyensure_buffer_stack (M4_YY_CALL_ONLY_ARG); \\",
|
---|
755 | " YY_CURRENT_BUFFER_LVALUE = \\",
|
---|
756 | " yy_create_buffer( yyin, YY_BUF_SIZE M4_YY_CALL_LAST_ARG); \\",
|
---|
757 | " } \\",
|
---|
758 | " YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \\",
|
---|
759 | " }",
|
---|
760 | "]])",
|
---|
761 | "",
|
---|
762 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
763 | "[[",
|
---|
764 | "#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)",
|
---|
765 | "]])",
|
---|
766 | "",
|
---|
767 | "%% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here",
|
---|
768 | "",
|
---|
769 | "%if-c-only Standard (non-C++) definition",
|
---|
770 | "",
|
---|
771 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
772 | "[[",
|
---|
773 | "static yy_state_type yy_get_previous_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
774 | "static yy_state_type yy_try_NUL_trans M4_YY_PARAMS( yy_state_type current_state M4_YY_PROTO_LAST_ARG);",
|
---|
775 | "static int yy_get_next_buffer M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
776 | "static void yy_fatal_error M4_YY_PARAMS( yyconst char msg[] M4_YY_PROTO_LAST_ARG );",
|
---|
777 | "]])",
|
---|
778 | "",
|
---|
779 | "%endif",
|
---|
780 | "",
|
---|
781 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
782 | "[[",
|
---|
783 | "/* Done after the current pattern has been matched and before the",
|
---|
784 | " * corresponding action - sets up yytext.",
|
---|
785 | " */",
|
---|
786 | "#define YY_DO_BEFORE_ACTION \\",
|
---|
787 | " YY_G(yytext_ptr) = yy_bp; \\",
|
---|
788 | "%% [2.0] code to fiddle yytext and yyleng for yymore() goes here \\",
|
---|
789 | " YY_G(yy_hold_char) = *yy_cp; \\",
|
---|
790 | " *yy_cp = '\\0'; \\",
|
---|
791 | "%% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \\",
|
---|
792 | " YY_G(yy_c_buf_p) = yy_cp;",
|
---|
793 | "]])",
|
---|
794 | "",
|
---|
795 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
796 | "[[",
|
---|
797 | "%% [4.0] data tables for the DFA and the user's section 1 definitions go here",
|
---|
798 | "]])",
|
---|
799 | "",
|
---|
800 | "m4_ifdef( [[M4_YY_IN_HEADER]], [[#ifdef YY_HEADER_EXPORT_START_CONDITIONS]])",
|
---|
801 | "M4_YY_SC_DEFS",
|
---|
802 | "m4_ifdef( [[M4_YY_IN_HEADER]], [[#endif]])",
|
---|
803 | "",
|
---|
804 | "m4_ifdef( [[M4_YY_NO_UNISTD_H]],,",
|
---|
805 | "[[",
|
---|
806 | "#ifndef YY_NO_UNISTD_H",
|
---|
807 | "/* Special case for \"unistd.h\", since it is non-ANSI. We include it way",
|
---|
808 | " * down here because we want the user's section 1 to have been scanned first.",
|
---|
809 | " * The user has a chance to override it with an option.",
|
---|
810 | " */",
|
---|
811 | "%if-c-only",
|
---|
812 | "#include <unistd.h>",
|
---|
813 | "%endif",
|
---|
814 | "%if-c++-only",
|
---|
815 | "#include <unistd.h>",
|
---|
816 | "%endif",
|
---|
817 | "#endif",
|
---|
818 | "]])",
|
---|
819 | "",
|
---|
820 | "#ifndef YY_EXTRA_TYPE",
|
---|
821 | "#define YY_EXTRA_TYPE void *",
|
---|
822 | "#endif",
|
---|
823 | "",
|
---|
824 | "%if-c-only Reentrant structure and macros (non-C++).",
|
---|
825 | "%if-reentrant",
|
---|
826 | "",
|
---|
827 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
828 | "[[",
|
---|
829 | "/* Holds the entire state of the reentrant scanner. */",
|
---|
830 | "struct yyguts_t",
|
---|
831 | " {",
|
---|
832 | "",
|
---|
833 | " /* User-defined. Not touched by flex. */",
|
---|
834 | " YY_EXTRA_TYPE yyextra_r;",
|
---|
835 | "",
|
---|
836 | " /* The rest are the same as the globals declared in the non-reentrant scanner. */",
|
---|
837 | " FILE *yyin_r, *yyout_r;",
|
---|
838 | " size_t yy_buffer_stack_top; /**< index of top of stack. */",
|
---|
839 | " size_t yy_buffer_stack_max; /**< capacity of stack. */",
|
---|
840 | " YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */",
|
---|
841 | " char yy_hold_char;",
|
---|
842 | " int yy_n_chars;",
|
---|
843 | " int yyleng_r;",
|
---|
844 | " char *yy_c_buf_p;",
|
---|
845 | " int yy_init;",
|
---|
846 | " int yy_start;",
|
---|
847 | " int yy_did_buffer_switch_on_eof;",
|
---|
848 | " int yy_start_stack_ptr;",
|
---|
849 | " int yy_start_stack_depth;",
|
---|
850 | " int *yy_start_stack;",
|
---|
851 | " yy_state_type yy_last_accepting_state;",
|
---|
852 | " char* yy_last_accepting_cpos;",
|
---|
853 | "",
|
---|
854 | " int yylineno_r;",
|
---|
855 | " int yy_flex_debug_r;",
|
---|
856 | "",
|
---|
857 | "m4_ifdef( [[M4_YY_USES_REJECT]],",
|
---|
858 | "[[",
|
---|
859 | " yy_state_type *yy_state_buf;",
|
---|
860 | " yy_state_type *yy_state_ptr;",
|
---|
861 | " char *yy_full_match;",
|
---|
862 | " int yy_lp;",
|
---|
863 | "]])",
|
---|
864 | "",
|
---|
865 | "m4_ifdef( [[M4_YY_TEXT_IS_ARRAY]],",
|
---|
866 | "[[",
|
---|
867 | " char yytext_r[YYLMAX];",
|
---|
868 | " char *yytext_ptr;",
|
---|
869 | " int yy_more_offset;",
|
---|
870 | " int yy_prev_more_offset;",
|
---|
871 | "]],",
|
---|
872 | "[[",
|
---|
873 | " char *yytext_r;",
|
---|
874 | " int yy_more_flag;",
|
---|
875 | " int yy_more_len;",
|
---|
876 | "]])",
|
---|
877 | "",
|
---|
878 | "m4_ifdef( [[M4_YY_BISON_LVAL]],",
|
---|
879 | "[[",
|
---|
880 | " YYSTYPE * yylval_r;",
|
---|
881 | "]])",
|
---|
882 | "",
|
---|
883 | "m4_ifdef( [[<M4_YY_BISON_LLOC>]],",
|
---|
884 | "[[",
|
---|
885 | " YYLTYPE * yylloc_r;",
|
---|
886 | "]])",
|
---|
887 | "",
|
---|
888 | " }; /* end struct yyguts_t */",
|
---|
889 | "]])",
|
---|
890 | "",
|
---|
891 | "",
|
---|
892 | "%if-c-only",
|
---|
893 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
894 | "[[",
|
---|
895 | "static int yy_init_globals M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
896 | "]])",
|
---|
897 | "%endif",
|
---|
898 | "",
|
---|
899 | "%if-reentrant",
|
---|
900 | "",
|
---|
901 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
902 | "[[",
|
---|
903 | " m4_ifdef( [[M4_YY_BISON_LVAL]],",
|
---|
904 | " [[",
|
---|
905 | " /* This must go here because YYSTYPE and YYLTYPE are included",
|
---|
906 | " * from bison output in section 1.*/",
|
---|
907 | " # define yylval YY_G(yylval_r)",
|
---|
908 | " ]])",
|
---|
909 | "",
|
---|
910 | " m4_ifdef( [[<M4_YY_BISON_LLOC>]],",
|
---|
911 | " [[",
|
---|
912 | " # define yylloc YY_G(yylloc_r)",
|
---|
913 | " ]])",
|
---|
914 | "]])",
|
---|
915 | "",
|
---|
916 | "%endif",
|
---|
917 | "",
|
---|
918 | "/* Accessor methods to globals.",
|
---|
919 | " These are made visible to non-reentrant scanners for convenience. */",
|
---|
920 | "",
|
---|
921 | "m4_ifdef( [[M4_YY_NO_DESTROY]],,",
|
---|
922 | "[[",
|
---|
923 | "int yylex_destroy M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
924 | "]])",
|
---|
925 | "",
|
---|
926 | "m4_ifdef( [[M4_YY_NO_GET_DEBUG]],,",
|
---|
927 | "[[",
|
---|
928 | "int yyget_debug M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
929 | "]])",
|
---|
930 | "",
|
---|
931 | "m4_ifdef( [[M4_YY_NO_SET_DEBUG]],,",
|
---|
932 | "[[",
|
---|
933 | "void yyset_debug M4_YY_PARAMS( int debug_flag M4_YY_PROTO_LAST_ARG );",
|
---|
934 | "]])",
|
---|
935 | "",
|
---|
936 | "m4_ifdef( [[M4_YY_NO_GET_EXTRA]],,",
|
---|
937 | "[[",
|
---|
938 | "YY_EXTRA_TYPE yyget_extra M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
939 | "]])",
|
---|
940 | "",
|
---|
941 | "m4_ifdef( [[M4_YY_NO_SET_EXTRA]],,",
|
---|
942 | "[[",
|
---|
943 | "void yyset_extra M4_YY_PARAMS( YY_EXTRA_TYPE user_defined M4_YY_PROTO_LAST_ARG );",
|
---|
944 | "]])",
|
---|
945 | "",
|
---|
946 | "m4_ifdef( [[M4_YY_NO_GET_IN]],,",
|
---|
947 | "[[",
|
---|
948 | "FILE *yyget_in M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
949 | "]])",
|
---|
950 | "",
|
---|
951 | "m4_ifdef( [[M4_YY_NO_SET_IN]],,",
|
---|
952 | "[[",
|
---|
953 | "void yyset_in M4_YY_PARAMS( FILE * in_str M4_YY_PROTO_LAST_ARG );",
|
---|
954 | "]])",
|
---|
955 | "",
|
---|
956 | "m4_ifdef( [[M4_YY_NO_GET_OUT]],,",
|
---|
957 | "[[",
|
---|
958 | "FILE *yyget_out M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
959 | "]])",
|
---|
960 | "",
|
---|
961 | "m4_ifdef( [[M4_YY_NO_SET_OUT]],,",
|
---|
962 | "[[",
|
---|
963 | "void yyset_out M4_YY_PARAMS( FILE * out_str M4_YY_PROTO_LAST_ARG );",
|
---|
964 | "]])",
|
---|
965 | "",
|
---|
966 | "m4_ifdef( [[M4_YY_NO_GET_LENG]],,",
|
---|
967 | "[[",
|
---|
968 | "int yyget_leng M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
969 | "]])",
|
---|
970 | "",
|
---|
971 | "m4_ifdef( [[M4_YY_NO_GET_TEXT]],,",
|
---|
972 | "[[",
|
---|
973 | "char *yyget_text M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
974 | "]])",
|
---|
975 | "",
|
---|
976 | "m4_ifdef( [[M4_YY_NO_GET_LINENO]],,",
|
---|
977 | "[[",
|
---|
978 | "int yyget_lineno M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
979 | "]])",
|
---|
980 | "",
|
---|
981 | "m4_ifdef( [[M4_YY_NO_SET_LINENO]],,",
|
---|
982 | "[[",
|
---|
983 | "void yyset_lineno M4_YY_PARAMS( int line_number M4_YY_PROTO_LAST_ARG );",
|
---|
984 | "]])",
|
---|
985 | "",
|
---|
986 | "%if-bison-bridge",
|
---|
987 | "m4_ifdef( [[M4_YY_NO_GET_LVAL]],,",
|
---|
988 | "[[",
|
---|
989 | "YYSTYPE * yyget_lval M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
990 | "]])",
|
---|
991 | "",
|
---|
992 | "void yyset_lval M4_YY_PARAMS( YYSTYPE * yylval_param M4_YY_PROTO_LAST_ARG );",
|
---|
993 | "",
|
---|
994 | "m4_ifdef( [[<M4_YY_BISON_LLOC>]],",
|
---|
995 | "[[",
|
---|
996 | " m4_ifdef( [[M4_YY_NO_GET_LLOC]],,",
|
---|
997 | " [[",
|
---|
998 | " YYLTYPE *yyget_lloc M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
999 | " ]])",
|
---|
1000 | "",
|
---|
1001 | " m4_ifdef( [[M4_YY_NO_SET_LLOC]],,",
|
---|
1002 | " [[",
|
---|
1003 | " void yyset_lloc M4_YY_PARAMS( YYLTYPE * yylloc_param M4_YY_PROTO_LAST_ARG );",
|
---|
1004 | " ]])",
|
---|
1005 | "]])",
|
---|
1006 | "%endif",
|
---|
1007 | "%endif End reentrant structures and macros.",
|
---|
1008 | "",
|
---|
1009 | "/* Macros after this point can all be overridden by user definitions in",
|
---|
1010 | " * section 1.",
|
---|
1011 | " */",
|
---|
1012 | "",
|
---|
1013 | "#ifndef YY_SKIP_YYWRAP",
|
---|
1014 | "#ifdef __cplusplus",
|
---|
1015 | "extern \"C\" int yywrap M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
1016 | "#else",
|
---|
1017 | "extern int yywrap M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
1018 | "#endif",
|
---|
1019 | "#endif",
|
---|
1020 | "",
|
---|
1021 | "%not-for-header",
|
---|
1022 | " m4_ifdef( [[M4_YY_NO_UNPUT]],,",
|
---|
1023 | " [[",
|
---|
1024 | " static void yyunput M4_YY_PARAMS( int c, char *buf_ptr M4_YY_PROTO_LAST_ARG);",
|
---|
1025 | " ]])",
|
---|
1026 | "%ok-for-header",
|
---|
1027 | "%endif",
|
---|
1028 | "",
|
---|
1029 | "#ifndef yytext_ptr",
|
---|
1030 | "static void yy_flex_strncpy M4_YY_PARAMS( char *, yyconst char *, int M4_YY_PROTO_LAST_ARG);",
|
---|
1031 | "#endif",
|
---|
1032 | "",
|
---|
1033 | "#ifdef YY_NEED_STRLEN",
|
---|
1034 | "static int yy_flex_strlen M4_YY_PARAMS( yyconst char * M4_YY_PROTO_LAST_ARG);",
|
---|
1035 | "#endif",
|
---|
1036 | "",
|
---|
1037 | "#ifndef YY_NO_INPUT",
|
---|
1038 | "%if-c-only Standard (non-C++) definition",
|
---|
1039 | "%not-for-header",
|
---|
1040 | "#ifdef __cplusplus",
|
---|
1041 | "static int yyinput M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
1042 | "#else",
|
---|
1043 | "static int input M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
1044 | "#endif",
|
---|
1045 | "%ok-for-header",
|
---|
1046 | "%endif",
|
---|
1047 | "#endif",
|
---|
1048 | "",
|
---|
1049 | "",
|
---|
1050 | "%if-c-only",
|
---|
1051 | "%# TODO: This is messy.",
|
---|
1052 | "m4_ifdef( [[M4_YY_STACK_USED]],",
|
---|
1053 | "[[",
|
---|
1054 | "",
|
---|
1055 | "m4_ifdef( [[M4_YY_NOT_REENTRANT]],",
|
---|
1056 | "[[",
|
---|
1057 | " m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
1058 | " [[",
|
---|
1059 | " static int yy_start_stack_ptr = 0;",
|
---|
1060 | " static int yy_start_stack_depth = 0;",
|
---|
1061 | " static int *yy_start_stack = NULL;",
|
---|
1062 | " ]])",
|
---|
1063 | "]])",
|
---|
1064 | "",
|
---|
1065 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
1066 | "[[",
|
---|
1067 | " m4_ifdef( [[M4_YY_NO_PUSH_STATE]],,",
|
---|
1068 | " [[",
|
---|
1069 | " static void yy_push_state M4_YY_PARAMS( int new_state M4_YY_PROTO_LAST_ARG);",
|
---|
1070 | " ]])",
|
---|
1071 | " m4_ifdef( [[M4_YY_NO_POP_STATE]],,",
|
---|
1072 | " [[",
|
---|
1073 | " static void yy_pop_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
1074 | " ]])",
|
---|
1075 | " m4_ifdef( [[M4_YY_NO_TOP_STATE]],,",
|
---|
1076 | " [[",
|
---|
1077 | " static int yy_top_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
|
---|
1078 | " ]])",
|
---|
1079 | "]])",
|
---|
1080 | "",
|
---|
1081 | "]],",
|
---|
1082 | "[[",
|
---|
1083 | "m4_define( [[M4_YY_NO_PUSH_STATE]])",
|
---|
1084 | "m4_define( [[M4_YY_NO_POP_STATE]])",
|
---|
1085 | "m4_define( [[M4_YY_NO_TOP_STATE]])",
|
---|
1086 | "]])",
|
---|
1087 | "%endif",
|
---|
1088 | "",
|
---|
1089 | "/* Amount of stuff to slurp up with each read. */",
|
---|
1090 | "#ifndef YY_READ_BUF_SIZE",
|
---|
1091 | "#define YY_READ_BUF_SIZE 8192",
|
---|
1092 | "#endif",
|
---|
1093 | "",
|
---|
1094 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
1095 | "[[",
|
---|
1096 | "/* Copy whatever the last rule matched to the standard output. */",
|
---|
1097 | "#ifndef ECHO",
|
---|
1098 | "%if-c-only Standard (non-C++) definition",
|
---|
1099 | "/* This used to be an fputs(), but since the string might contain NUL's,",
|
---|
1100 | " * we now use fwrite().",
|
---|
1101 | " */",
|
---|
1102 | "#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )",
|
---|
1103 | "%endif",
|
---|
1104 | "%if-c++-only C++ definition",
|
---|
1105 | "#define ECHO LexerOutput( yytext, yyleng )",
|
---|
1106 | "%endif",
|
---|
1107 | "#endif",
|
---|
1108 | "]])",
|
---|
1109 | "",
|
---|
1110 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
1111 | "[[",
|
---|
1112 | "/* Gets input and stuffs it into \"buf\". number of characters read, or YY_NULL,",
|
---|
1113 | " * is returned in \"result\".",
|
---|
1114 | " */",
|
---|
1115 | "#ifndef YY_INPUT",
|
---|
1116 | "#define YY_INPUT(buf,result,max_size) \\",
|
---|
1117 | "%% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \\",
|
---|
1118 | "\\",
|
---|
1119 | "%if-c++-only C++ definition \\",
|
---|
1120 | " if ( (result = LexerInput( (char *) buf, max_size )) < 0 ) \\",
|
---|
1121 | " YY_FATAL_ERROR( \"input in flex scanner failed\" );",
|
---|
1122 | "%endif",
|
---|
1123 | "",
|
---|
1124 | "#endif",
|
---|
1125 | "]])",
|
---|
1126 | "",
|
---|
1127 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
1128 | "[[",
|
---|
1129 | "/* No semi-colon after return; correct usage is to write \"yyterminate();\" -",
|
---|
1130 | " * we don't want an extra ';' after the \"return\" because that will cause",
|
---|
1131 | " * some compilers to complain about unreachable statements.",
|
---|
1132 | " */",
|
---|
1133 | "#ifndef yyterminate",
|
---|
1134 | "#define yyterminate() return YY_NULL",
|
---|
1135 | "#endif",
|
---|
1136 | "]])",
|
---|
1137 | "",
|
---|
1138 | "/* Number of entries by which start-condition stack grows. */",
|
---|
1139 | "#ifndef YY_START_STACK_INCR",
|
---|
1140 | "#define YY_START_STACK_INCR 25",
|
---|
1141 | "#endif",
|
---|
1142 | "",
|
---|
1143 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
1144 | "[[",
|
---|
1145 | "/* Report a fatal error. */",
|
---|
1146 | "#ifndef YY_FATAL_ERROR",
|
---|
1147 | "%if-c-only",
|
---|
1148 | "#define YY_FATAL_ERROR(msg) yy_fatal_error( msg M4_YY_CALL_LAST_ARG)",
|
---|
1149 | "%endif",
|
---|
1150 | "%if-c++-only",
|
---|
1151 | "#define YY_FATAL_ERROR(msg) LexerError( msg )",
|
---|
1152 | "%endif",
|
---|
1153 | "#endif",
|
---|
1154 | "]])",
|
---|
1155 | "",
|
---|
1156 | "%if-tables-serialization structures and prototypes",
|
---|
1157 | "#ifdef FLEX_SCANNER",
|
---|
1158 | "/*",
|
---|
1159 | "dnl tables_shared.h - tables serialization header",
|
---|
1160 | "dnl",
|
---|
1161 | "dnl Copyright (c) 1990 The Regents of the University of California.",
|
---|
1162 | "dnl All rights reserved.",
|
---|
1163 | "dnl",
|
---|
1164 | "dnl This code is derived from software contributed to Berkeley by",
|
---|
1165 | "dnl Vern Paxson.",
|
---|
1166 | "dnl",
|
---|
1167 | "dnl The United States Government has rights in this work pursuant",
|
---|
1168 | "dnl to contract no. DE-AC03-76SF00098 between the United States",
|
---|
1169 | "dnl Department of Energy and the University of California.",
|
---|
1170 | "dnl",
|
---|
1171 | "dnl This file is part of flex.",
|
---|
1172 | "dnl",
|
---|
1173 | "dnl Redistribution and use in source and binary forms, with or without",
|
---|
1174 | "dnl modification, are permitted provided that the following conditions",
|
---|
1175 | "dnl are met:",
|
---|
1176 | "dnl",
|
---|
1177 | "dnl 1. Redistributions of source code must retain the above copyright",
|
---|
1178 | "dnl notice, this list of conditions and the following disclaimer.",
|
---|
1179 | "dnl 2. Redistributions in binary form must reproduce the above copyright",
|
---|
1180 | "dnl notice, this list of conditions and the following disclaimer in the",
|
---|
1181 | "dnl documentation and/or other materials provided with the distribution.",
|
---|
1182 | "dnl",
|
---|
1183 | "dnl Neither the name of the University nor the names of its contributors",
|
---|
1184 | "dnl may be used to endorse or promote products derived from this software",
|
---|
1185 | "dnl without specific prior written permission.",
|
---|
1186 | "dnl",
|
---|
1187 | "dnl THIS SOFTWARE IS PROVIDED `AS IS' AND WITHOUT ANY EXPRESS OR",
|
---|
1188 | "dnl IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED",
|
---|
1189 | "dnl WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR",
|
---|
1190 | "dnl PURPOSE.",
|
---|
1191 | " |
---|
1192 | ",
|
---|
1193 | "dnl",
|
---|
1194 | "dnl This file is meant to be included in both the skeleton and the actual",
|
---|
1195 | "dnl flex code (hence the name \"_shared\").",
|
---|
1196 | "*/",
|
---|
1197 | "#ifndef yyskel_static",
|
---|
1198 | "#define yyskel_static static",
|
---|
1199 | "#endif",
|
---|
1200 | "#else",
|
---|
1201 | "#ifndef yyskel_static",
|
---|
1202 | "#define yyskel_static",
|
---|
1203 | "#endif",
|
---|
1204 | "#endif",
|
---|
1205 | "",
|
---|
1206 | "/* Structures and prototypes for serializing flex tables. The",
|
---|
1207 | " * binary format is documented in the manual.",
|
---|
1208 | " *",
|
---|
1209 | " * Design considerations:",
|
---|
1210 | " *",
|
---|
1211 | " * - The format allows many tables per file.",
|
---|
1212 | " * - The tables can be streamed.",
|
---|
1213 | " * - All data is stored in network byte order.",
|
---|
1214 | " * - We do not hinder future unicode support.",
|
---|
1215 | " * - We can lookup tables by name.",
|
---|
1216 | " */",
|
---|
1217 | "",
|
---|
1218 | "/** Magic number for serialized format. */",
|
---|
1219 | "#ifndef YYTBL_MAGIC",
|
---|
1220 | "#define YYTBL_MAGIC 0xF13C57B1",
|
---|
1221 | "#endif",
|
---|
1222 | "",
|
---|
1223 | "/** Calculate (0-7) = number bytes needed to pad n to next 64-bit boundary. */",
|
---|
1224 | "#ifndef yypad64",
|
---|
1225 | "#define yypad64(n) ((8-((n)%8))%8)",
|
---|
1226 | "#endif",
|
---|
1227 | "",
|
---|
1228 | "",
|
---|
1229 | "#ifndef YYTABLES_TYPES",
|
---|
1230 | "#define YYTABLES_TYPES",
|
---|
1231 | "/** Possible values for td_id field. Each one corresponds to a",
|
---|
1232 | " * scanner table of the same name.",
|
---|
1233 | " */",
|
---|
1234 | "enum yytbl_id {",
|
---|
1235 | " YYTD_ID_ACCEPT = 0x01, /**< 1-dim ints */",
|
---|
1236 | " YYTD_ID_BASE = 0x02, /**< 1-dim ints */",
|
---|
1237 | " YYTD_ID_CHK = 0x03, /**< 1-dim ints */",
|
---|
1238 | " YYTD_ID_DEF = 0x04, /**< 1-dim ints */",
|
---|
1239 | " YYTD_ID_EC = 0x05, /**< 1-dim ints */",
|
---|
1240 | " YYTD_ID_META = 0x06, /**< 1-dim ints */",
|
---|
1241 | " YYTD_ID_NUL_TRANS = 0x07, /**< 1-dim ints, maybe indices */",
|
---|
1242 | " YYTD_ID_NXT = 0x08, /**< may be 2 dimensional ints */",
|
---|
1243 | " YYTD_ID_RULE_CAN_MATCH_EOL = 0x09, /**< 1-dim ints */",
|
---|
1244 | " YYTD_ID_START_STATE_LIST = 0x0A, /**< 1-dim indices into trans tbl */",
|
---|
1245 | " YYTD_ID_TRANSITION = 0x0B, /**< structs */",
|
---|
1246 | " YYTD_ID_ACCLIST = 0x0C /**< 1-dim ints */",
|
---|
1247 | "};",
|
---|
1248 | "",
|
---|
1249 | "/** bit flags for t_flags field of struct yytbl_data */",
|
---|
1250 | "enum yytbl_flags {",
|
---|
1251 | " /* These first three are mutually exclusive */",
|
---|
1252 | " YYTD_DATA8 = 0x01, /**< data is an array of type flex_int8_t */",
|
---|
1253 | " YYTD_DATA16 = 0x02, /**< data is an array of type flex_int16_t */",
|
---|
1254 | " YYTD_DATA32 = 0x04, /**< data is an array of type flex_int32_t */",
|
---|
1255 | "",
|
---|
1256 | " /* These two are mutually exclusive. */",
|
---|
1257 | " YYTD_PTRANS = 0x08, /**< data is a list of indexes of entries",
|
---|
1258 | " into the expanded yy_transition",
|
---|
1259 | " array. See notes in manual. */",
|
---|
1260 | " YYTD_STRUCT = 0x10 /**< data consists of yy_trans_info structs */",
|
---|
1261 | "};",
|
---|
1262 | "",
|
---|
1263 | "/* The serialized tables header. */",
|
---|
1264 | "struct yytbl_hdr {",
|
---|
1265 | " flex_uint32_t th_magic; /**< Must be 0xF13C57B1 (comes from \"Flex Table\") */",
|
---|
1266 | " flex_uint32_t th_hsize; /**< Size of this header in bytes. */",
|
---|
1267 | " flex_uint32_t th_ssize; /**< Size of this dataset, in bytes, including header. */",
|
---|
1268 | " flex_uint16_t th_flags; /**< Currently unused, must be 0 */",
|
---|
1269 | " char *th_version; /**< Flex version string. NUL terminated. */",
|
---|
1270 | " char *th_name; /**< The name of this table set. NUL terminated. */",
|
---|
1271 | "};",
|
---|
1272 | "",
|
---|
1273 | "/** A single serialized table */",
|
---|
1274 | "struct yytbl_data {",
|
---|
1275 | " flex_uint16_t td_id; /**< enum yytbl_id table identifier */",
|
---|
1276 | " flex_uint16_t td_flags; /**< how to interpret this data */",
|
---|
1277 | " flex_uint32_t td_hilen; /**< num elements in highest dimension array */",
|
---|
1278 | " flex_uint32_t td_lolen; /**< num elements in lowest dimension array */",
|
---|
1279 | " void *td_data; /**< table data */",
|
---|
1280 | "};",
|
---|
1281 | "#endif",
|
---|
1282 | "",
|
---|
1283 | "/** Extract corresponding data size_t from td_flags */",
|
---|
1284 | "#ifndef YYTDFLAGS2BYTES",
|
---|
1285 | "#define YYTDFLAGS2BYTES(td_flags)\\",
|
---|
1286 | " (((td_flags) & YYTD_DATA8)\\",
|
---|
1287 | " ? sizeof(flex_int8_t)\\",
|
---|
1288 | " :(((td_flags) & YYTD_DATA16)\\",
|
---|
1289 | " ? sizeof(flex_int16_t)\\",
|
---|
1290 | " :sizeof(flex_int32_t)))",
|
---|
1291 | "#endif",
|
---|
1292 | "",
|
---|
1293 | "#ifdef FLEX_SCANNER",
|
---|
1294 | "%not-for-header",
|
---|
1295 | "#endif",
|
---|
1296 | "yyskel_static flex_int32_t yytbl_calc_total_len (const struct yytbl_data *tbl);",
|
---|
1297 | "#ifdef FLEX_SCANNER",
|
---|
1298 | "%ok-for-header",
|
---|
1299 | "#endif",
|
---|
1300 | "",
|
---|
1301 | "/* vim:set noexpandtab cindent tabstop=8 softtabstop=0 shiftwidth=8 textwidth=0: */",
|
---|
1302 | "",
|
---|
1303 | "",
|
---|
1304 | "/* Load the DFA tables from the given stream. */",
|
---|
1305 | "int yytables_fload M4_YY_PARAMS(FILE * fp M4_YY_PROTO_LAST_ARG);",
|
---|
1306 | "",
|
---|
1307 | "/* Unload the tables from memory. */",
|
---|
1308 | "int yytables_destroy M4_YY_PARAMS(M4_YY_PROTO_ONLY_ARG);",
|
---|
1309 | "%not-for-header",
|
---|
1310 | "",
|
---|
1311 | "/** Describes a mapping from a serialized table id to its deserialized state in",
|
---|
1312 | " * this scanner. This is the bridge between our \"generic\" deserialization code",
|
---|
1313 | " * and the specifics of this scanner. ",
|
---|
1314 | " */",
|
---|
1315 | "struct yytbl_dmap {",
|
---|
1316 | " enum yytbl_id dm_id;/**< table identifier */",
|
---|
1317 | " void **dm_arr; /**< address of pointer to store the deserialized table. */",
|
---|
1318 | " size_t dm_sz; /**< local sizeof() each element in table. */",
|
---|
1319 | "};",
|
---|
1320 | "",
|
---|
1321 | "/** A {0,0,0}-terminated list of structs, forming the map */",
|
---|
1322 | "static struct yytbl_dmap yydmap[] =",
|
---|
1323 | "{",
|
---|
1324 | "%tables-yydmap generated elements",
|
---|
1325 | " {0,0,0}",
|
---|
1326 | "};",
|
---|
1327 | "",
|
---|
1328 | "/** A tables-reader object to maintain some state in the read. */",
|
---|
1329 | "struct yytbl_reader {",
|
---|
1330 | " FILE * fp; /**< input stream */",
|
---|
1331 | " flex_uint32_t bread; /**< bytes read since beginning of current tableset */",
|
---|
1332 | "};",
|
---|
1333 | "",
|
---|
1334 | "%endif",
|
---|
1335 | "/* end tables serialization structures and prototypes */",
|
---|
1336 | "",
|
---|
1337 | "%ok-for-header",
|
---|
1338 | "",
|
---|
1339 | "/* Default declaration of generated scanner - a define so the user can",
|
---|
1340 | " * easily add parameters.",
|
---|
1341 | " */",
|
---|
1342 | "#ifndef YY_DECL",
|
---|
1343 | "#define YY_DECL_IS_OURS 1",
|
---|
1344 | "%if-c-only Standard (non-C++) definition",
|
---|
1345 | "",
|
---|
1346 | "",
|
---|
1347 | "m4_define( [[M4_YY_LEX_PROTO]], [[M4_YY_PARAMS(M4_YY_PROTO_ONLY_ARG)]])",
|
---|
1348 | "m4_define( [[M4_YY_LEX_DECLARATION]], [[YYFARGS0(void)]])",
|
---|
1349 | "",
|
---|
1350 | "m4_ifdef( [[M4_YY_BISON_LVAL]],",
|
---|
1351 | "[[",
|
---|
1352 | " m4_dnl The bison pure parser is used. Redefine yylex to",
|
---|
1353 | " m4_dnl accept the lval parameter.",
|
---|
1354 | "",
|
---|
1355 | " m4_define( [[M4_YY_LEX_PROTO]],",
|
---|
1356 | " [[M4_YY_PARAMS(YYSTYPE * yylval_param M4_YY_PROTO_LAST_ARG)]])",
|
---|
1357 | " m4_define( [[M4_YY_LEX_DECLARATION]],",
|
---|
1358 | " [[YYFARGS1(YYSTYPE *,yylval_param)]])",
|
---|
1359 | "]])",
|
---|
1360 | "",
|
---|
1361 | "m4_ifdef( [[<M4_YY_BISON_LLOC>]],",
|
---|
1362 | "[[",
|
---|
1363 | " m4_dnl Locations are used. yylex should also accept the ylloc parameter.",
|
---|
1364 | "",
|
---|
1365 | " m4_define( [[M4_YY_LEX_PROTO]],",
|
---|
1366 | " [[M4_YY_PARAMS(YYSTYPE * yylval_param, YYLTYPE * yylloc_param M4_YY_PROTO_LAST_ARG)]])",
|
---|
1367 | " m4_define( [[M4_YY_LEX_DECLARATION]],",
|
---|
1368 | " [[YYFARGS2(YYSTYPE *,yylval_param, YYLTYPE *,yylloc_param)]])",
|
---|
1369 | "]])",
|
---|
1370 | "",
|
---|
1371 | "extern int yylex M4_YY_LEX_PROTO;",
|
---|
1372 | "",
|
---|
1373 | "#define YY_DECL int yylex M4_YY_LEX_DECLARATION",
|
---|
1374 | "%endif",
|
---|
1375 | "%if-c++-only C++ definition",
|
---|
1376 | "#define YY_DECL int yyFlexLexer::yylex()",
|
---|
1377 | "%endif",
|
---|
1378 | "#endif /* !YY_DECL */",
|
---|
1379 | "",
|
---|
1380 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
1381 | "[[",
|
---|
1382 | "/* Code executed at the beginning of each rule, after yytext and yyleng",
|
---|
1383 | " * have been set up.",
|
---|
1384 | " */",
|
---|
1385 | "#ifndef YY_USER_ACTION",
|
---|
1386 | "#define YY_USER_ACTION",
|
---|
1387 | "#endif",
|
---|
1388 | "]])",
|
---|
1389 | "",
|
---|
1390 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
1391 | "[[",
|
---|
1392 | "/* Code executed at the end of each rule. */",
|
---|
1393 | "#ifndef YY_BREAK",
|
---|
1394 | "#define YY_BREAK break;",
|
---|
1395 | "#endif",
|
---|
1396 | "]])",
|
---|
1397 | "",
|
---|
1398 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
1399 | "[[",
|
---|
1400 | "%% [6.0] YY_RULE_SETUP definition goes here",
|
---|
1401 | "]])",
|
---|
1402 | "",
|
---|
1403 | "%not-for-header",
|
---|
1404 | "/** The main scanner function which does all the work.",
|
---|
1405 | " */",
|
---|
1406 | "YY_DECL",
|
---|
1407 | "{",
|
---|
1408 | " register yy_state_type yy_current_state;",
|
---|
1409 | " register char *yy_cp, *yy_bp;",
|
---|
1410 | " register int yy_act;",
|
---|
1411 | " M4_YY_DECL_GUTS_VAR();",
|
---|
1412 | "",
|
---|
1413 | "m4_ifdef( [[M4_YY_NOT_REENTRANT]],",
|
---|
1414 | "[[",
|
---|
1415 | " m4_ifdef( [[M4_YY_BISON_LVAL]],",
|
---|
1416 | " [[",
|
---|
1417 | " YYSTYPE * yylval;",
|
---|
1418 | " ]])",
|
---|
1419 | " m4_ifdef( [[<M4_YY_BISON_LLOC>]],",
|
---|
1420 | " [[",
|
---|
1421 | " YYLTYPE * yylloc;",
|
---|
1422 | " ]])",
|
---|
1423 | "]])",
|
---|
1424 | "",
|
---|
1425 | "%% [7.0] user's declarations go here",
|
---|
1426 | "",
|
---|
1427 | "m4_ifdef( [[M4_YY_BISON_LVAL]],",
|
---|
1428 | "[[",
|
---|
1429 | " yylval = yylval_param;",
|
---|
1430 | "]])",
|
---|
1431 | "",
|
---|
1432 | "m4_ifdef( [[<M4_YY_BISON_LLOC>]],",
|
---|
1433 | "[[",
|
---|
1434 | " yylloc = yylloc_param;",
|
---|
1435 | "]])",
|
---|
1436 | "",
|
---|
1437 | " if ( !YY_G(yy_init) )",
|
---|
1438 | " {",
|
---|
1439 | " YY_G(yy_init) = 1;",
|
---|
1440 | "",
|
---|
1441 | "#ifdef YY_USER_INIT",
|
---|
1442 | " YY_USER_INIT;",
|
---|
1443 | "#endif",
|
---|
1444 | "",
|
---|
1445 | "m4_ifdef( [[M4_YY_USES_REJECT]],",
|
---|
1446 | "[[",
|
---|
1447 | " /* Create the reject buffer large enough to save one state per allowed character. */",
|
---|
1448 | " if ( ! YY_G(yy_state_buf) )",
|
---|
1449 | " YY_G(yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE M4_YY_CALL_LAST_ARG);",
|
---|
1450 | "]])",
|
---|
1451 | "",
|
---|
1452 | " if ( ! YY_G(yy_start) )",
|
---|
1453 | " YY_G(yy_start) = 1; /* first start state */",
|
---|
1454 | "",
|
---|
1455 | " if ( ! yyin )",
|
---|
1456 | "%if-c-only",
|
---|
1457 | " yyin = stdin;",
|
---|
1458 | "%endif",
|
---|
1459 | "%if-c++-only",
|
---|
1460 | " yyin = & std::cin;",
|
---|
1461 | "%endif",
|
---|
1462 | "",
|
---|
1463 | " if ( ! yyout )",
|
---|
1464 | "%if-c-only",
|
---|
1465 | " yyout = stdout;",
|
---|
1466 | "%endif",
|
---|
1467 | "%if-c++-only",
|
---|
1468 | " yyout = & std::cout;",
|
---|
1469 | "%endif",
|
---|
1470 | "",
|
---|
1471 | " if ( ! YY_CURRENT_BUFFER ) {",
|
---|
1472 | " yyensure_buffer_stack (M4_YY_CALL_ONLY_ARG);",
|
---|
1473 | " YY_CURRENT_BUFFER_LVALUE =",
|
---|
1474 | " yy_create_buffer( yyin, YY_BUF_SIZE M4_YY_CALL_LAST_ARG);",
|
---|
1475 | " }",
|
---|
1476 | "",
|
---|
1477 | " yy_load_buffer_state( M4_YY_CALL_ONLY_ARG );",
|
---|
1478 | " }",
|
---|
1479 | "",
|
---|
1480 | " while ( 1 ) /* loops until end-of-file is reached */",
|
---|
1481 | " {",
|
---|
1482 | "%% [8.0] yymore()-related code goes here",
|
---|
1483 | " yy_cp = YY_G(yy_c_buf_p);",
|
---|
1484 | "",
|
---|
1485 | " /* Support of yytext. */",
|
---|
1486 | " *yy_cp = YY_G(yy_hold_char);",
|
---|
1487 | "",
|
---|
1488 | " /* yy_bp points to the position in yy_ch_buf of the start of",
|
---|
1489 | " * the current run.",
|
---|
1490 | " */",
|
---|
1491 | " yy_bp = yy_cp;",
|
---|
1492 | "",
|
---|
1493 | "%% [9.0] code to set up and find next match goes here",
|
---|
1494 | "",
|
---|
1495 | "yy_find_action:",
|
---|
1496 | "%% [10.0] code to find the action number goes here",
|
---|
1497 | "",
|
---|
1498 | " YY_DO_BEFORE_ACTION;",
|
---|
1499 | "",
|
---|
1500 | "%% [11.0] code for yylineno update goes here",
|
---|
1501 | "",
|
---|
1502 | "do_action: /* This label is used only to access EOF actions. */",
|
---|
1503 | "",
|
---|
1504 | "%% [12.0] debug code goes here",
|
---|
1505 | "",
|
---|
1506 | " switch ( yy_act )",
|
---|
1507 | " { /* beginning of action switch */",
|
---|
1508 | "%% [13.0] actions go here",
|
---|
1509 | "",
|
---|
1510 | " case YY_END_OF_BUFFER:",
|
---|
1511 | " {",
|
---|
1512 | " /* Amount of text matched not including the EOB char. */",
|
---|
1513 | " int yy_amount_of_matched_text = (int) (yy_cp - YY_G(yytext_ptr)) - 1;",
|
---|
1514 | "",
|
---|
1515 | " /* Undo the effects of YY_DO_BEFORE_ACTION. */",
|
---|
1516 | " *yy_cp = YY_G(yy_hold_char);",
|
---|
1517 | " YY_RESTORE_YY_MORE_OFFSET",
|
---|
1518 | "",
|
---|
1519 | " if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )",
|
---|
1520 | " {",
|
---|
1521 | " /* We're scanning a new file or input source. It's",
|
---|
1522 | " * possible that this happened because the user",
|
---|
1523 | " * just pointed yyin at a new source and called",
|
---|
1524 | " * yylex(). If so, then we have to assure",
|
---|
1525 | " * consistency between YY_CURRENT_BUFFER and our",
|
---|
1526 | " * globals. Here is the right place to do so, because",
|
---|
1527 | " * this is the first action (other than possibly a",
|
---|
1528 | " * back-up) that will match for the new input source.",
|
---|
1529 | " */",
|
---|
1530 | " YY_G(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;",
|
---|
1531 | " YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;",
|
---|
1532 | " YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;",
|
---|
1533 | " }",
|
---|
1534 | "",
|
---|
1535 | " /* Note that here we test for yy_c_buf_p \"<=\" to the position",
|
---|
1536 | " * of the first EOB in the buffer, since yy_c_buf_p will",
|
---|
1537 | " * already have been incremented past the NUL character",
|
---|
1538 | " * (since all states make transitions on EOB to the",
|
---|
1539 | " * end-of-buffer state). Contrast this with the test",
|
---|
1540 | " * in input().",
|
---|
1541 | " */",
|
---|
1542 | " if ( YY_G(yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[YY_G(yy_n_chars)] )",
|
---|
1543 | " { /* This was really a NUL. */",
|
---|
1544 | " yy_state_type yy_next_state;",
|
---|
1545 | "",
|
---|
1546 | " YY_G(yy_c_buf_p) = YY_G(yytext_ptr) + yy_amount_of_matched_text;",
|
---|
1547 | "",
|
---|
1548 | " yy_current_state = yy_get_previous_state( M4_YY_CALL_ONLY_ARG );",
|
---|
1549 | "",
|
---|
1550 | " /* Okay, we're now positioned to make the NUL",
|
---|
1551 | " * transition. We couldn't have",
|
---|
1552 | " * yy_get_previous_state() go ahead and do it",
|
---|
1553 | " * for us because it doesn't know how to deal",
|
---|
1554 | " * with the possibility of jamming (and we don't",
|
---|
1555 | " * want to build jamming into it because then it",
|
---|
1556 | " * will run more slowly).",
|
---|
1557 | " */",
|
---|
1558 | "",
|
---|
1559 | " yy_next_state = yy_try_NUL_trans( yy_current_state M4_YY_CALL_LAST_ARG);",
|
---|
1560 | "",
|
---|
1561 | " yy_bp = YY_G(yytext_ptr) + YY_MORE_ADJ;",
|
---|
1562 | "",
|
---|
1563 | " if ( yy_next_state )",
|
---|
1564 | " {",
|
---|
1565 | " /* Consume the NUL. */",
|
---|
1566 | " yy_cp = ++YY_G(yy_c_buf_p);",
|
---|
1567 | " yy_current_state = yy_next_state;",
|
---|
1568 | " goto yy_match;",
|
---|
1569 | " }",
|
---|
1570 | "",
|
---|
1571 | " else",
|
---|
1572 | " {",
|
---|
1573 | "%% [14.0] code to do back-up for compressed tables and set up yy_cp goes here",
|
---|
1574 | " goto yy_find_action;",
|
---|
1575 | " }",
|
---|
1576 | " }",
|
---|
1577 | "",
|
---|
1578 | " else switch ( yy_get_next_buffer( M4_YY_CALL_ONLY_ARG ) )",
|
---|
1579 | " {",
|
---|
1580 | " case EOB_ACT_END_OF_FILE:",
|
---|
1581 | " {",
|
---|
1582 | " YY_G(yy_did_buffer_switch_on_eof) = 0;",
|
---|
1583 | "",
|
---|
1584 | " if ( yywrap( M4_YY_CALL_ONLY_ARG ) )",
|
---|
1585 | " {",
|
---|
1586 | " /* Note: because we've taken care in",
|
---|
1587 | " * yy_get_next_buffer() to have set up",
|
---|
1588 | " * yytext, we can now set up",
|
---|
1589 | " * yy_c_buf_p so that if some total",
|
---|
1590 | " * hoser (like flex itself) wants to",
|
---|
1591 | " * call the scanner after we return the",
|
---|
1592 | " * YY_NULL, it'll still work - another",
|
---|
1593 | " * YY_NULL will get returned.",
|
---|
1594 | " */",
|
---|
1595 | " YY_G(yy_c_buf_p) = YY_G(yytext_ptr) + YY_MORE_ADJ;",
|
---|
1596 | "",
|
---|
1597 | " yy_act = YY_STATE_EOF(YY_START);",
|
---|
1598 | " goto do_action;",
|
---|
1599 | " }",
|
---|
1600 | "",
|
---|
1601 | " else",
|
---|
1602 | " {",
|
---|
1603 | " if ( ! YY_G(yy_did_buffer_switch_on_eof) )",
|
---|
1604 | " YY_NEW_FILE;",
|
---|
1605 | " }",
|
---|
1606 | " break;",
|
---|
1607 | " }",
|
---|
1608 | "",
|
---|
1609 | " case EOB_ACT_CONTINUE_SCAN:",
|
---|
1610 | " YY_G(yy_c_buf_p) =",
|
---|
1611 | " YY_G(yytext_ptr) + yy_amount_of_matched_text;",
|
---|
1612 | "",
|
---|
1613 | " yy_current_state = yy_get_previous_state( M4_YY_CALL_ONLY_ARG );",
|
---|
1614 | "",
|
---|
1615 | " yy_cp = YY_G(yy_c_buf_p);",
|
---|
1616 | " yy_bp = YY_G(yytext_ptr) + YY_MORE_ADJ;",
|
---|
1617 | " goto yy_match;",
|
---|
1618 | "",
|
---|
1619 | " case EOB_ACT_LAST_MATCH:",
|
---|
1620 | " YY_G(yy_c_buf_p) =",
|
---|
1621 | " &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[YY_G(yy_n_chars)];",
|
---|
1622 | "",
|
---|
1623 | " yy_current_state = yy_get_previous_state( M4_YY_CALL_ONLY_ARG );",
|
---|
1624 | "",
|
---|
1625 | " yy_cp = YY_G(yy_c_buf_p);",
|
---|
1626 | " yy_bp = YY_G(yytext_ptr) + YY_MORE_ADJ;",
|
---|
1627 | " goto yy_find_action;",
|
---|
1628 | " }",
|
---|
1629 | " break;",
|
---|
1630 | " }",
|
---|
1631 | "",
|
---|
1632 | " default:",
|
---|
1633 | " YY_FATAL_ERROR(",
|
---|
1634 | " \"fatal flex scanner internal error--no action found\" );",
|
---|
1635 | " } /* end of action switch */",
|
---|
1636 | " } /* end of scanning one token */",
|
---|
1637 | "} /* end of yylex */",
|
---|
1638 | "%ok-for-header",
|
---|
1639 | "",
|
---|
1640 | "%if-c++-only",
|
---|
1641 | "%not-for-header",
|
---|
1642 | "yyFlexLexer::yyFlexLexer( std::istream* arg_yyin, std::ostream* arg_yyout )",
|
---|
1643 | "{",
|
---|
1644 | " yyin = arg_yyin;",
|
---|
1645 | " yyout = arg_yyout;",
|
---|
1646 | " yy_c_buf_p = 0;",
|
---|
1647 | " yy_init = 0;",
|
---|
1648 | " yy_start = 0;",
|
---|
1649 | " yy_flex_debug = 0;",
|
---|
1650 | " yylineno = 1; // this will only get updated if %option yylineno",
|
---|
1651 | "",
|
---|
1652 | " yy_did_buffer_switch_on_eof = 0;",
|
---|
1653 | "",
|
---|
1654 | " yy_looking_for_trail_begin = 0;",
|
---|
1655 | " yy_more_flag = 0;",
|
---|
1656 | " yy_more_len = 0;",
|
---|
1657 | " yy_more_offset = yy_prev_more_offset = 0;",
|
---|
1658 | "",
|
---|
1659 | " yy_start_stack_ptr = yy_start_stack_depth = 0;",
|
---|
1660 | " yy_start_stack = NULL;",
|
---|
1661 | "",
|
---|
1662 | " YY_G(yy_buffer_stack) = 0;",
|
---|
1663 | " YY_G(yy_buffer_stack_top) = 0;",
|
---|
1664 | " YY_G(yy_buffer_stack_max) = 0;",
|
---|
1665 | "",
|
---|
1666 | "",
|
---|
1667 | "m4_ifdef( [[M4_YY_USES_REJECT]],",
|
---|
1668 | "[[",
|
---|
1669 | " yy_state_buf = new yy_state_type[YY_STATE_BUF_SIZE];",
|
---|
1670 | "]],",
|
---|
1671 | "[[",
|
---|
1672 | " yy_state_buf = 0;",
|
---|
1673 | "]])",
|
---|
1674 | "}",
|
---|
1675 | "",
|
---|
1676 | "yyFlexLexer::~yyFlexLexer()",
|
---|
1677 | "{",
|
---|
1678 | " delete [] yy_state_buf;",
|
---|
1679 | " yyfree( yy_start_stack M4_YY_CALL_LAST_ARG );",
|
---|
1680 | " yy_delete_buffer( YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG);",
|
---|
1681 | "}",
|
---|
1682 | "",
|
---|
1683 | "void yyFlexLexer::switch_streams( std::istream* new_in, std::ostream* new_out )",
|
---|
1684 | "{",
|
---|
1685 | " if ( new_in )",
|
---|
1686 | " {",
|
---|
1687 | " yy_delete_buffer( YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG);",
|
---|
1688 | " yy_switch_to_buffer( yy_create_buffer( new_in, YY_BUF_SIZE M4_YY_CALL_LAST_ARG) M4_YY_CALL_LAST_ARG);",
|
---|
1689 | " }",
|
---|
1690 | "",
|
---|
1691 | " if ( new_out )",
|
---|
1692 | " yyout = new_out;",
|
---|
1693 | "}",
|
---|
1694 | "",
|
---|
1695 | "#ifdef YY_INTERACTIVE",
|
---|
1696 | "int yyFlexLexer::LexerInput( char* buf, int /* max_size */ )",
|
---|
1697 | "#else",
|
---|
1698 | "int yyFlexLexer::LexerInput( char* buf, int max_size )",
|
---|
1699 | "#endif",
|
---|
1700 | "{",
|
---|
1701 | " if ( yyin->eof() || yyin->fail() )",
|
---|
1702 | " return 0;",
|
---|
1703 | "",
|
---|
1704 | "#ifdef YY_INTERACTIVE",
|
---|
1705 | " yyin->get( buf[0] );",
|
---|
1706 | "",
|
---|
1707 | " if ( yyin->eof() )",
|
---|
1708 | " return 0;",
|
---|
1709 | "",
|
---|
1710 | " if ( yyin->bad() )",
|
---|
1711 | " return -1;",
|
---|
1712 | "",
|
---|
1713 | " return 1;",
|
---|
1714 | "",
|
---|
1715 | "#else",
|
---|
1716 | " (void) yyin->read( buf, max_size );",
|
---|
1717 | "",
|
---|
1718 | " if ( yyin->bad() )",
|
---|
1719 | " return -1;",
|
---|
1720 | " else",
|
---|
1721 | " return yyin->gcount();",
|
---|
1722 | "#endif",
|
---|
1723 | "}",
|
---|
1724 | "",
|
---|
1725 | "void yyFlexLexer::LexerOutput( const char* buf, int size )",
|
---|
1726 | "{",
|
---|
1727 | " (void) yyout->write( buf, size );",
|
---|
1728 | "}",
|
---|
1729 | "%ok-for-header",
|
---|
1730 | "%endif",
|
---|
1731 | "",
|
---|
1732 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
1733 | "[[",
|
---|
1734 | "/* yy_get_next_buffer - try to read in a new buffer",
|
---|
1735 | " *",
|
---|
1736 | " * Returns a code representing an action:",
|
---|
1737 | " * EOB_ACT_LAST_MATCH -",
|
---|
1738 | " * EOB_ACT_CONTINUE_SCAN - continue scanning from current position",
|
---|
1739 | " * EOB_ACT_END_OF_FILE - end of file",
|
---|
1740 | " */",
|
---|
1741 | "%if-c-only",
|
---|
1742 | "static int yy_get_next_buffer YYFARGS0(void)",
|
---|
1743 | "%endif",
|
---|
1744 | "%if-c++-only",
|
---|
1745 | "int yyFlexLexer::yy_get_next_buffer()",
|
---|
1746 | "%endif",
|
---|
1747 | "{",
|
---|
1748 | " M4_YY_DECL_GUTS_VAR();",
|
---|
1749 | " register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;",
|
---|
1750 | " register char *source = YY_G(yytext_ptr);",
|
---|
1751 | " register int number_to_move, i;",
|
---|
1752 | " int ret_val;",
|
---|
1753 | "",
|
---|
1754 | " if ( YY_G(yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[YY_G(yy_n_chars) + 1] )",
|
---|
1755 | " YY_FATAL_ERROR(",
|
---|
1756 | " \"fatal flex scanner internal error--end of buffer missed\" );",
|
---|
1757 | "",
|
---|
1758 | " if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )",
|
---|
1759 | " { /* Don't try to fill the buffer, so this is an EOF. */",
|
---|
1760 | " if ( YY_G(yy_c_buf_p) - YY_G(yytext_ptr) - YY_MORE_ADJ == 1 )",
|
---|
1761 | " {",
|
---|
1762 | " /* We matched a single character, the EOB, so",
|
---|
1763 | " * treat this as a final EOF.",
|
---|
1764 | " */",
|
---|
1765 | " return EOB_ACT_END_OF_FILE;",
|
---|
1766 | " }",
|
---|
1767 | "",
|
---|
1768 | " else",
|
---|
1769 | " {",
|
---|
1770 | " /* We matched some text prior to the EOB, first",
|
---|
1771 | " * process it.",
|
---|
1772 | " */",
|
---|
1773 | " return EOB_ACT_LAST_MATCH;",
|
---|
1774 | " }",
|
---|
1775 | " }",
|
---|
1776 | "",
|
---|
1777 | " /* Try to read more data. */",
|
---|
1778 | "",
|
---|
1779 | " /* First move last chars to start of buffer. */",
|
---|
1780 | " number_to_move = (int) (YY_G(yy_c_buf_p) - YY_G(yytext_ptr)) - 1;",
|
---|
1781 | "",
|
---|
1782 | " for ( i = 0; i < number_to_move; ++i )",
|
---|
1783 | " *(dest++) = *(source++);",
|
---|
1784 | "",
|
---|
1785 | " if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )",
|
---|
1786 | " /* don't do the read, it's not guaranteed to return an EOF,",
|
---|
1787 | " * just force an EOF",
|
---|
1788 | " */",
|
---|
1789 | " YY_CURRENT_BUFFER_LVALUE->yy_n_chars = YY_G(yy_n_chars) = 0;",
|
---|
1790 | "",
|
---|
1791 | " else",
|
---|
1792 | " {",
|
---|
1793 | " int num_to_read =",
|
---|
1794 | " YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;",
|
---|
1795 | "",
|
---|
1796 | " while ( num_to_read <= 0 )",
|
---|
1797 | " { /* Not enough room in the buffer - grow it. */",
|
---|
1798 | "m4_ifdef( [[M4_YY_USES_REJECT]],",
|
---|
1799 | "[[",
|
---|
1800 | " YY_FATAL_ERROR(",
|
---|
1801 | "\"input buffer overflow, can't enlarge buffer because scanner uses REJECT\" );",
|
---|
1802 | "]],",
|
---|
1803 | "[[",
|
---|
1804 | " /* just a shorter name for the current buffer */",
|
---|
1805 | " YY_BUFFER_STATE b = YY_CURRENT_BUFFER;",
|
---|
1806 | "",
|
---|
1807 | " int yy_c_buf_p_offset =",
|
---|
1808 | " (int) (YY_G(yy_c_buf_p) - b->yy_ch_buf);",
|
---|
1809 | "",
|
---|
1810 | " if ( b->yy_is_our_buffer )",
|
---|
1811 | " {",
|
---|
1812 | " int new_size = b->yy_buf_size * 2;",
|
---|
1813 | "",
|
---|
1814 | " if ( new_size <= 0 )",
|
---|
1815 | " b->yy_buf_size += b->yy_buf_size / 8;",
|
---|
1816 | " else",
|
---|
1817 | " b->yy_buf_size *= 2;",
|
---|
1818 | "",
|
---|
1819 | " b->yy_ch_buf = (char *)",
|
---|
1820 | " /* Include room in for 2 EOB chars. */",
|
---|
1821 | " yyrealloc( (void *) b->yy_ch_buf,",
|
---|
1822 | " b->yy_buf_size + 2 M4_YY_CALL_LAST_ARG );",
|
---|
1823 | " }",
|
---|
1824 | " else",
|
---|
1825 | " /* Can't grow it, we don't own it. */",
|
---|
1826 | " b->yy_ch_buf = 0;",
|
---|
1827 | "",
|
---|
1828 | " if ( ! b->yy_ch_buf )",
|
---|
1829 | " YY_FATAL_ERROR(",
|
---|
1830 | " \"fatal error - scanner input buffer overflow\" );",
|
---|
1831 | "",
|
---|
1832 | " YY_G(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];",
|
---|
1833 | "",
|
---|
1834 | " num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -",
|
---|
1835 | " number_to_move - 1;",
|
---|
1836 | "]])",
|
---|
1837 | " }",
|
---|
1838 | "",
|
---|
1839 | " if ( num_to_read > YY_READ_BUF_SIZE )",
|
---|
1840 | " num_to_read = YY_READ_BUF_SIZE;",
|
---|
1841 | "",
|
---|
1842 | " /* Read in more data. */",
|
---|
1843 | " YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),",
|
---|
1844 | " YY_G(yy_n_chars), num_to_read );",
|
---|
1845 | "",
|
---|
1846 | " YY_CURRENT_BUFFER_LVALUE->yy_n_chars = YY_G(yy_n_chars);",
|
---|
1847 | " }",
|
---|
1848 | "",
|
---|
1849 | " if ( YY_G(yy_n_chars) == 0 )",
|
---|
1850 | " {",
|
---|
1851 | " if ( number_to_move == YY_MORE_ADJ )",
|
---|
1852 | " {",
|
---|
1853 | " ret_val = EOB_ACT_END_OF_FILE;",
|
---|
1854 | " yyrestart( yyin M4_YY_CALL_LAST_ARG);",
|
---|
1855 | " }",
|
---|
1856 | "",
|
---|
1857 | " else",
|
---|
1858 | " {",
|
---|
1859 | " ret_val = EOB_ACT_LAST_MATCH;",
|
---|
1860 | " YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =",
|
---|
1861 | " YY_BUFFER_EOF_PENDING;",
|
---|
1862 | " }",
|
---|
1863 | " }",
|
---|
1864 | "",
|
---|
1865 | " else",
|
---|
1866 | " ret_val = EOB_ACT_CONTINUE_SCAN;",
|
---|
1867 | "",
|
---|
1868 | " YY_G(yy_n_chars) += number_to_move;",
|
---|
1869 | " YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[YY_G(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;",
|
---|
1870 | " YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[YY_G(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;",
|
---|
1871 | "",
|
---|
1872 | " YY_G(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];",
|
---|
1873 | "",
|
---|
1874 | " return ret_val;",
|
---|
1875 | "}",
|
---|
1876 | "]])",
|
---|
1877 | "",
|
---|
1878 | "/* yy_get_previous_state - get the state just before the EOB char was reached */",
|
---|
1879 | "",
|
---|
1880 | "%if-c-only",
|
---|
1881 | "%not-for-header",
|
---|
1882 | " static yy_state_type yy_get_previous_state YYFARGS0(void)",
|
---|
1883 | "%endif",
|
---|
1884 | "%if-c++-only",
|
---|
1885 | " yy_state_type yyFlexLexer::yy_get_previous_state()",
|
---|
1886 | "%endif",
|
---|
1887 | "{",
|
---|
1888 | " register yy_state_type yy_current_state;",
|
---|
1889 | " register char *yy_cp;",
|
---|
1890 | " M4_YY_DECL_GUTS_VAR();",
|
---|
1891 | "",
|
---|
1892 | "%% [15.0] code to get the start state into yy_current_state goes here",
|
---|
1893 | "",
|
---|
1894 | " for ( yy_cp = YY_G(yytext_ptr) + YY_MORE_ADJ; yy_cp < YY_G(yy_c_buf_p); ++yy_cp )",
|
---|
1895 | " {",
|
---|
1896 | "%% [16.0] code to find the next state goes here",
|
---|
1897 | " }",
|
---|
1898 | "",
|
---|
1899 | " return yy_current_state;",
|
---|
1900 | "}",
|
---|
1901 | "",
|
---|
1902 | "",
|
---|
1903 | "/* yy_try_NUL_trans - try to make a transition on the NUL character",
|
---|
1904 | " *",
|
---|
1905 | " * synopsis",
|
---|
1906 | " * next_state = yy_try_NUL_trans( current_state );",
|
---|
1907 | " */",
|
---|
1908 | "%if-c-only",
|
---|
1909 | " static yy_state_type yy_try_NUL_trans YYFARGS1( yy_state_type, yy_current_state)",
|
---|
1910 | "%endif",
|
---|
1911 | "%if-c++-only",
|
---|
1912 | " yy_state_type yyFlexLexer::yy_try_NUL_trans( yy_state_type yy_current_state )",
|
---|
1913 | "%endif",
|
---|
1914 | "{",
|
---|
1915 | " register int yy_is_jam;",
|
---|
1916 | " M4_YY_DECL_GUTS_VAR(); /* This var may be unused depending upon options. */",
|
---|
1917 | "%% [17.0] code to find the next state, and perhaps do backing up, goes here",
|
---|
1918 | "",
|
---|
1919 | " return yy_is_jam ? 0 : yy_current_state;",
|
---|
1920 | "}",
|
---|
1921 | "",
|
---|
1922 | "",
|
---|
1923 | "%if-c-only",
|
---|
1924 | "m4_ifdef( [[M4_YY_NO_UNPUT]],,",
|
---|
1925 | "[[",
|
---|
1926 | " static void yyunput YYFARGS2( int,c, register char *,yy_bp)",
|
---|
1927 | "%endif",
|
---|
1928 | "%if-c++-only",
|
---|
1929 | " void yyFlexLexer::yyunput( int c, register char* yy_bp)",
|
---|
1930 | "%endif",
|
---|
1931 | "{",
|
---|
1932 | " register char *yy_cp;",
|
---|
1933 | " M4_YY_DECL_GUTS_VAR();",
|
---|
1934 | "",
|
---|
1935 | " yy_cp = YY_G(yy_c_buf_p);",
|
---|
1936 | "",
|
---|
1937 | " /* undo effects of setting up yytext */",
|
---|
1938 | " *yy_cp = YY_G(yy_hold_char);",
|
---|
1939 | "",
|
---|
1940 | " if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )",
|
---|
1941 | " { /* need to shift things up to make room */",
|
---|
1942 | " /* +2 for EOB chars. */",
|
---|
1943 | " register int number_to_move = YY_G(yy_n_chars) + 2;",
|
---|
1944 | " register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[",
|
---|
1945 | " YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];",
|
---|
1946 | " register char *source =",
|
---|
1947 | " &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];",
|
---|
1948 | "",
|
---|
1949 | " while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )",
|
---|
1950 | " *--dest = *--source;",
|
---|
1951 | "",
|
---|
1952 | " yy_cp += (int) (dest - source);",
|
---|
1953 | " yy_bp += (int) (dest - source);",
|
---|
1954 | " YY_CURRENT_BUFFER_LVALUE->yy_n_chars =",
|
---|
1955 | " YY_G(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;",
|
---|
1956 | "",
|
---|
1957 | " if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )",
|
---|
1958 | " YY_FATAL_ERROR( \"flex scanner push-back overflow\" );",
|
---|
1959 | " }",
|
---|
1960 | "",
|
---|
1961 | " *--yy_cp = (char) c;",
|
---|
1962 | "",
|
---|
1963 | "%% [18.0] update yylineno here",
|
---|
1964 | "m4_ifdef( [[M4_YY_USE_LINENO]],",
|
---|
1965 | "[[",
|
---|
1966 | " if ( c == '\\n' ){",
|
---|
1967 | " --yylineno;",
|
---|
1968 | " }",
|
---|
1969 | "]])",
|
---|
1970 | "",
|
---|
1971 | " YY_G(yytext_ptr) = yy_bp;",
|
---|
1972 | " YY_G(yy_hold_char) = *yy_cp;",
|
---|
1973 | " YY_G(yy_c_buf_p) = yy_cp;",
|
---|
1974 | "}",
|
---|
1975 | "%if-c-only",
|
---|
1976 | "]])",
|
---|
1977 | "%endif",
|
---|
1978 | "",
|
---|
1979 | "%if-c-only",
|
---|
1980 | "#ifndef YY_NO_INPUT",
|
---|
1981 | "#ifdef __cplusplus",
|
---|
1982 | " static int yyinput YYFARGS0(void)",
|
---|
1983 | "#else",
|
---|
1984 | " static int input YYFARGS0(void)",
|
---|
1985 | "#endif",
|
---|
1986 | "",
|
---|
1987 | "%endif",
|
---|
1988 | "%if-c++-only",
|
---|
1989 | " int yyFlexLexer::yyinput()",
|
---|
1990 | "%endif",
|
---|
1991 | "{",
|
---|
1992 | " int c;",
|
---|
1993 | " M4_YY_DECL_GUTS_VAR();",
|
---|
1994 | "",
|
---|
1995 | " *YY_G(yy_c_buf_p) = YY_G(yy_hold_char);",
|
---|
1996 | "",
|
---|
1997 | " if ( *YY_G(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )",
|
---|
1998 | " {",
|
---|
1999 | " /* yy_c_buf_p now points to the character we want to return.",
|
---|
2000 | " * If this occurs *before* the EOB characters, then it's a",
|
---|
2001 | " * valid NUL; if not, then we've hit the end of the buffer.",
|
---|
2002 | " */",
|
---|
2003 | " if ( YY_G(yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[YY_G(yy_n_chars)] )",
|
---|
2004 | " /* This was really a NUL. */",
|
---|
2005 | " *YY_G(yy_c_buf_p) = '\\0';",
|
---|
2006 | "",
|
---|
2007 | " else",
|
---|
2008 | " { /* need more input */",
|
---|
2009 | " int offset = YY_G(yy_c_buf_p) - YY_G(yytext_ptr);",
|
---|
2010 | " ++YY_G(yy_c_buf_p);",
|
---|
2011 | "",
|
---|
2012 | " switch ( yy_get_next_buffer( M4_YY_CALL_ONLY_ARG ) )",
|
---|
2013 | " {",
|
---|
2014 | " case EOB_ACT_LAST_MATCH:",
|
---|
2015 | " /* This happens because yy_g_n_b()",
|
---|
2016 | " * sees that we've accumulated a",
|
---|
2017 | " * token and flags that we need to",
|
---|
2018 | " * try matching the token before",
|
---|
2019 | " * proceeding. But for input(),",
|
---|
2020 | " * there's no matching to consider.",
|
---|
2021 | " * So convert the EOB_ACT_LAST_MATCH",
|
---|
2022 | " * to EOB_ACT_END_OF_FILE.",
|
---|
2023 | " */",
|
---|
2024 | "",
|
---|
2025 | " /* Reset buffer status. */",
|
---|
2026 | " yyrestart( yyin M4_YY_CALL_LAST_ARG);",
|
---|
2027 | "",
|
---|
2028 | " /*FALLTHROUGH*/",
|
---|
2029 | "",
|
---|
2030 | " case EOB_ACT_END_OF_FILE:",
|
---|
2031 | " {",
|
---|
2032 | " if ( yywrap( M4_YY_CALL_ONLY_ARG ) )",
|
---|
2033 | " return EOF;",
|
---|
2034 | "",
|
---|
2035 | " if ( ! YY_G(yy_did_buffer_switch_on_eof) )",
|
---|
2036 | " YY_NEW_FILE;",
|
---|
2037 | "#ifdef __cplusplus",
|
---|
2038 | " return yyinput(M4_YY_CALL_ONLY_ARG);",
|
---|
2039 | "#else",
|
---|
2040 | " return input(M4_YY_CALL_ONLY_ARG);",
|
---|
2041 | "#endif",
|
---|
2042 | " }",
|
---|
2043 | "",
|
---|
2044 | " case EOB_ACT_CONTINUE_SCAN:",
|
---|
2045 | " YY_G(yy_c_buf_p) = YY_G(yytext_ptr) + offset;",
|
---|
2046 | " break;",
|
---|
2047 | " }",
|
---|
2048 | " }",
|
---|
2049 | " }",
|
---|
2050 | "",
|
---|
2051 | " c = *(unsigned char *) YY_G(yy_c_buf_p); /* cast for 8-bit char's */",
|
---|
2052 | " *YY_G(yy_c_buf_p) = '\\0'; /* preserve yytext */",
|
---|
2053 | " YY_G(yy_hold_char) = *++YY_G(yy_c_buf_p);",
|
---|
2054 | "",
|
---|
2055 | "%% [19.0] update BOL and yylineno",
|
---|
2056 | "",
|
---|
2057 | " return c;",
|
---|
2058 | "}",
|
---|
2059 | "%if-c-only",
|
---|
2060 | "#endif /* ifndef YY_NO_INPUT */",
|
---|
2061 | "%endif",
|
---|
2062 | "",
|
---|
2063 | "/** Immediately switch to a different input stream.",
|
---|
2064 | " * @param input_file A readable stream.",
|
---|
2065 | " * M4_YY_DOC_PARAM",
|
---|
2066 | " * @note This function does not reset the start condition to @c INITIAL .",
|
---|
2067 | " */",
|
---|
2068 | "%if-c-only",
|
---|
2069 | " void yyrestart YYFARGS1( FILE *,input_file)",
|
---|
2070 | "%endif",
|
---|
2071 | "%if-c++-only",
|
---|
2072 | " void yyFlexLexer::yyrestart( std::istream* input_file )",
|
---|
2073 | "%endif",
|
---|
2074 | "{",
|
---|
2075 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2076 | "",
|
---|
2077 | " if ( ! YY_CURRENT_BUFFER ){",
|
---|
2078 | " yyensure_buffer_stack (M4_YY_CALL_ONLY_ARG);",
|
---|
2079 | " YY_CURRENT_BUFFER_LVALUE =",
|
---|
2080 | " yy_create_buffer( yyin, YY_BUF_SIZE M4_YY_CALL_LAST_ARG);",
|
---|
2081 | " }",
|
---|
2082 | "",
|
---|
2083 | " yy_init_buffer( YY_CURRENT_BUFFER, input_file M4_YY_CALL_LAST_ARG);",
|
---|
2084 | " yy_load_buffer_state( M4_YY_CALL_ONLY_ARG );",
|
---|
2085 | "}",
|
---|
2086 | "",
|
---|
2087 | "/** Switch to a different input buffer.",
|
---|
2088 | " * @param new_buffer The new input buffer.",
|
---|
2089 | " * M4_YY_DOC_PARAM",
|
---|
2090 | " */",
|
---|
2091 | "%if-c-only",
|
---|
2092 | " void yy_switch_to_buffer YYFARGS1( YY_BUFFER_STATE ,new_buffer)",
|
---|
2093 | "%endif",
|
---|
2094 | "%if-c++-only",
|
---|
2095 | " void yyFlexLexer::yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )",
|
---|
2096 | "%endif",
|
---|
2097 | "{",
|
---|
2098 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2099 | "",
|
---|
2100 | " /* TODO. We should be able to replace this entire function body",
|
---|
2101 | " * with",
|
---|
2102 | " * yypop_buffer_state();",
|
---|
2103 | " * yypush_buffer_state(new_buffer);",
|
---|
2104 | " */",
|
---|
2105 | " yyensure_buffer_stack (M4_YY_CALL_ONLY_ARG);",
|
---|
2106 | " if ( YY_CURRENT_BUFFER == new_buffer )",
|
---|
2107 | " return;",
|
---|
2108 | "",
|
---|
2109 | " if ( YY_CURRENT_BUFFER )",
|
---|
2110 | " {",
|
---|
2111 | " /* Flush out information for old buffer. */",
|
---|
2112 | " *YY_G(yy_c_buf_p) = YY_G(yy_hold_char);",
|
---|
2113 | " YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = YY_G(yy_c_buf_p);",
|
---|
2114 | " YY_CURRENT_BUFFER_LVALUE->yy_n_chars = YY_G(yy_n_chars);",
|
---|
2115 | " }",
|
---|
2116 | "",
|
---|
2117 | " YY_CURRENT_BUFFER_LVALUE = new_buffer;",
|
---|
2118 | " yy_load_buffer_state( M4_YY_CALL_ONLY_ARG );",
|
---|
2119 | "",
|
---|
2120 | " /* We don't actually know whether we did this switch during",
|
---|
2121 | " * EOF (yywrap()) processing, but the only time this flag",
|
---|
2122 | " * is looked at is after yywrap() is called, so it's safe",
|
---|
2123 | " * to go ahead and always set it.",
|
---|
2124 | " */",
|
---|
2125 | " YY_G(yy_did_buffer_switch_on_eof) = 1;",
|
---|
2126 | "}",
|
---|
2127 | "",
|
---|
2128 | "",
|
---|
2129 | "%if-c-only",
|
---|
2130 | "static void yy_load_buffer_state YYFARGS0(void)",
|
---|
2131 | "%endif",
|
---|
2132 | "%if-c++-only",
|
---|
2133 | " void yyFlexLexer::yy_load_buffer_state()",
|
---|
2134 | "%endif",
|
---|
2135 | "{",
|
---|
2136 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2137 | " YY_G(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;",
|
---|
2138 | " YY_G(yytext_ptr) = YY_G(yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;",
|
---|
2139 | " yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;",
|
---|
2140 | " YY_G(yy_hold_char) = *YY_G(yy_c_buf_p);",
|
---|
2141 | "}",
|
---|
2142 | "",
|
---|
2143 | "/** Allocate and initialize an input buffer state.",
|
---|
2144 | " * @param file A readable stream.",
|
---|
2145 | " * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.",
|
---|
2146 | " * M4_YY_DOC_PARAM",
|
---|
2147 | " * @return the allocated buffer state.",
|
---|
2148 | " */",
|
---|
2149 | "%if-c-only",
|
---|
2150 | " YY_BUFFER_STATE yy_create_buffer YYFARGS2( FILE *,file, int ,size)",
|
---|
2151 | "%endif",
|
---|
2152 | "%if-c++-only",
|
---|
2153 | " YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( std::istream* file, int size )",
|
---|
2154 | "%endif",
|
---|
2155 | "{",
|
---|
2156 | " YY_BUFFER_STATE b;",
|
---|
2157 | " m4_dnl M4_YY_DECL_GUTS_VAR();",
|
---|
2158 | "",
|
---|
2159 | " b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) M4_YY_CALL_LAST_ARG );",
|
---|
2160 | " if ( ! b )",
|
---|
2161 | " YY_FATAL_ERROR( \"out of dynamic memory in yy_create_buffer()\" );",
|
---|
2162 | "",
|
---|
2163 | " b->yy_buf_size = size;",
|
---|
2164 | "",
|
---|
2165 | " /* yy_ch_buf has to be 2 characters longer than the size given because",
|
---|
2166 | " * we need to put in 2 end-of-buffer characters.",
|
---|
2167 | " */",
|
---|
2168 | " b->yy_ch_buf = (char *) yyalloc( b->yy_buf_size + 2 M4_YY_CALL_LAST_ARG );",
|
---|
2169 | " if ( ! b->yy_ch_buf )",
|
---|
2170 | " YY_FATAL_ERROR( \"out of dynamic memory in yy_create_buffer()\" );",
|
---|
2171 | "",
|
---|
2172 | " b->yy_is_our_buffer = 1;",
|
---|
2173 | "",
|
---|
2174 | " yy_init_buffer( b, file M4_YY_CALL_LAST_ARG);",
|
---|
2175 | "",
|
---|
2176 | " return b;",
|
---|
2177 | "}",
|
---|
2178 | "",
|
---|
2179 | "/** Destroy the buffer.",
|
---|
2180 | " * @param b a buffer created with yy_create_buffer()",
|
---|
2181 | " * M4_YY_DOC_PARAM",
|
---|
2182 | " */",
|
---|
2183 | "%if-c-only",
|
---|
2184 | " void yy_delete_buffer YYFARGS1( YY_BUFFER_STATE ,b)",
|
---|
2185 | "%endif",
|
---|
2186 | "%if-c++-only",
|
---|
2187 | " void yyFlexLexer::yy_delete_buffer( YY_BUFFER_STATE b )",
|
---|
2188 | "%endif",
|
---|
2189 | "{",
|
---|
2190 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2191 | "",
|
---|
2192 | " if ( ! b )",
|
---|
2193 | " return;",
|
---|
2194 | "",
|
---|
2195 | " if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */",
|
---|
2196 | " YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;",
|
---|
2197 | "",
|
---|
2198 | " if ( b->yy_is_our_buffer )",
|
---|
2199 | " yyfree( (void *) b->yy_ch_buf M4_YY_CALL_LAST_ARG );",
|
---|
2200 | "",
|
---|
2201 | " yyfree( (void *) b M4_YY_CALL_LAST_ARG );",
|
---|
2202 | "}",
|
---|
2203 | "",
|
---|
2204 | "",
|
---|
2205 | "%if-c-only",
|
---|
2206 | "m4_ifdef( [[M4_YY_ALWAYS_INTERACTIVE]],,",
|
---|
2207 | "[[",
|
---|
2208 | " m4_ifdef( [[M4_YY_NEVER_INTERACTIVE]],,",
|
---|
2209 | " [[",
|
---|
2210 | "#ifndef __cplusplus",
|
---|
2211 | "extern int isatty M4_YY_PARAMS( int );",
|
---|
2212 | "#endif /* __cplusplus */",
|
---|
2213 | " ]])",
|
---|
2214 | "]])",
|
---|
2215 | "%endif",
|
---|
2216 | "",
|
---|
2217 | "%if-c++-only",
|
---|
2218 | "m4_ifdef( [[M4_YY_NEVER_INTERACTIVE]],,",
|
---|
2219 | "[[",
|
---|
2220 | "extern \"C\" int isatty M4_YY_PARAMS( int );",
|
---|
2221 | "]])",
|
---|
2222 | "%endif",
|
---|
2223 | "",
|
---|
2224 | "/* Initializes or reinitializes a buffer.",
|
---|
2225 | " * This function is sometimes called more than once on the same buffer,",
|
---|
2226 | " * such as during a yyrestart() or at EOF.",
|
---|
2227 | " */",
|
---|
2228 | "%if-c-only",
|
---|
2229 | " static void yy_init_buffer YYFARGS2( YY_BUFFER_STATE ,b, FILE *,file)",
|
---|
2230 | "%endif",
|
---|
2231 | "%if-c++-only",
|
---|
2232 | " void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, std::istream* file )",
|
---|
2233 | "%endif",
|
---|
2234 | "",
|
---|
2235 | "{",
|
---|
2236 | " int oerrno = errno;",
|
---|
2237 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2238 | "",
|
---|
2239 | " yy_flush_buffer( b M4_YY_CALL_LAST_ARG);",
|
---|
2240 | "",
|
---|
2241 | " b->yy_input_file = file;",
|
---|
2242 | " b->yy_fill_buffer = 1;",
|
---|
2243 | "",
|
---|
2244 | " /* If b is the current buffer, then yy_init_buffer was _probably_",
|
---|
2245 | " * called from yyrestart() or through yy_get_next_buffer.",
|
---|
2246 | " * In that case, we don't want to reset the lineno or column.",
|
---|
2247 | " */",
|
---|
2248 | " if (b != YY_CURRENT_BUFFER){",
|
---|
2249 | " b->yy_bs_lineno = 1;",
|
---|
2250 | " b->yy_bs_column = 0;",
|
---|
2251 | " }",
|
---|
2252 | "",
|
---|
2253 | "%if-c-only",
|
---|
2254 | "m4_ifdef( [[M4_YY_ALWAYS_INTERACTIVE]],",
|
---|
2255 | "[[",
|
---|
2256 | " b->yy_is_interactive = 1;",
|
---|
2257 | "]],",
|
---|
2258 | "[[",
|
---|
2259 | " m4_ifdef( [[M4_YY_NEVER_INTERACTIVE]],",
|
---|
2260 | " [[",
|
---|
2261 | " b->yy_is_interactive = 0;",
|
---|
2262 | " ]],",
|
---|
2263 | " [[",
|
---|
2264 | " b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;",
|
---|
2265 | " ]])",
|
---|
2266 | "]])",
|
---|
2267 | "%endif",
|
---|
2268 | "%if-c++-only",
|
---|
2269 | " b->yy_is_interactive = 0;",
|
---|
2270 | "%endif",
|
---|
2271 | " errno = oerrno;",
|
---|
2272 | "}",
|
---|
2273 | "",
|
---|
2274 | "/** Discard all buffered characters. On the next scan, YY_INPUT will be called.",
|
---|
2275 | " * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.",
|
---|
2276 | " * M4_YY_DOC_PARAM",
|
---|
2277 | " */",
|
---|
2278 | "%if-c-only",
|
---|
2279 | " void yy_flush_buffer YYFARGS1( YY_BUFFER_STATE ,b)",
|
---|
2280 | "%endif",
|
---|
2281 | "%if-c++-only",
|
---|
2282 | " void yyFlexLexer::yy_flush_buffer( YY_BUFFER_STATE b )",
|
---|
2283 | "%endif",
|
---|
2284 | "{",
|
---|
2285 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2286 | " if ( ! b )",
|
---|
2287 | " return;",
|
---|
2288 | "",
|
---|
2289 | " b->yy_n_chars = 0;",
|
---|
2290 | "",
|
---|
2291 | " /* We always need two end-of-buffer characters. The first causes",
|
---|
2292 | " * a transition to the end-of-buffer state. The second causes",
|
---|
2293 | " * a jam in that state.",
|
---|
2294 | " */",
|
---|
2295 | " b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;",
|
---|
2296 | " b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;",
|
---|
2297 | "",
|
---|
2298 | " b->yy_buf_pos = &b->yy_ch_buf[0];",
|
---|
2299 | "",
|
---|
2300 | " b->yy_at_bol = 1;",
|
---|
2301 | " b->yy_buffer_status = YY_BUFFER_NEW;",
|
---|
2302 | "",
|
---|
2303 | " if ( b == YY_CURRENT_BUFFER )",
|
---|
2304 | " yy_load_buffer_state( M4_YY_CALL_ONLY_ARG );",
|
---|
2305 | "}",
|
---|
2306 | "",
|
---|
2307 | "%if-c-or-c++",
|
---|
2308 | "/** Pushes the new state onto the stack. The new state becomes",
|
---|
2309 | " * the current state. This function will allocate the stack",
|
---|
2310 | " * if necessary.",
|
---|
2311 | " * @param new_buffer The new state.",
|
---|
2312 | " * M4_YY_DOC_PARAM",
|
---|
2313 | " */",
|
---|
2314 | "%if-c-only",
|
---|
2315 | "void yypush_buffer_state YYFARGS1(YY_BUFFER_STATE,new_buffer)",
|
---|
2316 | "%endif",
|
---|
2317 | "%if-c++-only",
|
---|
2318 | "void yyFlexLexer::yypush_buffer_state (YY_BUFFER_STATE new_buffer)",
|
---|
2319 | "%endif",
|
---|
2320 | "{",
|
---|
2321 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2322 | " if (new_buffer == NULL)",
|
---|
2323 | " return;",
|
---|
2324 | "",
|
---|
2325 | " yyensure_buffer_stack(M4_YY_CALL_ONLY_ARG);",
|
---|
2326 | "",
|
---|
2327 | " /* This block is copied from yy_switch_to_buffer. */",
|
---|
2328 | " if ( YY_CURRENT_BUFFER )",
|
---|
2329 | " {",
|
---|
2330 | " /* Flush out information for old buffer. */",
|
---|
2331 | " *YY_G(yy_c_buf_p) = YY_G(yy_hold_char);",
|
---|
2332 | " YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = YY_G(yy_c_buf_p);",
|
---|
2333 | " YY_CURRENT_BUFFER_LVALUE->yy_n_chars = YY_G(yy_n_chars);",
|
---|
2334 | " }",
|
---|
2335 | "",
|
---|
2336 | " /* Only push if top exists. Otherwise, replace top. */",
|
---|
2337 | " if (YY_CURRENT_BUFFER)",
|
---|
2338 | " YY_G(yy_buffer_stack_top)++;",
|
---|
2339 | " YY_CURRENT_BUFFER_LVALUE = new_buffer;",
|
---|
2340 | "",
|
---|
2341 | " /* copied from yy_switch_to_buffer. */",
|
---|
2342 | " yy_load_buffer_state( M4_YY_CALL_ONLY_ARG );",
|
---|
2343 | " YY_G(yy_did_buffer_switch_on_eof) = 1;",
|
---|
2344 | "}",
|
---|
2345 | "%endif",
|
---|
2346 | "",
|
---|
2347 | "",
|
---|
2348 | "%if-c-or-c++",
|
---|
2349 | "/** Removes and deletes the top of the stack, if present.",
|
---|
2350 | " * The next element becomes the new top.",
|
---|
2351 | " * M4_YY_DOC_PARAM",
|
---|
2352 | " */",
|
---|
2353 | "%if-c-only",
|
---|
2354 | "void yypop_buffer_state YYFARGS0(void)",
|
---|
2355 | "%endif",
|
---|
2356 | "%if-c++-only",
|
---|
2357 | "void yyFlexLexer::yypop_buffer_state (void)",
|
---|
2358 | "%endif",
|
---|
2359 | "{",
|
---|
2360 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2361 | " if (!YY_CURRENT_BUFFER)",
|
---|
2362 | " return;",
|
---|
2363 | "",
|
---|
2364 | " yy_delete_buffer(YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG);",
|
---|
2365 | " YY_CURRENT_BUFFER_LVALUE = NULL;",
|
---|
2366 | " if (YY_G(yy_buffer_stack_top) > 0)",
|
---|
2367 | " --YY_G(yy_buffer_stack_top);",
|
---|
2368 | "",
|
---|
2369 | " if (YY_CURRENT_BUFFER) {",
|
---|
2370 | " yy_load_buffer_state( M4_YY_CALL_ONLY_ARG );",
|
---|
2371 | " YY_G(yy_did_buffer_switch_on_eof) = 1;",
|
---|
2372 | " }",
|
---|
2373 | "}",
|
---|
2374 | "%endif",
|
---|
2375 | "",
|
---|
2376 | "",
|
---|
2377 | "%if-c-or-c++",
|
---|
2378 | "/* Allocates the stack if it does not exist.",
|
---|
2379 | " * Guarantees space for at least one push.",
|
---|
2380 | " */",
|
---|
2381 | "%if-c-only",
|
---|
2382 | "static void yyensure_buffer_stack YYFARGS0(void)",
|
---|
2383 | "%endif",
|
---|
2384 | "%if-c++-only",
|
---|
2385 | "void yyFlexLexer::yyensure_buffer_stack(void)",
|
---|
2386 | "%endif",
|
---|
2387 | "{",
|
---|
2388 | " int num_to_alloc;",
|
---|
2389 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2390 | "",
|
---|
2391 | " if (!YY_G(yy_buffer_stack)) {",
|
---|
2392 | "",
|
---|
2393 | " /* First allocation is just for 2 elements, since we don't know if this",
|
---|
2394 | " * scanner will even need a stack. We use 2 instead of 1 to avoid an",
|
---|
2395 | " * immediate realloc on the next call.",
|
---|
2396 | " */",
|
---|
2397 | " num_to_alloc = 1;",
|
---|
2398 | " YY_G(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc",
|
---|
2399 | " (num_to_alloc * sizeof(struct yy_buffer_state*)",
|
---|
2400 | " M4_YY_CALL_LAST_ARG);",
|
---|
2401 | " ",
|
---|
2402 | " memset(YY_G(yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));",
|
---|
2403 | " ",
|
---|
2404 | " YY_G(yy_buffer_stack_max) = num_to_alloc;",
|
---|
2405 | " YY_G(yy_buffer_stack_top) = 0;",
|
---|
2406 | " return;",
|
---|
2407 | " }",
|
---|
2408 | "",
|
---|
2409 | " if (YY_G(yy_buffer_stack_top) >= (YY_G(yy_buffer_stack_max)) - 1){",
|
---|
2410 | "",
|
---|
2411 | " /* Increase the buffer to prepare for a possible push. */",
|
---|
2412 | " int grow_size = 8 /* arbitrary grow size */;",
|
---|
2413 | "",
|
---|
2414 | " num_to_alloc = YY_G(yy_buffer_stack_max) + grow_size;",
|
---|
2415 | " YY_G(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc",
|
---|
2416 | " (YY_G(yy_buffer_stack),",
|
---|
2417 | " num_to_alloc * sizeof(struct yy_buffer_state*)",
|
---|
2418 | " M4_YY_CALL_LAST_ARG);",
|
---|
2419 | "",
|
---|
2420 | " /* zero only the new slots.*/",
|
---|
2421 | " memset(YY_G(yy_buffer_stack) + YY_G(yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));",
|
---|
2422 | " YY_G(yy_buffer_stack_max) = num_to_alloc;",
|
---|
2423 | " }",
|
---|
2424 | "}",
|
---|
2425 | "%endif",
|
---|
2426 | "",
|
---|
2427 | "",
|
---|
2428 | "",
|
---|
2429 | "",
|
---|
2430 | "m4_ifdef( [[M4_YY_NO_SCAN_BUFFER]],,",
|
---|
2431 | "[[",
|
---|
2432 | "%if-c-only",
|
---|
2433 | "/** Setup the input buffer state to scan directly from a user-specified character buffer.",
|
---|
2434 | " * @param base the character buffer",
|
---|
2435 | " * @param size the size in bytes of the character buffer",
|
---|
2436 | " * M4_YY_DOC_PARAM",
|
---|
2437 | " * @return the newly allocated buffer state object. ",
|
---|
2438 | " */",
|
---|
2439 | "YY_BUFFER_STATE yy_scan_buffer YYFARGS2( char *,base, yy_size_t ,size)",
|
---|
2440 | "{",
|
---|
2441 | " YY_BUFFER_STATE b;",
|
---|
2442 | " m4_dnl M4_YY_DECL_GUTS_VAR();",
|
---|
2443 | "",
|
---|
2444 | " if ( size < 2 ||",
|
---|
2445 | " base[size-2] != YY_END_OF_BUFFER_CHAR ||",
|
---|
2446 | " base[size-1] != YY_END_OF_BUFFER_CHAR )",
|
---|
2447 | " /* They forgot to leave room for the EOB's. */",
|
---|
2448 | " return 0;",
|
---|
2449 | "",
|
---|
2450 | " b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) M4_YY_CALL_LAST_ARG );",
|
---|
2451 | " if ( ! b )",
|
---|
2452 | " YY_FATAL_ERROR( \"out of dynamic memory in yy_scan_buffer()\" );",
|
---|
2453 | "",
|
---|
2454 | " b->yy_buf_size = size - 2; /* \"- 2\" to take care of EOB's */",
|
---|
2455 | " b->yy_buf_pos = b->yy_ch_buf = base;",
|
---|
2456 | " b->yy_is_our_buffer = 0;",
|
---|
2457 | " b->yy_input_file = 0;",
|
---|
2458 | " b->yy_n_chars = b->yy_buf_size;",
|
---|
2459 | " b->yy_is_interactive = 0;",
|
---|
2460 | " b->yy_at_bol = 1;",
|
---|
2461 | " b->yy_fill_buffer = 0;",
|
---|
2462 | " b->yy_buffer_status = YY_BUFFER_NEW;",
|
---|
2463 | "",
|
---|
2464 | " yy_switch_to_buffer( b M4_YY_CALL_LAST_ARG );",
|
---|
2465 | "",
|
---|
2466 | " return b;",
|
---|
2467 | "}",
|
---|
2468 | "%endif",
|
---|
2469 | "]])",
|
---|
2470 | "",
|
---|
2471 | "",
|
---|
2472 | "m4_ifdef( [[M4_YY_NO_SCAN_STRING]],,",
|
---|
2473 | "[[",
|
---|
2474 | "%if-c-only",
|
---|
2475 | "/** Setup the input buffer state to scan a string. The next call to yylex() will",
|
---|
2476 | " * scan from a @e copy of @a str.",
|
---|
2477 | " * @param str a NUL-terminated string to scan",
|
---|
2478 | " * M4_YY_DOC_PARAM",
|
---|
2479 | " * @return the newly allocated buffer state object.",
|
---|
2480 | " * @note If you want to scan bytes that may contain NUL values, then use",
|
---|
2481 | " * yy_scan_bytes() instead.",
|
---|
2482 | " */",
|
---|
2483 | "YY_BUFFER_STATE yy_scan_string YYFARGS1( yyconst char *, yystr)",
|
---|
2484 | "{",
|
---|
2485 | " m4_dnl M4_YY_DECL_GUTS_VAR();",
|
---|
2486 | "",
|
---|
2487 | " return yy_scan_bytes( yystr, strlen(yystr) M4_YY_CALL_LAST_ARG);",
|
---|
2488 | "}",
|
---|
2489 | "%endif",
|
---|
2490 | "]])",
|
---|
2491 | "",
|
---|
2492 | "",
|
---|
2493 | "m4_ifdef( [[M4_YY_NO_SCAN_BYTES]],,",
|
---|
2494 | "[[",
|
---|
2495 | "%if-c-only",
|
---|
2496 | "/** Setup the input buffer state to scan the given bytes. The next call to yylex() will",
|
---|
2497 | " * scan from a @e copy of @a bytes.",
|
---|
2498 | " * @param bytes the byte buffer to scan",
|
---|
2499 | " * @param len the number of bytes in the buffer pointed to by @a bytes.",
|
---|
2500 | " * M4_YY_DOC_PARAM",
|
---|
2501 | " * @return the newly allocated buffer state object.",
|
---|
2502 | " */",
|
---|
2503 | "YY_BUFFER_STATE yy_scan_bytes YYFARGS2( yyconst char *,yybytes, int ,_yybytes_len)",
|
---|
2504 | "{",
|
---|
2505 | " YY_BUFFER_STATE b;",
|
---|
2506 | " char *buf;",
|
---|
2507 | " yy_size_t n;",
|
---|
2508 | " int i;",
|
---|
2509 | " m4_dnl M4_YY_DECL_GUTS_VAR();",
|
---|
2510 | "",
|
---|
2511 | " /* Get memory for full buffer, including space for trailing EOB's. */",
|
---|
2512 | " n = _yybytes_len + 2;",
|
---|
2513 | " buf = (char *) yyalloc( n M4_YY_CALL_LAST_ARG );",
|
---|
2514 | " if ( ! buf )",
|
---|
2515 | " YY_FATAL_ERROR( \"out of dynamic memory in yy_scan_bytes()\" );",
|
---|
2516 | "",
|
---|
2517 | " for ( i = 0; i < _yybytes_len; ++i )",
|
---|
2518 | " buf[i] = yybytes[i];",
|
---|
2519 | "",
|
---|
2520 | " buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;",
|
---|
2521 | "",
|
---|
2522 | " b = yy_scan_buffer( buf, n M4_YY_CALL_LAST_ARG);",
|
---|
2523 | " if ( ! b )",
|
---|
2524 | " YY_FATAL_ERROR( \"bad buffer in yy_scan_bytes()\" );",
|
---|
2525 | "",
|
---|
2526 | " /* It's okay to grow etc. this buffer, and we should throw it",
|
---|
2527 | " * away when we're done.",
|
---|
2528 | " */",
|
---|
2529 | " b->yy_is_our_buffer = 1;",
|
---|
2530 | "",
|
---|
2531 | " return b;",
|
---|
2532 | "}",
|
---|
2533 | "%endif",
|
---|
2534 | "]])",
|
---|
2535 | "",
|
---|
2536 | "",
|
---|
2537 | "m4_ifdef( [[M4_YY_NO_PUSH_STATE]],,",
|
---|
2538 | "[[",
|
---|
2539 | "%if-c-only",
|
---|
2540 | " static void yy_push_state YYFARGS1( int ,new_state)",
|
---|
2541 | "%endif",
|
---|
2542 | "%if-c++-only",
|
---|
2543 | " void yyFlexLexer::yy_push_state( int new_state )",
|
---|
2544 | "%endif",
|
---|
2545 | "{",
|
---|
2546 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2547 | " if ( YY_G(yy_start_stack_ptr) >= YY_G(yy_start_stack_depth) )",
|
---|
2548 | " {",
|
---|
2549 | " yy_size_t new_size;",
|
---|
2550 | "",
|
---|
2551 | " YY_G(yy_start_stack_depth) += YY_START_STACK_INCR;",
|
---|
2552 | " new_size = YY_G(yy_start_stack_depth) * sizeof( int );",
|
---|
2553 | "",
|
---|
2554 | " if ( ! YY_G(yy_start_stack) )",
|
---|
2555 | " YY_G(yy_start_stack) = (int *) yyalloc( new_size M4_YY_CALL_LAST_ARG );",
|
---|
2556 | "",
|
---|
2557 | " else",
|
---|
2558 | " YY_G(yy_start_stack) = (int *) yyrealloc(",
|
---|
2559 | " (void *) YY_G(yy_start_stack), new_size M4_YY_CALL_LAST_ARG );",
|
---|
2560 | "",
|
---|
2561 | " if ( ! YY_G(yy_start_stack) )",
|
---|
2562 | " YY_FATAL_ERROR(",
|
---|
2563 | " \"out of memory expanding start-condition stack\" );",
|
---|
2564 | " }",
|
---|
2565 | "",
|
---|
2566 | " YY_G(yy_start_stack)[YY_G(yy_start_stack_ptr)++] = YY_START;",
|
---|
2567 | "",
|
---|
2568 | " BEGIN(new_state);",
|
---|
2569 | "}",
|
---|
2570 | "]])",
|
---|
2571 | "",
|
---|
2572 | "",
|
---|
2573 | "m4_ifdef( [[M4_YY_NO_POP_STATE]],,",
|
---|
2574 | "[[",
|
---|
2575 | "%if-c-only",
|
---|
2576 | " static void yy_pop_state YYFARGS0(void)",
|
---|
2577 | "%endif",
|
---|
2578 | "%if-c++-only",
|
---|
2579 | " void yyFlexLexer::yy_pop_state()",
|
---|
2580 | "%endif",
|
---|
2581 | "{",
|
---|
2582 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2583 | " if ( --YY_G(yy_start_stack_ptr) < 0 )",
|
---|
2584 | " YY_FATAL_ERROR( \"start-condition stack underflow\" );",
|
---|
2585 | "",
|
---|
2586 | " BEGIN(YY_G(yy_start_stack)[YY_G(yy_start_stack_ptr)]);",
|
---|
2587 | "}",
|
---|
2588 | "]])",
|
---|
2589 | "",
|
---|
2590 | "",
|
---|
2591 | "m4_ifdef( [[M4_YY_NO_TOP_STATE]],,",
|
---|
2592 | "[[",
|
---|
2593 | "%if-c-only",
|
---|
2594 | " static int yy_top_state YYFARGS0(void)",
|
---|
2595 | "%endif",
|
---|
2596 | "%if-c++-only",
|
---|
2597 | " int yyFlexLexer::yy_top_state()",
|
---|
2598 | "%endif",
|
---|
2599 | "{",
|
---|
2600 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2601 | " return YY_G(yy_start_stack)[YY_G(yy_start_stack_ptr) - 1];",
|
---|
2602 | "}",
|
---|
2603 | "]])",
|
---|
2604 | "",
|
---|
2605 | "#ifndef YY_EXIT_FAILURE",
|
---|
2606 | "#define YY_EXIT_FAILURE 2",
|
---|
2607 | "#endif",
|
---|
2608 | "",
|
---|
2609 | "%if-c-only",
|
---|
2610 | "static void yy_fatal_error YYFARGS1(yyconst char*, msg)",
|
---|
2611 | "{",
|
---|
2612 | " m4_dnl M4_YY_DECL_GUTS_VAR();",
|
---|
2613 | " (void) fprintf( stderr, \"%s\\n\", msg );",
|
---|
2614 | " exit( YY_EXIT_FAILURE );",
|
---|
2615 | "}",
|
---|
2616 | "%endif",
|
---|
2617 | "%if-c++-only",
|
---|
2618 | "void yyFlexLexer::LexerError( yyconst char msg[] )",
|
---|
2619 | "{",
|
---|
2620 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2621 | " std::cerr << msg << std::endl;",
|
---|
2622 | " exit( YY_EXIT_FAILURE );",
|
---|
2623 | "}",
|
---|
2624 | "%endif",
|
---|
2625 | "",
|
---|
2626 | "/* Redefine yyless() so it works in section 3 code. */",
|
---|
2627 | "",
|
---|
2628 | "#undef yyless",
|
---|
2629 | "#define yyless(n) \\",
|
---|
2630 | " do \\",
|
---|
2631 | " { \\",
|
---|
2632 | " /* Undo effects of setting up yytext. */ \\",
|
---|
2633 | " int yyless_macro_arg = (n); \\",
|
---|
2634 | " YY_LESS_LINENO(yyless_macro_arg);\\",
|
---|
2635 | " yytext[yyleng] = YY_G(yy_hold_char); \\",
|
---|
2636 | " YY_G(yy_c_buf_p) = yytext + yyless_macro_arg; \\",
|
---|
2637 | " YY_G(yy_hold_char) = *YY_G(yy_c_buf_p); \\",
|
---|
2638 | " *YY_G(yy_c_buf_p) = '\\0'; \\",
|
---|
2639 | " yyleng = yyless_macro_arg; \\",
|
---|
2640 | " } \\",
|
---|
2641 | " while ( 0 )",
|
---|
2642 | "",
|
---|
2643 | "",
|
---|
2644 | "",
|
---|
2645 | "/* Accessor methods (get/set functions) to struct members. */",
|
---|
2646 | "",
|
---|
2647 | "%if-c-only",
|
---|
2648 | "%if-reentrant",
|
---|
2649 | "m4_ifdef( [[M4_YY_NO_GET_EXTRA]],,",
|
---|
2650 | "[[",
|
---|
2651 | "/** Get the user-defined data for this scanner.",
|
---|
2652 | " * M4_YY_DOC_PARAM",
|
---|
2653 | " */",
|
---|
2654 | "YY_EXTRA_TYPE yyget_extra YYFARGS0(void)",
|
---|
2655 | "{",
|
---|
2656 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2657 | " return yyextra;",
|
---|
2658 | "}",
|
---|
2659 | "]])",
|
---|
2660 | "%endif",
|
---|
2661 | "",
|
---|
2662 | "m4_ifdef( [[M4_YY_NO_GET_LINENO]],,",
|
---|
2663 | "[[",
|
---|
2664 | "/** Get the current line number.",
|
---|
2665 | " * M4_YY_DOC_PARAM",
|
---|
2666 | " */",
|
---|
2667 | "int yyget_lineno YYFARGS0(void)",
|
---|
2668 | "{",
|
---|
2669 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2670 | " ",
|
---|
2671 | " m4_ifdef( [[M4_YY_REENTRANT]],",
|
---|
2672 | " [[",
|
---|
2673 | " if (! YY_CURRENT_BUFFER)",
|
---|
2674 | " return 0;",
|
---|
2675 | " ]])",
|
---|
2676 | " return yylineno;",
|
---|
2677 | "}",
|
---|
2678 | "]])",
|
---|
2679 | "",
|
---|
2680 | "m4_ifdef( [[M4_YY_REENTRANT]],",
|
---|
2681 | "[[",
|
---|
2682 | "m4_ifdef( [[M4_YY_NO_GET_COLUMN]],,",
|
---|
2683 | "[[",
|
---|
2684 | "/** Get the current column number.",
|
---|
2685 | " * M4_YY_DOC_PARAM",
|
---|
2686 | " */",
|
---|
2687 | "int yyget_column YYFARGS0(void)",
|
---|
2688 | "{",
|
---|
2689 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2690 | " ",
|
---|
2691 | " m4_ifdef( [[M4_YY_REENTRANT]],",
|
---|
2692 | " [[",
|
---|
2693 | " if (! YY_CURRENT_BUFFER)",
|
---|
2694 | " return 0;",
|
---|
2695 | " ]])",
|
---|
2696 | " return yycolumn;",
|
---|
2697 | "}",
|
---|
2698 | "]])",
|
---|
2699 | "]])",
|
---|
2700 | "",
|
---|
2701 | "m4_ifdef( [[M4_YY_NO_GET_IN]],,",
|
---|
2702 | "[[",
|
---|
2703 | "/** Get the input stream.",
|
---|
2704 | " * M4_YY_DOC_PARAM",
|
---|
2705 | " */",
|
---|
2706 | "FILE *yyget_in YYFARGS0(void)",
|
---|
2707 | "{",
|
---|
2708 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2709 | " return yyin;",
|
---|
2710 | "}",
|
---|
2711 | "]])",
|
---|
2712 | "",
|
---|
2713 | "m4_ifdef( [[M4_YY_NO_GET_OUT]],,",
|
---|
2714 | "[[",
|
---|
2715 | "/** Get the output stream.",
|
---|
2716 | " * M4_YY_DOC_PARAM",
|
---|
2717 | " */",
|
---|
2718 | "FILE *yyget_out YYFARGS0(void)",
|
---|
2719 | "{",
|
---|
2720 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2721 | " return yyout;",
|
---|
2722 | "}",
|
---|
2723 | "]])",
|
---|
2724 | "",
|
---|
2725 | "m4_ifdef( [[M4_YY_NO_GET_LENG]],,",
|
---|
2726 | "[[",
|
---|
2727 | "/** Get the length of the current token.",
|
---|
2728 | " * M4_YY_DOC_PARAM",
|
---|
2729 | " */",
|
---|
2730 | "int yyget_leng YYFARGS0(void)",
|
---|
2731 | "{",
|
---|
2732 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2733 | " return yyleng;",
|
---|
2734 | "}",
|
---|
2735 | "]])",
|
---|
2736 | "",
|
---|
2737 | "/** Get the current token.",
|
---|
2738 | " * M4_YY_DOC_PARAM",
|
---|
2739 | " */",
|
---|
2740 | "m4_ifdef( [[M4_YY_NO_GET_TEXT]],,",
|
---|
2741 | "[[",
|
---|
2742 | "char *yyget_text YYFARGS0(void)",
|
---|
2743 | "{",
|
---|
2744 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2745 | " return yytext;",
|
---|
2746 | "}",
|
---|
2747 | "]])",
|
---|
2748 | "",
|
---|
2749 | "%if-reentrant",
|
---|
2750 | "m4_ifdef( [[M4_YY_NO_SET_EXTRA]],,",
|
---|
2751 | "[[",
|
---|
2752 | "/** Set the user-defined data. This data is never touched by the scanner.",
|
---|
2753 | " * @param user_defined The data to be associated with this scanner.",
|
---|
2754 | " * M4_YY_DOC_PARAM",
|
---|
2755 | " */",
|
---|
2756 | "void yyset_extra YYFARGS1( YY_EXTRA_TYPE ,user_defined)",
|
---|
2757 | "{",
|
---|
2758 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2759 | " yyextra = user_defined ;",
|
---|
2760 | "}",
|
---|
2761 | "]])",
|
---|
2762 | "%endif",
|
---|
2763 | "",
|
---|
2764 | "m4_ifdef( [[M4_YY_NO_SET_LINENO]],,",
|
---|
2765 | "[[",
|
---|
2766 | "/** Set the current line number.",
|
---|
2767 | " * @param line_number",
|
---|
2768 | " * M4_YY_DOC_PARAM",
|
---|
2769 | " */",
|
---|
2770 | "void yyset_lineno YYFARGS1( int ,line_number)",
|
---|
2771 | "{",
|
---|
2772 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2773 | "",
|
---|
2774 | " m4_ifdef( [[M4_YY_REENTRANT]],",
|
---|
2775 | " [[",
|
---|
2776 | " /* lineno is only valid if an input buffer exists. */",
|
---|
2777 | " if (! YY_CURRENT_BUFFER )",
|
---|
2778 | " yy_fatal_error( \"yyset_lineno called with no buffer\" M4_YY_CALL_LAST_ARG); ",
|
---|
2779 | " ]])",
|
---|
2780 | " yylineno = line_number;",
|
---|
2781 | "}",
|
---|
2782 | "]])",
|
---|
2783 | "",
|
---|
2784 | "m4_ifdef( [[M4_YY_REENTRANT]],",
|
---|
2785 | "[[",
|
---|
2786 | "m4_ifdef( [[M4_YY_NO_SET_COLUMN]],,",
|
---|
2787 | "[[",
|
---|
2788 | "/** Set the current column.",
|
---|
2789 | " * @param line_number",
|
---|
2790 | " * M4_YY_DOC_PARAM",
|
---|
2791 | " */",
|
---|
2792 | "void yyset_column YYFARGS1( int , column_no)",
|
---|
2793 | "{",
|
---|
2794 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2795 | "",
|
---|
2796 | " m4_ifdef( [[M4_YY_REENTRANT]],",
|
---|
2797 | " [[",
|
---|
2798 | " /* column is only valid if an input buffer exists. */",
|
---|
2799 | " if (! YY_CURRENT_BUFFER )",
|
---|
2800 | " yy_fatal_error( \"yyset_column called with no buffer\" M4_YY_CALL_LAST_ARG); ",
|
---|
2801 | " ]])",
|
---|
2802 | " yycolumn = column_no;",
|
---|
2803 | "}",
|
---|
2804 | "]])",
|
---|
2805 | "]])",
|
---|
2806 | "",
|
---|
2807 | "",
|
---|
2808 | "m4_ifdef( [[M4_YY_NO_SET_IN]],,",
|
---|
2809 | "[[",
|
---|
2810 | "/** Set the input stream. This does not discard the current",
|
---|
2811 | " * input buffer.",
|
---|
2812 | " * @param in_str A readable stream.",
|
---|
2813 | " * M4_YY_DOC_PARAM",
|
---|
2814 | " * @see yy_switch_to_buffer",
|
---|
2815 | " */",
|
---|
2816 | "void yyset_in YYFARGS1( FILE * ,in_str)",
|
---|
2817 | "{",
|
---|
2818 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2819 | " yyin = in_str ;",
|
---|
2820 | "}",
|
---|
2821 | "]])",
|
---|
2822 | "",
|
---|
2823 | "m4_ifdef( [[M4_YY_NO_SET_OUT]],,",
|
---|
2824 | "[[",
|
---|
2825 | "void yyset_out YYFARGS1( FILE * ,out_str)",
|
---|
2826 | "{",
|
---|
2827 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2828 | " yyout = out_str ;",
|
---|
2829 | "}",
|
---|
2830 | "]])",
|
---|
2831 | "",
|
---|
2832 | "",
|
---|
2833 | "m4_ifdef( [[M4_YY_NO_GET_DEBUG]],,",
|
---|
2834 | "[[",
|
---|
2835 | "int yyget_debug YYFARGS0(void)",
|
---|
2836 | "{",
|
---|
2837 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2838 | " return yy_flex_debug;",
|
---|
2839 | "}",
|
---|
2840 | "]])",
|
---|
2841 | "",
|
---|
2842 | "m4_ifdef( [[M4_YY_NO_SET_DEBUG]],,",
|
---|
2843 | "[[",
|
---|
2844 | "void yyset_debug YYFARGS1( int ,bdebug)",
|
---|
2845 | "{",
|
---|
2846 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2847 | " yy_flex_debug = bdebug ;",
|
---|
2848 | "}",
|
---|
2849 | "]])",
|
---|
2850 | "%endif",
|
---|
2851 | "",
|
---|
2852 | "%if-reentrant",
|
---|
2853 | "/* Accessor methods for yylval and yylloc */",
|
---|
2854 | "",
|
---|
2855 | "%if-bison-bridge",
|
---|
2856 | "m4_ifdef( [[M4_YY_NO_GET_LVAL]],,",
|
---|
2857 | "[[",
|
---|
2858 | "YYSTYPE * yyget_lval YYFARGS0(void)",
|
---|
2859 | "{",
|
---|
2860 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2861 | " return yylval;",
|
---|
2862 | "}",
|
---|
2863 | "]])",
|
---|
2864 | "",
|
---|
2865 | "m4_ifdef( [[M4_YY_NO_SET_LVAL]],,",
|
---|
2866 | "[[",
|
---|
2867 | "void yyset_lval YYFARGS1( YYSTYPE * ,yylval_param)",
|
---|
2868 | "{",
|
---|
2869 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2870 | " yylval = yylval_param;",
|
---|
2871 | "}",
|
---|
2872 | "]])",
|
---|
2873 | "",
|
---|
2874 | "m4_ifdef( [[<M4_YY_BISON_LLOC>]],",
|
---|
2875 | "[[",
|
---|
2876 | " m4_ifdef( [[M4_YY_NO_GET_LLOC]],,",
|
---|
2877 | " [[",
|
---|
2878 | "YYLTYPE *yyget_lloc YYFARGS0(void)",
|
---|
2879 | "{",
|
---|
2880 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2881 | " return yylloc;",
|
---|
2882 | "}",
|
---|
2883 | " ]])",
|
---|
2884 | "",
|
---|
2885 | " m4_ifdef( [[M4_YY_NO_SET_LLOC]],,",
|
---|
2886 | " [[",
|
---|
2887 | "void yyset_lloc YYFARGS1( YYLTYPE * ,yylloc_param)",
|
---|
2888 | "{",
|
---|
2889 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2890 | " yylloc = yylloc_param;",
|
---|
2891 | "}",
|
---|
2892 | " ]])",
|
---|
2893 | "]])",
|
---|
2894 | "",
|
---|
2895 | "%endif",
|
---|
2896 | "",
|
---|
2897 | "",
|
---|
2898 | "/* User-visible API */",
|
---|
2899 | "",
|
---|
2900 | "/* yylex_init is special because it creates the scanner itself, so it is",
|
---|
2901 | " * the ONLY reentrant function that doesn't take the scanner as the last argument.",
|
---|
2902 | " * That's why we explicitly handle the declaration, instead of using our macros.",
|
---|
2903 | " */",
|
---|
2904 | "m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]],",
|
---|
2905 | "[[",
|
---|
2906 | "int yylex_init( ptr_yy_globals )",
|
---|
2907 | " yyscan_t* ptr_yy_globals;",
|
---|
2908 | "]],",
|
---|
2909 | "[[",
|
---|
2910 | "int yylex_init(yyscan_t* ptr_yy_globals)",
|
---|
2911 | "]])",
|
---|
2912 | "{",
|
---|
2913 | " if (ptr_yy_globals == NULL){",
|
---|
2914 | " errno = EINVAL;",
|
---|
2915 | " return 1;",
|
---|
2916 | " }",
|
---|
2917 | "",
|
---|
2918 | " *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );",
|
---|
2919 | "",
|
---|
2920 | " if (*ptr_yy_globals == NULL){",
|
---|
2921 | " errno = ENOMEM;",
|
---|
2922 | " return 1;",
|
---|
2923 | " }",
|
---|
2924 | "",
|
---|
2925 | " /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */",
|
---|
2926 | " memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));",
|
---|
2927 | "",
|
---|
2928 | " return yy_init_globals ( *ptr_yy_globals );",
|
---|
2929 | "}",
|
---|
2930 | "",
|
---|
2931 | "%endif",
|
---|
2932 | "",
|
---|
2933 | "%if-c-only",
|
---|
2934 | "static int yy_init_globals YYFARGS0(void)",
|
---|
2935 | "{",
|
---|
2936 | " M4_YY_DECL_GUTS_VAR();",
|
---|
2937 | " /* Initialization is the same as for the non-reentrant scanner.",
|
---|
2938 | " * This function is called from yylex_destroy(), so don't allocate here.",
|
---|
2939 | " */",
|
---|
2940 | "",
|
---|
2941 | "m4_ifdef( [[M4_YY_USE_LINENO]],",
|
---|
2942 | "[[",
|
---|
2943 | " m4_ifdef( [[M4_YY_NOT_REENTRANT]],",
|
---|
2944 | " [[",
|
---|
2945 | " /* We do not touch yylineno unless the option is enabled. */",
|
---|
2946 | " yylineno = 1;",
|
---|
2947 | " ]])",
|
---|
2948 | "]])",
|
---|
2949 | " YY_G(yy_buffer_stack) = 0;",
|
---|
2950 | " YY_G(yy_buffer_stack_top) = 0;",
|
---|
2951 | " YY_G(yy_buffer_stack_max) = 0;",
|
---|
2952 | " YY_G(yy_c_buf_p) = (char *) 0;",
|
---|
2953 | " YY_G(yy_init) = 0;",
|
---|
2954 | " YY_G(yy_start) = 0;",
|
---|
2955 | "",
|
---|
2956 | "m4_ifdef( [[M4_YY_HAS_START_STACK_VARS]],",
|
---|
2957 | "[[",
|
---|
2958 | " YY_G(yy_start_stack_ptr) = 0;",
|
---|
2959 | " YY_G(yy_start_stack_depth) = 0;",
|
---|
2960 | " YY_G(yy_start_stack) = NULL;",
|
---|
2961 | "]])",
|
---|
2962 | "",
|
---|
2963 | "m4_ifdef( [[M4_YY_USES_REJECT]],",
|
---|
2964 | "[[",
|
---|
2965 | " YY_G(yy_state_buf) = 0;",
|
---|
2966 | " YY_G(yy_state_ptr) = 0;",
|
---|
2967 | " YY_G(yy_full_match) = 0;",
|
---|
2968 | " YY_G(yy_lp) = 0;",
|
---|
2969 | "]])",
|
---|
2970 | "",
|
---|
2971 | "m4_ifdef( [[M4_YY_TEXT_IS_ARRAY]],",
|
---|
2972 | "[[",
|
---|
2973 | " YY_G(yytext_ptr) = 0;",
|
---|
2974 | " YY_G(yy_more_offset) = 0;",
|
---|
2975 | " YY_G(yy_prev_more_offset) = 0;",
|
---|
2976 | "]])",
|
---|
2977 | "",
|
---|
2978 | "/* Defined in main.c */",
|
---|
2979 | "#ifdef YY_STDINIT",
|
---|
2980 | " yyin = stdin;",
|
---|
2981 | " yyout = stdout;",
|
---|
2982 | "#else",
|
---|
2983 | " yyin = (FILE *) 0;",
|
---|
2984 | " yyout = (FILE *) 0;",
|
---|
2985 | "#endif",
|
---|
2986 | "",
|
---|
2987 | " /* For future reference: Set errno on error, since we are called by",
|
---|
2988 | " * yylex_init()",
|
---|
2989 | " */",
|
---|
2990 | " return 0;",
|
---|
2991 | "}",
|
---|
2992 | "%endif",
|
---|
2993 | "",
|
---|
2994 | "",
|
---|
2995 | "%if-c-only SNIP! this currently causes conflicts with the c++ scanner",
|
---|
2996 | "/* yylex_destroy is for both reentrant and non-reentrant scanners. */",
|
---|
2997 | "int yylex_destroy YYFARGS0(void)",
|
---|
2998 | "{",
|
---|
2999 | " M4_YY_DECL_GUTS_VAR();",
|
---|
3000 | "",
|
---|
3001 | " /* Pop the buffer stack, destroying each element. */",
|
---|
3002 | " while(YY_CURRENT_BUFFER){",
|
---|
3003 | " yy_delete_buffer( YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG );",
|
---|
3004 | " YY_CURRENT_BUFFER_LVALUE = NULL;",
|
---|
3005 | " yypop_buffer_state(M4_YY_CALL_ONLY_ARG);",
|
---|
3006 | " }",
|
---|
3007 | "",
|
---|
3008 | " /* Destroy the stack itself. */",
|
---|
3009 | " yyfree(YY_G(yy_buffer_stack) M4_YY_CALL_LAST_ARG);",
|
---|
3010 | " YY_G(yy_buffer_stack) = NULL;",
|
---|
3011 | "",
|
---|
3012 | "m4_ifdef( [[M4_YY_HAS_START_STACK_VARS]],",
|
---|
3013 | "[[",
|
---|
3014 | " /* Destroy the start condition stack. */",
|
---|
3015 | " yyfree( YY_G(yy_start_stack) M4_YY_CALL_LAST_ARG );",
|
---|
3016 | " YY_G(yy_start_stack) = NULL;",
|
---|
3017 | "]])",
|
---|
3018 | "",
|
---|
3019 | "m4_ifdef( [[M4_YY_USES_REJECT]],",
|
---|
3020 | "[[",
|
---|
3021 | " yyfree ( YY_G(yy_state_buf) M4_YY_CALL_LAST_ARG);",
|
---|
3022 | " YY_G(yy_state_buf) = NULL;",
|
---|
3023 | "]])",
|
---|
3024 | "",
|
---|
3025 | " /* Reset the globals. This is important in a non-reentrant scanner so the next time",
|
---|
3026 | " * yylex() is called, initialization will occur. */",
|
---|
3027 | " yy_init_globals( M4_YY_CALL_ONLY_ARG);",
|
---|
3028 | "",
|
---|
3029 | "%if-reentrant",
|
---|
3030 | " /* Destroy the main struct (reentrant only). */",
|
---|
3031 | " yyfree ( yyscanner M4_YY_CALL_LAST_ARG );",
|
---|
3032 | " yyscanner = NULL;",
|
---|
3033 | "%endif",
|
---|
3034 | " return 0;",
|
---|
3035 | "}",
|
---|
3036 | "%endif",
|
---|
3037 | "",
|
---|
3038 | "",
|
---|
3039 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
3040 | "[[",
|
---|
3041 | "/*",
|
---|
3042 | " * Internal utility routines.",
|
---|
3043 | " */",
|
---|
3044 | "]])",
|
---|
3045 | "",
|
---|
3046 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
3047 | "[[",
|
---|
3048 | "#ifndef yytext_ptr",
|
---|
3049 | "static void yy_flex_strncpy YYFARGS3( char*,s1, yyconst char *,s2, int,n)",
|
---|
3050 | "{",
|
---|
3051 | " register int i;",
|
---|
3052 | " for ( i = 0; i < n; ++i )",
|
---|
3053 | " s1[i] = s2[i];",
|
---|
3054 | "}",
|
---|
3055 | "#endif",
|
---|
3056 | "]])",
|
---|
3057 | "",
|
---|
3058 | "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],",
|
---|
3059 | "[[",
|
---|
3060 | "#ifdef YY_NEED_STRLEN",
|
---|
3061 | "static int yy_flex_strlen YYFARGS1( yyconst char *,s)",
|
---|
3062 | "{",
|
---|
3063 | " register int n;",
|
---|
3064 | " for ( n = 0; s[n]; ++n )",
|
---|
3065 | " ;",
|
---|
3066 | "",
|
---|
3067 | " return n;",
|
---|
3068 | "}",
|
---|
3069 | "#endif",
|
---|
3070 | "]])",
|
---|
3071 | "",
|
---|
3072 | "m4_ifdef( [[M4_YY_NO_FLEX_ALLOC]],,",
|
---|
3073 | "[[",
|
---|
3074 | "void *yyalloc YYFARGS1( yy_size_t ,size)",
|
---|
3075 | "{",
|
---|
3076 | " return (void *) malloc( size );",
|
---|
3077 | "}",
|
---|
3078 | "]])",
|
---|
3079 | "",
|
---|
3080 | "m4_ifdef( [[M4_YY_NO_FLEX_REALLOC]],,",
|
---|
3081 | "[[",
|
---|
3082 | "void *yyrealloc YYFARGS2( void *,ptr, yy_size_t ,size)",
|
---|
3083 | "{",
|
---|
3084 | " /* The cast to (char *) in the following accommodates both",
|
---|
3085 | " * implementations that use char* generic pointers, and those",
|
---|
3086 | " * that use void* generic pointers. It works with the latter",
|
---|
3087 | " * because both ANSI C and C++ allow castless assignment from",
|
---|
3088 | " * any pointer type to void*, and deal with argument conversions",
|
---|
3089 | " * as though doing an assignment.",
|
---|
3090 | " */",
|
---|
3091 | " return (void *) realloc( (char *) ptr, size );",
|
---|
3092 | "}",
|
---|
3093 | "]])",
|
---|
3094 | "",
|
---|
3095 | "m4_ifdef( [[M4_YY_NO_FLEX_FREE]],,",
|
---|
3096 | "[[",
|
---|
3097 | "void yyfree YYFARGS1( void *,ptr)",
|
---|
3098 | "{",
|
---|
3099 | " free( (char *) ptr ); /* see yyrealloc() for (char *) cast */",
|
---|
3100 | "}",
|
---|
3101 | "]])",
|
---|
3102 | "",
|
---|
3103 | "%if-tables-serialization definitions",
|
---|
3104 | "#ifdef FLEX_SCANNER",
|
---|
3105 | "/*",
|
---|
3106 | "dnl tables_shared.c - tables serialization code",
|
---|
3107 | "dnl ",
|
---|
3108 | "dnl Copyright (c) 1990 The Regents of the University of California.",
|
---|
3109 | "dnl All rights reserved.",
|
---|
3110 | "dnl ",
|
---|
3111 | "dnl This code is derived from software contributed to Berkeley by",
|
---|
3112 | "dnl Vern Paxson.",
|
---|
3113 | "dnl ",
|
---|
3114 | "dnl The United States Government has rights in this work pursuant",
|
---|
3115 | "dnl to contract no. DE-AC03-76SF00098 between the United States",
|
---|
3116 | "dnl Department of Energy and the University of California.",
|
---|
3117 | "dnl ",
|
---|
3118 | "dnl This file is part of flex.",
|
---|
3119 | "dnl ",
|
---|
3120 | "dnl Redistribution and use in source and binary forms, with or without",
|
---|
3121 | "dnl modification, are permitted provided that the following conditions",
|
---|
3122 | "dnl are met:",
|
---|
3123 | "dnl ",
|
---|
3124 | "dnl 1. Redistributions of source code must retain the above copyright",
|
---|
3125 | "dnl notice, this list of conditions and the following disclaimer.",
|
---|
3126 | "dnl 2. Redistributions in binary form must reproduce the above copyright",
|
---|
3127 | "dnl notice, this list of conditions and the following disclaimer in the",
|
---|
3128 | "dnl documentation and/or other materials provided with the distribution.",
|
---|
3129 | "dnl ",
|
---|
3130 | "dnl Neither the name of the University nor the names of its contributors",
|
---|
3131 | "dnl may be used to endorse or promote products derived from this software",
|
---|
3132 | "dnl without specific prior written permission.",
|
---|
3133 | "dnl ",
|
---|
3134 | "dnl THIS SOFTWARE IS PROVIDED `AS IS' AND WITHOUT ANY EXPRESS OR",
|
---|
3135 | "dnl IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED",
|
---|
3136 | "dnl WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR",
|
---|
3137 | "dnl PURPOSE.",
|
---|
3138 | "dnl ",
|
---|
3139 | "*/",
|
---|
3140 | " |
---|
3141 | ",
|
---|
3142 | "/* This file is meant to be included in both the skeleton and the actual",
|
---|
3143 | " * flex code (hence the name \"_shared\"). ",
|
---|
3144 | " */",
|
---|
3145 | "#ifndef yyskel_static",
|
---|
3146 | "#define yyskel_static static",
|
---|
3147 | "#endif",
|
---|
3148 | "#else",
|
---|
3149 | "#include \"flexdef.h\"",
|
---|
3150 | "#include \"tables.h\"",
|
---|
3151 | "#ifndef yyskel_static",
|
---|
3152 | "#define yyskel_static",
|
---|
3153 | "#endif",
|
---|
3154 | "#endif",
|
---|
3155 | "",
|
---|
3156 | "",
|
---|
3157 | "/** Get the number of integers in this table. This is NOT the",
|
---|
3158 | " * same thing as the number of elements.",
|
---|
3159 | " * @param td the table ",
|
---|
3160 | " * @return the number of integers in the table",
|
---|
3161 | " */",
|
---|
3162 | "yyskel_static flex_int32_t yytbl_calc_total_len (const struct yytbl_data *tbl)",
|
---|
3163 | "{",
|
---|
3164 | " flex_int32_t n;",
|
---|
3165 | "",
|
---|
3166 | " /* total number of ints */",
|
---|
3167 | " n = tbl->td_lolen;",
|
---|
3168 | " if (tbl->td_hilen > 0)",
|
---|
3169 | " n *= tbl->td_hilen;",
|
---|
3170 | "",
|
---|
3171 | " if (tbl->td_id == YYTD_ID_TRANSITION)",
|
---|
3172 | " n *= 2;",
|
---|
3173 | " return n;",
|
---|
3174 | "}",
|
---|
3175 | "",
|
---|
3176 | "",
|
---|
3177 | "static int yytbl_read8 (void *v, struct yytbl_reader * rd)",
|
---|
3178 | "{",
|
---|
3179 | " errno = 0;",
|
---|
3180 | " if (fread (v, sizeof (flex_uint8_t), 1, rd->fp) != 1){",
|
---|
3181 | " errno = EIO;",
|
---|
3182 | " return -1;",
|
---|
3183 | " }",
|
---|
3184 | " rd->bread += sizeof(flex_uint8_t);",
|
---|
3185 | " return 0;",
|
---|
3186 | "}",
|
---|
3187 | "",
|
---|
3188 | "static int yytbl_read16 (void *v, struct yytbl_reader * rd)",
|
---|
3189 | "{",
|
---|
3190 | " errno = 0;",
|
---|
3191 | " if (fread (v, sizeof (flex_uint16_t), 1, rd->fp) != 1){",
|
---|
3192 | " errno = EIO;",
|
---|
3193 | " return -1;",
|
---|
3194 | " }",
|
---|
3195 | " *((flex_uint16_t *) v) = ntohs (*((flex_uint16_t *) v));",
|
---|
3196 | " rd->bread += sizeof(flex_uint16_t);",
|
---|
3197 | " return 0;",
|
---|
3198 | "}",
|
---|
3199 | "",
|
---|
3200 | "static int yytbl_read32 (void *v, struct yytbl_reader * rd)",
|
---|
3201 | "{",
|
---|
3202 | " errno = 0;",
|
---|
3203 | " if (fread (v, sizeof (flex_uint32_t), 1, rd->fp) != 1){",
|
---|
3204 | " errno = EIO;",
|
---|
3205 | " return -1;",
|
---|
3206 | " }",
|
---|
3207 | " *((flex_uint32_t *) v) = ntohl (*((flex_uint32_t *) v));",
|
---|
3208 | " rd->bread += sizeof(flex_uint32_t);",
|
---|
3209 | " return 0;",
|
---|
3210 | "}",
|
---|
3211 | "",
|
---|
3212 | "/** Read the header */",
|
---|
3213 | "static int yytbl_hdr_read YYFARGS2(struct yytbl_hdr *, th, struct yytbl_reader *, rd)",
|
---|
3214 | "{",
|
---|
3215 | " int bytes;",
|
---|
3216 | " memset (th, 0, sizeof (struct yytbl_hdr));",
|
---|
3217 | "",
|
---|
3218 | " if (yytbl_read32 (&(th->th_magic), rd) != 0)",
|
---|
3219 | " return -1;",
|
---|
3220 | "",
|
---|
3221 | " if (th->th_magic != YYTBL_MAGIC){",
|
---|
3222 | " yy_fatal_error(\"bad magic number\" /*TODO: not fatal.*/ M4_YY_CALL_LAST_ARG);",
|
---|
3223 | " return -1;",
|
---|
3224 | " }",
|
---|
3225 | "",
|
---|
3226 | " if (yytbl_read32 (&(th->th_hsize), rd) != 0",
|
---|
3227 | " || yytbl_read32 (&(th->th_ssize), rd) != 0",
|
---|
3228 | " || yytbl_read16 (&(th->th_flags), rd) != 0)",
|
---|
3229 | " return -1;",
|
---|
3230 | "",
|
---|
3231 | " /* Sanity check on header size. Greater than 1k suggests some funny business. */",
|
---|
3232 | " if (th->th_hsize < 16 || th->th_hsize > 1024){",
|
---|
3233 | " yy_fatal_error(\"insane header size detected\" /*TODO: not fatal.*/ M4_YY_CALL_LAST_ARG);",
|
---|
3234 | " return -1;",
|
---|
3235 | " }",
|
---|
3236 | "",
|
---|
3237 | " /* Allocate enough space for the version and name fields */",
|
---|
3238 | " bytes = th->th_hsize - 14;",
|
---|
3239 | " th->th_version = (char *) yyalloc (bytes M4_YY_CALL_LAST_ARG);",
|
---|
3240 | "",
|
---|
3241 | " /* we read it all into th_version, and point th_name into that data */",
|
---|
3242 | " if (fread (th->th_version, 1, bytes, rd->fp) != bytes){",
|
---|
3243 | " errno = EIO;",
|
---|
3244 | " yyfree(th->th_version M4_YY_CALL_LAST_ARG);",
|
---|
3245 | " th->th_version = NULL;",
|
---|
3246 | " return -1;",
|
---|
3247 | " }",
|
---|
3248 | " else",
|
---|
3249 | " rd->bread += bytes;",
|
---|
3250 | "",
|
---|
3251 | " th->th_name = th->th_version + strlen (th->th_version) + 1;",
|
---|
3252 | " return 0;",
|
---|
3253 | "}",
|
---|
3254 | "",
|
---|
3255 | "/** lookup id in the dmap list.",
|
---|
3256 | " * @param dmap pointer to first element in list",
|
---|
3257 | " * @return NULL if not found.",
|
---|
3258 | " */",
|
---|
3259 | "static struct yytbl_dmap *yytbl_dmap_lookup YYFARGS2(struct yytbl_dmap *, dmap,",
|
---|
3260 | " int, id)",
|
---|
3261 | "{",
|
---|
3262 | " while (dmap->dm_id)",
|
---|
3263 | " if (dmap->dm_id == id)",
|
---|
3264 | " return dmap;",
|
---|
3265 | " else",
|
---|
3266 | " dmap++;",
|
---|
3267 | " return NULL;",
|
---|
3268 | "}",
|
---|
3269 | "",
|
---|
3270 | "/** Read a table while mapping its contents to the local array. ",
|
---|
3271 | " * @param dmap used to performing mapping",
|
---|
3272 | " * @return 0 on success",
|
---|
3273 | " */",
|
---|
3274 | "static int yytbl_data_load YYFARGS2(struct yytbl_dmap *, dmap, struct yytbl_reader*, rd)",
|
---|
3275 | "{",
|
---|
3276 | " struct yytbl_data td;",
|
---|
3277 | " struct yytbl_dmap *transdmap=0;",
|
---|
3278 | " int len, i, rv, inner_loop_count;",
|
---|
3279 | " void *p=0;",
|
---|
3280 | "",
|
---|
3281 | " memset (&td, 0, sizeof (struct yytbl_data));",
|
---|
3282 | "",
|
---|
3283 | " if (yytbl_read16 (&td.td_id, rd) != 0",
|
---|
3284 | " || yytbl_read16 (&td.td_flags, rd) != 0",
|
---|
3285 | " || yytbl_read32 (&td.td_hilen, rd) != 0",
|
---|
3286 | " || yytbl_read32 (&td.td_lolen, rd) != 0)",
|
---|
3287 | " return -1;",
|
---|
3288 | "",
|
---|
3289 | " /* Lookup the map for the transition table so we have it in case we need it",
|
---|
3290 | " * inside the loop below. This scanner might not even have a transition",
|
---|
3291 | " * table, which is ok.",
|
---|
3292 | " */",
|
---|
3293 | " transdmap = yytbl_dmap_lookup (dmap, YYTD_ID_TRANSITION M4_YY_CALL_LAST_ARG);",
|
---|
3294 | "",
|
---|
3295 | " if ((dmap = yytbl_dmap_lookup (dmap, td.td_id M4_YY_CALL_LAST_ARG)) == NULL){",
|
---|
3296 | " yy_fatal_error(\"table id not found in map.\" /*TODO: not fatal.*/ M4_YY_CALL_LAST_ARG);",
|
---|
3297 | " return -1;",
|
---|
3298 | " }",
|
---|
3299 | "",
|
---|
3300 | " /* Allocate space for table.",
|
---|
3301 | " * The --full yy_transition table is a special case, since we",
|
---|
3302 | " * need the dmap.dm_sz entry to tell us the sizeof the individual",
|
---|
3303 | " * struct members.",
|
---|
3304 | " */",
|
---|
3305 | " {",
|
---|
3306 | " size_t bytes;",
|
---|
3307 | "",
|
---|
3308 | " if ((td.td_flags & YYTD_STRUCT))",
|
---|
3309 | " bytes = sizeof(struct yy_trans_info) * td.td_lolen * (td.td_hilen ? td.td_hilen : 1);",
|
---|
3310 | " else",
|
---|
3311 | " bytes = td.td_lolen * (td.td_hilen ? td.td_hilen : 1) * dmap->dm_sz;",
|
---|
3312 | "",
|
---|
3313 | " if(M4_YY_TABLES_VERIFY)",
|
---|
3314 | " /* We point to the array itself */",
|
---|
3315 | " p = dmap->dm_arr; ",
|
---|
3316 | " else",
|
---|
3317 | " /* We point to the address of a pointer. */",
|
---|
3318 | " *dmap->dm_arr = p = (void *) yyalloc (bytes M4_YY_CALL_LAST_ARG);",
|
---|
3319 | " }",
|
---|
3320 | "",
|
---|
3321 | " /* If it's a struct, we read 2 integers to get one element */",
|
---|
3322 | " if ((td.td_flags & YYTD_STRUCT) != 0)",
|
---|
3323 | " inner_loop_count = 2;",
|
---|
3324 | " else",
|
---|
3325 | " inner_loop_count = 1;",
|
---|
3326 | "",
|
---|
3327 | " /* read and map each element.",
|
---|
3328 | " * This loop iterates once for each element of the td_data array.",
|
---|
3329 | " * Notice that we increment 'i' in the inner loop.",
|
---|
3330 | " */",
|
---|
3331 | " len = yytbl_calc_total_len (&td);",
|
---|
3332 | " for (i = 0; i < len; ){",
|
---|
3333 | " int j;",
|
---|
3334 | "",
|
---|
3335 | "",
|
---|
3336 | " /* This loop really executes exactly 1 or 2 times.",
|
---|
3337 | " * The second time is to handle the second member of the",
|
---|
3338 | " * YYTD_STRUCT for the yy_transition array.",
|
---|
3339 | " */",
|
---|
3340 | " for (j = 0; j < inner_loop_count; j++, i++) {",
|
---|
3341 | " flex_int32_t t32;",
|
---|
3342 | "",
|
---|
3343 | " /* read into t32 no matter what the real size is. */",
|
---|
3344 | " {",
|
---|
3345 | " flex_int16_t t16;",
|
---|
3346 | " flex_int8_t t8;",
|
---|
3347 | "",
|
---|
3348 | " switch (YYTDFLAGS2BYTES (td.td_flags)) {",
|
---|
3349 | " case sizeof (flex_int32_t):",
|
---|
3350 | " rv = yytbl_read32 (&t32, rd);",
|
---|
3351 | " break;",
|
---|
3352 | " case sizeof (flex_int16_t):",
|
---|
3353 | " rv = yytbl_read16 (&t16, rd);",
|
---|
3354 | " t32 = t16;",
|
---|
3355 | " break;",
|
---|
3356 | " case sizeof (flex_int8_t):",
|
---|
3357 | " rv = yytbl_read8 (&t8, rd);",
|
---|
3358 | " t32 = t8;",
|
---|
3359 | " break;",
|
---|
3360 | " default: ",
|
---|
3361 | " yy_fatal_error(\"invalid td_flags\" /*TODO: not fatal.*/ M4_YY_CALL_LAST_ARG);",
|
---|
3362 | " return -1;",
|
---|
3363 | " }",
|
---|
3364 | " }",
|
---|
3365 | " if (rv != 0)",
|
---|
3366 | " return -1;",
|
---|
3367 | "",
|
---|
3368 | " /* copy into the deserialized array... */",
|
---|
3369 | "",
|
---|
3370 | " if ((td.td_flags & YYTD_STRUCT)) {",
|
---|
3371 | " /* t32 is the j'th member of a two-element struct. */",
|
---|
3372 | " void *v;",
|
---|
3373 | "",
|
---|
3374 | " v = j == 0 ? &(((struct yy_trans_info *) p)->yy_verify)",
|
---|
3375 | " : &(((struct yy_trans_info *) p)->yy_nxt);",
|
---|
3376 | "",
|
---|
3377 | " switch (dmap->dm_sz) {",
|
---|
3378 | " case sizeof (flex_int32_t):",
|
---|
3379 | " if (M4_YY_TABLES_VERIFY){",
|
---|
3380 | " if( ((flex_int32_t *) v)[0] != (flex_int32_t) t32)",
|
---|
3381 | " yy_fatal_error(\"tables verification failed at YYTD_STRUCT flex_int32_t\" M4_YY_CALL_LAST_ARG);",
|
---|
3382 | " }else",
|
---|
3383 | " ((flex_int32_t *) v)[0] = (flex_int32_t) t32;",
|
---|
3384 | " break;",
|
---|
3385 | " case sizeof (flex_int16_t):",
|
---|
3386 | " if (M4_YY_TABLES_VERIFY ){",
|
---|
3387 | " if(((flex_int16_t *) v)[0] != (flex_int16_t) t32)",
|
---|
3388 | " yy_fatal_error(\"tables verification failed at YYTD_STRUCT flex_int16_t\" M4_YY_CALL_LAST_ARG);",
|
---|
3389 | " }else",
|
---|
3390 | " ((flex_int16_t *) v)[0] = (flex_int16_t) t32;",
|
---|
3391 | " break;",
|
---|
3392 | " case sizeof(flex_int8_t):",
|
---|
3393 | " if (M4_YY_TABLES_VERIFY ){",
|
---|
3394 | " if( ((flex_int8_t *) v)[0] != (flex_int8_t) t32)",
|
---|
3395 | " yy_fatal_error(\"tables verification failed at YYTD_STRUCT flex_int8_t\" M4_YY_CALL_LAST_ARG);",
|
---|
3396 | " }else",
|
---|
3397 | " ((flex_int8_t *) v)[0] = (flex_int8_t) t32;",
|
---|
3398 | " break;",
|
---|
3399 | " default:",
|
---|
3400 | " yy_fatal_error(\"invalid dmap->dm_sz for struct\" /*TODO: not fatal.*/ M4_YY_CALL_LAST_ARG);",
|
---|
3401 | " return -1;",
|
---|
3402 | " }",
|
---|
3403 | "",
|
---|
3404 | " /* if we're done with j, increment p */",
|
---|
3405 | " if (j == 1)",
|
---|
3406 | " p = (struct yy_trans_info *) p + 1;",
|
---|
3407 | " }",
|
---|
3408 | " else if ((td.td_flags & YYTD_PTRANS)) {",
|
---|
3409 | " /* t32 is an index into the transition array. */",
|
---|
3410 | " struct yy_trans_info *v;",
|
---|
3411 | "",
|
---|
3412 | "",
|
---|
3413 | " if (!transdmap){",
|
---|
3414 | " yy_fatal_error(\"transition table not found\" /*TODO: not fatal.*/ M4_YY_CALL_LAST_ARG);",
|
---|
3415 | " return -1;",
|
---|
3416 | " }",
|
---|
3417 | " ",
|
---|
3418 | " if( M4_YY_TABLES_VERIFY)",
|
---|
3419 | " v = &(((struct yy_trans_info *) (transdmap->dm_arr))[t32]);",
|
---|
3420 | " else",
|
---|
3421 | " v = &((*((struct yy_trans_info **) (transdmap->dm_arr)))[t32]);",
|
---|
3422 | "",
|
---|
3423 | " if(M4_YY_TABLES_VERIFY ){",
|
---|
3424 | " if( ((struct yy_trans_info **) p)[0] != v)",
|
---|
3425 | " yy_fatal_error(\"tables verification failed at YYTD_PTRANS\" M4_YY_CALL_LAST_ARG);",
|
---|
3426 | " }else",
|
---|
3427 | " ((struct yy_trans_info **) p)[0] = v;",
|
---|
3428 | " ",
|
---|
3429 | " /* increment p */",
|
---|
3430 | " p = (struct yy_trans_info **) p + 1;",
|
---|
3431 | " }",
|
---|
3432 | " else {",
|
---|
3433 | " /* t32 is a plain int. copy data, then incrememnt p. */",
|
---|
3434 | " switch (dmap->dm_sz) {",
|
---|
3435 | " case sizeof (flex_int32_t):",
|
---|
3436 | " if(M4_YY_TABLES_VERIFY ){",
|
---|
3437 | " if( ((flex_int32_t *) p)[0] != (flex_int32_t) t32)",
|
---|
3438 | " yy_fatal_error(\"tables verification failed at flex_int32_t\" M4_YY_CALL_LAST_ARG);",
|
---|
3439 | " }else",
|
---|
3440 | " ((flex_int32_t *) p)[0] = (flex_int32_t) t32;",
|
---|
3441 | " p = ((flex_int32_t *) p) + 1;",
|
---|
3442 | " break;",
|
---|
3443 | " case sizeof (flex_int16_t):",
|
---|
3444 | " if(M4_YY_TABLES_VERIFY ){",
|
---|
3445 | " if( ((flex_int16_t *) p)[0] != (flex_int16_t) t32)",
|
---|
3446 | " yy_fatal_error(\"tables verification failed at flex_int16_t\" M4_YY_CALL_LAST_ARG);",
|
---|
3447 | " }else",
|
---|
3448 | " ((flex_int16_t *) p)[0] = (flex_int16_t) t32;",
|
---|
3449 | " p = ((flex_int16_t *) p) + 1;",
|
---|
3450 | " break;",
|
---|
3451 | " case sizeof (flex_int8_t):",
|
---|
3452 | " if(M4_YY_TABLES_VERIFY ){",
|
---|
3453 | " if( ((flex_int8_t *) p)[0] != (flex_int8_t) t32)",
|
---|
3454 | " yy_fatal_error(\"tables verification failed at flex_int8_t\" M4_YY_CALL_LAST_ARG);",
|
---|
3455 | " }else",
|
---|
3456 | " ((flex_int8_t *) p)[0] = (flex_int8_t) t32;",
|
---|
3457 | " p = ((flex_int8_t *) p) + 1;",
|
---|
3458 | " break;",
|
---|
3459 | " default:",
|
---|
3460 | " yy_fatal_error(\"invalid dmap->dm_sz for plain int\" /*TODO: not fatal.*/ M4_YY_CALL_LAST_ARG);",
|
---|
3461 | " return -1;",
|
---|
3462 | " }",
|
---|
3463 | " }",
|
---|
3464 | " }",
|
---|
3465 | "",
|
---|
3466 | " }",
|
---|
3467 | "",
|
---|
3468 | " /* Now eat padding. */",
|
---|
3469 | " {",
|
---|
3470 | " int pad;",
|
---|
3471 | " pad = yypad64(rd->bread);",
|
---|
3472 | " while(--pad >= 0){",
|
---|
3473 | " flex_int8_t t8;",
|
---|
3474 | " if(yytbl_read8(&t8,rd) != 0)",
|
---|
3475 | " return -1;",
|
---|
3476 | " }",
|
---|
3477 | " }",
|
---|
3478 | "",
|
---|
3479 | " return 0;",
|
---|
3480 | "}",
|
---|
3481 | "",
|
---|
3482 | "%define-yytables The name for this specific scanner's tables.",
|
---|
3483 | "",
|
---|
3484 | "/* Find the key and load the DFA tables from the given stream. */",
|
---|
3485 | "static int yytbl_fload YYFARGS2(FILE *, fp, const char *, key)",
|
---|
3486 | "{",
|
---|
3487 | " int rv=0;",
|
---|
3488 | " struct yytbl_hdr th;",
|
---|
3489 | " struct yytbl_reader rd;",
|
---|
3490 | "",
|
---|
3491 | " rd.fp = fp;",
|
---|
3492 | " th.th_version = NULL;",
|
---|
3493 | "",
|
---|
3494 | " /* Keep trying until we find the right set of tables or end of file. */",
|
---|
3495 | " while (!feof(rd.fp)) {",
|
---|
3496 | " rd.bread = 0;",
|
---|
3497 | " if (yytbl_hdr_read (&th, &rd M4_YY_CALL_LAST_ARG) != 0){",
|
---|
3498 | " rv = -1;",
|
---|
3499 | " goto return_rv;",
|
---|
3500 | " }",
|
---|
3501 | "",
|
---|
3502 | " /* A NULL key means choose the first set of tables. */",
|
---|
3503 | " if (key == NULL)",
|
---|
3504 | " break;",
|
---|
3505 | "",
|
---|
3506 | " if (strcmp(th.th_name,key) != 0){",
|
---|
3507 | " /* Skip ahead to next set */",
|
---|
3508 | " fseek(rd.fp, th.th_ssize - th.th_hsize, SEEK_CUR);",
|
---|
3509 | " yyfree(th.th_version M4_YY_CALL_LAST_ARG);",
|
---|
3510 | " th.th_version = NULL;",
|
---|
3511 | " }",
|
---|
3512 | " else",
|
---|
3513 | " break;",
|
---|
3514 | " }",
|
---|
3515 | "",
|
---|
3516 | " while (rd.bread < th.th_ssize){",
|
---|
3517 | " /* Load the data tables */",
|
---|
3518 | " if(yytbl_data_load (yydmap,&rd M4_YY_CALL_LAST_ARG) != 0){",
|
---|
3519 | " rv = -1;",
|
---|
3520 | " goto return_rv;",
|
---|
3521 | " }",
|
---|
3522 | " }",
|
---|
3523 | "",
|
---|
3524 | "return_rv:",
|
---|
3525 | " if(th.th_version){",
|
---|
3526 | " yyfree(th.th_version M4_YY_CALL_LAST_ARG);",
|
---|
3527 | " th.th_version = NULL;",
|
---|
3528 | " }",
|
---|
3529 | "",
|
---|
3530 | " return rv;",
|
---|
3531 | "}",
|
---|
3532 | "",
|
---|
3533 | "/** Load the DFA tables for this scanner from the given stream. */",
|
---|
3534 | "int yytables_fload YYFARGS1(FILE *, fp)",
|
---|
3535 | "{",
|
---|
3536 | "",
|
---|
3537 | " if( yytbl_fload(fp, YYTABLES_NAME M4_YY_CALL_LAST_ARG) != 0)",
|
---|
3538 | " return -1;",
|
---|
3539 | " return 0;",
|
---|
3540 | "}",
|
---|
3541 | "",
|
---|
3542 | "/** Destroy the loaded tables, freeing memory, etc.. */",
|
---|
3543 | "int yytables_destroy YYFARGS0(void)",
|
---|
3544 | "{ ",
|
---|
3545 | " struct yytbl_dmap *dmap=0;",
|
---|
3546 | "",
|
---|
3547 | " if(!M4_YY_TABLES_VERIFY){",
|
---|
3548 | " /* Walk the dmap, freeing the pointers */",
|
---|
3549 | " for(dmap=yydmap; dmap->dm_id; dmap++) {",
|
---|
3550 | " void * v;",
|
---|
3551 | " v = dmap->dm_arr;",
|
---|
3552 | " if(v && *(char**)v){",
|
---|
3553 | " yyfree(*(char**)v M4_YY_CALL_LAST_ARG);",
|
---|
3554 | " *(char**)v = NULL;",
|
---|
3555 | " }",
|
---|
3556 | " }",
|
---|
3557 | " }",
|
---|
3558 | "",
|
---|
3559 | " return 0;",
|
---|
3560 | "}",
|
---|
3561 | "",
|
---|
3562 | "/* end table serialization code definitions */",
|
---|
3563 | "%endif",
|
---|
3564 | "",
|
---|
3565 | "",
|
---|
3566 | "m4_ifdef([[M4_YY_MAIN]], [[",
|
---|
3567 | "int main M4_YY_PARAMS(void);",
|
---|
3568 | "",
|
---|
3569 | "int main ()",
|
---|
3570 | "{",
|
---|
3571 | "",
|
---|
3572 | "%if-reentrant",
|
---|
3573 | " yyscan_t lexer;",
|
---|
3574 | " yylex_init(&lexer);",
|
---|
3575 | " yylex( lexer );",
|
---|
3576 | " yylex_destroy( lexer);",
|
---|
3577 | "",
|
---|
3578 | "%endif",
|
---|
3579 | "%if-not-reentrant",
|
---|
3580 | " yylex();",
|
---|
3581 | "%endif",
|
---|
3582 | "",
|
---|
3583 | " return 0;",
|
---|
3584 | "}",
|
---|
3585 | "]])",
|
---|
3586 | "",
|
---|
3587 | "%ok-for-header",
|
---|
3588 | "m4_ifdef( [[M4_YY_IN_HEADER]],",
|
---|
3589 | "[[",
|
---|
3590 | "#undef YY_NEW_FILE",
|
---|
3591 | "#undef YY_FLUSH_BUFFER",
|
---|
3592 | "#undef yy_set_bol",
|
---|
3593 | "#undef yy_new_buffer",
|
---|
3594 | "#undef yy_set_interactive",
|
---|
3595 | "#undef YY_DO_BEFORE_ACTION",
|
---|
3596 | "",
|
---|
3597 | "#ifdef YY_DECL_IS_OURS",
|
---|
3598 | "#undef YY_DECL_IS_OURS",
|
---|
3599 | "#undef YY_DECL",
|
---|
3600 | "#endif",
|
---|
3601 | "]])",
|
---|
3602 | 0
|
---|
3603 | };
|
---|