GNU Octave  9.1.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
oct-tex-lexer.cc
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////
2 //
3 // Copyright (C) 2013-2024 The Octave Project Developers
4 //
5 // See the file COPYRIGHT.md in the top-level directory of this
6 // distribution or <https://octave.org/copyright/>.
7 //
8 // This file is part of Octave.
9 //
10 // Octave is free software: you can redistribute it and/or modify it
11 // under the terms of the GNU General Public License as published by
12 // the Free Software Foundation, either version 3 of the License, or
13 // (at your option) any later version.
14 //
15 // Octave is distributed in the hope that it will be useful, but
16 // WITHOUT ANY WARRANTY; without even the implied warranty of
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 // GNU General Public License for more details.
19 //
20 // You should have received a copy of the GNU General Public License
21 // along with Octave; see the file COPYING. If not, see
22 // <https://www.gnu.org/licenses/>.
23 //
24 ////////////////////////////////////////////////////////////////////////
25 
26 #if defined (HAVE_CONFIG_H)
27 # include "config.h"
28 #endif
29 
30 #if defined (HAVE_PRAGMA_GCC_DIAGNOSTIC)
31  // This one needs to be global.
32 # pragma GCC diagnostic ignored "-Wunused-function"
33 
34  // Disable these warnings for code that is generated by flex, including
35  // pattern rules. Push the current state so we can restore the warning
36  // state prior to functions we define at the bottom of the file.
37 # pragma GCC diagnostic push
38 # pragma GCC diagnostic ignored "-Wold-style-cast"
39 # pragma GCC diagnostic ignored "-Wsign-compare"
40 # pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
41 #endif
42 
43 // Define away the deprecated register storage class specifier to avoid
44 // potential warnings about it.
45 #if ! defined (register)
46 # define register
47 #endif
48 
49 #line 50 "libinterp/corefcn/oct-tex-lexer.cc"
50 
51 #define YY_INT_ALIGNED short int
52 
53 /* A lexical scanner generated by flex */
54 
55 #define FLEX_SCANNER
56 #define YY_FLEX_MAJOR_VERSION 2
57 #define YY_FLEX_MINOR_VERSION 6
58 #define YY_FLEX_SUBMINOR_VERSION 4
59 #if YY_FLEX_SUBMINOR_VERSION > 0
60 #define FLEX_BETA
61 #endif
62 
63 #ifdef yy_create_buffer
64 #define octave_tex__create_buffer_ALREADY_DEFINED
65 #else
66 #define yy_create_buffer octave_tex__create_buffer
67 #endif
68 
69 #ifdef yy_delete_buffer
70 #define octave_tex__delete_buffer_ALREADY_DEFINED
71 #else
72 #define yy_delete_buffer octave_tex__delete_buffer
73 #endif
74 
75 #ifdef yy_scan_buffer
76 #define octave_tex__scan_buffer_ALREADY_DEFINED
77 #else
78 #define yy_scan_buffer octave_tex__scan_buffer
79 #endif
80 
81 #ifdef yy_scan_string
82 #define octave_tex__scan_string_ALREADY_DEFINED
83 #else
84 #define yy_scan_string octave_tex__scan_string
85 #endif
86 
87 #ifdef yy_scan_bytes
88 #define octave_tex__scan_bytes_ALREADY_DEFINED
89 #else
90 #define yy_scan_bytes octave_tex__scan_bytes
91 #endif
92 
93 #ifdef yy_init_buffer
94 #define octave_tex__init_buffer_ALREADY_DEFINED
95 #else
96 #define yy_init_buffer octave_tex__init_buffer
97 #endif
98 
99 #ifdef yy_flush_buffer
100 #define octave_tex__flush_buffer_ALREADY_DEFINED
101 #else
102 #define yy_flush_buffer octave_tex__flush_buffer
103 #endif
104 
105 #ifdef yy_load_buffer_state
106 #define octave_tex__load_buffer_state_ALREADY_DEFINED
107 #else
108 #define yy_load_buffer_state octave_tex__load_buffer_state
109 #endif
110 
111 #ifdef yy_switch_to_buffer
112 #define octave_tex__switch_to_buffer_ALREADY_DEFINED
113 #else
114 #define yy_switch_to_buffer octave_tex__switch_to_buffer
115 #endif
116 
117 #ifdef yypush_buffer_state
118 #define octave_tex_push_buffer_state_ALREADY_DEFINED
119 #else
120 #define yypush_buffer_state octave_tex_push_buffer_state
121 #endif
122 
123 #ifdef yypop_buffer_state
124 #define octave_tex_pop_buffer_state_ALREADY_DEFINED
125 #else
126 #define yypop_buffer_state octave_tex_pop_buffer_state
127 #endif
128 
129 #ifdef yyensure_buffer_stack
130 #define octave_tex_ensure_buffer_stack_ALREADY_DEFINED
131 #else
132 #define yyensure_buffer_stack octave_tex_ensure_buffer_stack
133 #endif
134 
135 #ifdef yylex
136 #define octave_tex_lex_ALREADY_DEFINED
137 #else
138 #define yylex octave_tex_lex
139 #endif
140 
141 #ifdef yyrestart
142 #define octave_tex_restart_ALREADY_DEFINED
143 #else
144 #define yyrestart octave_tex_restart
145 #endif
146 
147 #ifdef yylex_init
148 #define octave_tex_lex_init_ALREADY_DEFINED
149 #else
150 #define yylex_init octave_tex_lex_init
151 #endif
152 
153 #ifdef yylex_init_extra
154 #define octave_tex_lex_init_extra_ALREADY_DEFINED
155 #else
156 #define yylex_init_extra octave_tex_lex_init_extra
157 #endif
158 
159 #ifdef yylex_destroy
160 #define octave_tex_lex_destroy_ALREADY_DEFINED
161 #else
162 #define yylex_destroy octave_tex_lex_destroy
163 #endif
164 
165 #ifdef yyget_debug
166 #define octave_tex_get_debug_ALREADY_DEFINED
167 #else
168 #define yyget_debug octave_tex_get_debug
169 #endif
170 
171 #ifdef yyset_debug
172 #define octave_tex_set_debug_ALREADY_DEFINED
173 #else
174 #define yyset_debug octave_tex_set_debug
175 #endif
176 
177 #ifdef yyget_extra
178 #define octave_tex_get_extra_ALREADY_DEFINED
179 #else
180 #define yyget_extra octave_tex_get_extra
181 #endif
182 
183 #ifdef yyset_extra
184 #define octave_tex_set_extra_ALREADY_DEFINED
185 #else
186 #define yyset_extra octave_tex_set_extra
187 #endif
188 
189 #ifdef yyget_in
190 #define octave_tex_get_in_ALREADY_DEFINED
191 #else
192 #define yyget_in octave_tex_get_in
193 #endif
194 
195 #ifdef yyset_in
196 #define octave_tex_set_in_ALREADY_DEFINED
197 #else
198 #define yyset_in octave_tex_set_in
199 #endif
200 
201 #ifdef yyget_out
202 #define octave_tex_get_out_ALREADY_DEFINED
203 #else
204 #define yyget_out octave_tex_get_out
205 #endif
206 
207 #ifdef yyset_out
208 #define octave_tex_set_out_ALREADY_DEFINED
209 #else
210 #define yyset_out octave_tex_set_out
211 #endif
212 
213 #ifdef yyget_leng
214 #define octave_tex_get_leng_ALREADY_DEFINED
215 #else
216 #define yyget_leng octave_tex_get_leng
217 #endif
218 
219 #ifdef yyget_text
220 #define octave_tex_get_text_ALREADY_DEFINED
221 #else
222 #define yyget_text octave_tex_get_text
223 #endif
224 
225 #ifdef yyget_lineno
226 #define octave_tex_get_lineno_ALREADY_DEFINED
227 #else
228 #define yyget_lineno octave_tex_get_lineno
229 #endif
230 
231 #ifdef yyset_lineno
232 #define octave_tex_set_lineno_ALREADY_DEFINED
233 #else
234 #define yyset_lineno octave_tex_set_lineno
235 #endif
236 
237 #ifdef yyget_column
238 #define octave_tex_get_column_ALREADY_DEFINED
239 #else
240 #define yyget_column octave_tex_get_column
241 #endif
242 
243 #ifdef yyset_column
244 #define octave_tex_set_column_ALREADY_DEFINED
245 #else
246 #define yyset_column octave_tex_set_column
247 #endif
248 
249 #ifdef yywrap
250 #define octave_tex_wrap_ALREADY_DEFINED
251 #else
252 #define yywrap octave_tex_wrap
253 #endif
254 
255 #ifdef yyget_lval
256 #define octave_tex_get_lval_ALREADY_DEFINED
257 #else
258 #define yyget_lval octave_tex_get_lval
259 #endif
260 
261 #ifdef yyset_lval
262 #define octave_tex_set_lval_ALREADY_DEFINED
263 #else
264 #define yyset_lval octave_tex_set_lval
265 #endif
266 
267 #ifdef yyalloc
268 #define octave_tex_alloc_ALREADY_DEFINED
269 #else
270 #define yyalloc octave_tex_alloc
271 #endif
272 
273 #ifdef yyrealloc
274 #define octave_tex_realloc_ALREADY_DEFINED
275 #else
276 #define yyrealloc octave_tex_realloc
277 #endif
278 
279 #ifdef yyfree
280 #define octave_tex_free_ALREADY_DEFINED
281 #else
282 #define yyfree octave_tex_free
283 #endif
284 
285 /* First, we deal with platform-specific or compiler-specific issues. */
286 
287 /* begin standard C headers. */
288 #include <stdio.h>
289 #include <string.h>
290 #include <errno.h>
291 #include <stdlib.h>
292 
293 /* end standard C headers. */
294 
295 /* flex integer type definitions */
296 
297 #ifndef FLEXINT_H
298 #define FLEXINT_H
299 
300 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
301 
302 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
303 
304 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
305  * if you want the limit (max/min) macros for int types.
306  */
307 #ifndef __STDC_LIMIT_MACROS
308 #define __STDC_LIMIT_MACROS 1
309 #endif
310 
311 #include <inttypes.h>
312 typedef int8_t flex_int8_t;
313 typedef uint8_t flex_uint8_t;
314 typedef int16_t flex_int16_t;
315 typedef uint16_t flex_uint16_t;
316 typedef int32_t flex_int32_t;
317 typedef uint32_t flex_uint32_t;
318 #else
319 typedef signed char flex_int8_t;
320 typedef short int flex_int16_t;
321 typedef int flex_int32_t;
322 typedef unsigned char flex_uint8_t;
323 typedef unsigned short int flex_uint16_t;
324 typedef unsigned int flex_uint32_t;
325 
326 /* Limits of integral types. */
327 #ifndef INT8_MIN
328 #define INT8_MIN (-128)
329 #endif
330 #ifndef INT16_MIN
331 #define INT16_MIN (-32767-1)
332 #endif
333 #ifndef INT32_MIN
334 #define INT32_MIN (-2147483647-1)
335 #endif
336 #ifndef INT8_MAX
337 #define INT8_MAX (127)
338 #endif
339 #ifndef INT16_MAX
340 #define INT16_MAX (32767)
341 #endif
342 #ifndef INT32_MAX
343 #define INT32_MAX (2147483647)
344 #endif
345 #ifndef UINT8_MAX
346 #define UINT8_MAX (255U)
347 #endif
348 #ifndef UINT16_MAX
349 #define UINT16_MAX (65535U)
350 #endif
351 #ifndef UINT32_MAX
352 #define UINT32_MAX (4294967295U)
353 #endif
354 
355 #ifndef SIZE_MAX
356 #define SIZE_MAX (~(size_t)0)
357 #endif
358 
359 #endif /* ! C99 */
360 
361 #endif /* ! FLEXINT_H */
362 
363 /* begin standard C++ headers. */
364 
365 /* TODO: this is always defined, so inline it */
366 #define yyconst const
367 
368 #if defined(__GNUC__) && __GNUC__ >= 3
369 #define yynoreturn __attribute__((__noreturn__))
370 #else
371 #define yynoreturn
372 #endif
373 
374 /* Returned upon end-of-file. */
375 #define YY_NULL 0
376 
377 /* Promotes a possibly negative, possibly signed char to an
378  * integer in range [0..255] for use as an array index.
379  */
380 #define YY_SC_TO_UI(c) ((YY_CHAR) (c))
381 
382 /* An opaque pointer. */
383 #ifndef YY_TYPEDEF_YY_SCANNER_T
384 #define YY_TYPEDEF_YY_SCANNER_T
385 typedef void* yyscan_t;
386 #endif
387 
388 /* For convenience, these vars (plus the bison vars far below)
389  are macros in the reentrant scanner. */
390 #define yyin yyg->yyin_r
391 #define yyout yyg->yyout_r
392 #define yyextra yyg->yyextra_r
393 #define yyleng yyg->yyleng_r
394 #define yytext yyg->yytext_r
395 #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
396 #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
397 #define yy_flex_debug yyg->yy_flex_debug_r
398 
399 /* Enter a start condition. This macro really ought to take a parameter,
400  * but we do it the disgusting crufty way forced on us by the ()-less
401  * definition of BEGIN.
402  */
403 #define BEGIN yyg->yy_start = 1 + 2 *
404 /* Translate the current start state into a value that can be later handed
405  * to BEGIN to return to the state. The YYSTATE alias is for lex
406  * compatibility.
407  */
408 #define YY_START ((yyg->yy_start - 1) / 2)
409 #define YYSTATE YY_START
410 /* Action number for EOF rule of a given start state. */
411 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
412 /* Special action meaning "start processing a new file". */
413 #define YY_NEW_FILE yyrestart( yyin , yyscanner )
414 #define YY_END_OF_BUFFER_CHAR 0
415 
416 /* Size of default input buffer. */
417 #ifndef YY_BUF_SIZE
418 #ifdef __ia64__
419 /* On IA-64, the buffer size is 16k, not 8k.
420  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
421  * Ditto for the __ia64__ case accordingly.
422  */
423 #define YY_BUF_SIZE 32768
424 #else
425 #define YY_BUF_SIZE 16384
426 #endif /* __ia64__ */
427 #endif
428 
429 /* The state buf must be large enough to hold one state per character in the main buffer.
430  */
431 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
432 
433 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
434 #define YY_TYPEDEF_YY_BUFFER_STATE
435 typedef struct yy_buffer_state *YY_BUFFER_STATE;
436 #endif
437 
438 #ifndef YY_TYPEDEF_YY_SIZE_T
439 #define YY_TYPEDEF_YY_SIZE_T
440 typedef size_t yy_size_t;
441 #endif
442 
443 #define EOB_ACT_CONTINUE_SCAN 0
444 #define EOB_ACT_END_OF_FILE 1
445 #define EOB_ACT_LAST_MATCH 2
446 
447  #define YY_LESS_LINENO(n)
448  #define YY_LINENO_REWIND_TO(ptr)
449 
450 /* Return all but the first "n" matched characters back to the input stream. */
451 #define yyless(n) \
452  do \
453  { \
454  /* Undo effects of setting up yytext. */ \
455  int yyless_macro_arg = (n); \
456  YY_LESS_LINENO(yyless_macro_arg);\
457  *yy_cp = yyg->yy_hold_char; \
458  YY_RESTORE_YY_MORE_OFFSET \
459  yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
460  YY_DO_BEFORE_ACTION; /* set up yytext again */ \
461  } \
462  while ( 0 )
463 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
464 
465 #ifndef YY_STRUCT_YY_BUFFER_STATE
466 #define YY_STRUCT_YY_BUFFER_STATE
467 struct yy_buffer_state
468  {
469  FILE *yy_input_file;
470 
471  char *yy_ch_buf; /* input buffer */
472  char *yy_buf_pos; /* current position in input buffer */
473 
474  /* Size of input buffer in bytes, not including room for EOB
475  * characters.
476  */
477  int yy_buf_size;
478 
479  /* Number of characters read into yy_ch_buf, not including EOB
480  * characters.
481  */
482  int yy_n_chars;
483 
484  /* Whether we "own" the buffer - i.e., we know we created it,
485  * and can realloc() it to grow it, and should free() it to
486  * delete it.
487  */
488  int yy_is_our_buffer;
489 
490  /* Whether this is an "interactive" input source; if so, and
491  * if we're using stdio for input, then we want to use getc()
492  * instead of fread(), to make sure we stop fetching input after
493  * each newline.
494  */
495  int yy_is_interactive;
496 
497  /* Whether we're considered to be at the beginning of a line.
498  * If so, '^' rules will be active on the next match, otherwise
499  * not.
500  */
501  int yy_at_bol;
502 
503  int yy_bs_lineno; /**< The line count. */
504  int yy_bs_column; /**< The column count. */
505 
506  /* Whether to try to fill the input buffer when we reach the
507  * end of it.
508  */
509  int yy_fill_buffer;
510 
511  int yy_buffer_status;
512 
513 #define YY_BUFFER_NEW 0
514 #define YY_BUFFER_NORMAL 1
515  /* When an EOF's been seen but there's still some text to process
516  * then we mark the buffer as YY_EOF_PENDING, to indicate that we
517  * shouldn't try reading from the input source any more. We might
518  * still have a bunch of tokens to match, though, because of
519  * possible backing-up.
520  *
521  * When we actually see the EOF, we change the status to "new"
522  * (via yyrestart()), so that the user can continue scanning by
523  * just pointing yyin at a new input file.
524  */
525 #define YY_BUFFER_EOF_PENDING 2
526 
527  };
528 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
529 
530 /* We provide macros for accessing buffer states in case in the
531  * future we want to put the buffer states in a more general
532  * "scanner state".
533  *
534  * Returns the top of the stack, or NULL.
535  */
536 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
537  ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
538  : NULL)
539 /* Same as previous macro, but useful when we know that the buffer stack is not
540  * NULL or when we need an lvalue. For internal use only.
541  */
542 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
543 
544 void yyrestart ( FILE *input_file , yyscan_t yyscanner );
545 void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
546 YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner );
547 void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
548 void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
549 void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
550 void yypop_buffer_state ( yyscan_t yyscanner );
551 
552 static void yyensure_buffer_stack ( yyscan_t yyscanner );
553 static void yy_load_buffer_state ( yyscan_t yyscanner );
554 static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner );
555 #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner)
556 
557 YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner );
558 YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner );
559 YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner );
560 
561 void *yyalloc ( yy_size_t , yyscan_t yyscanner );
562 void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner );
563 void yyfree ( void * , yyscan_t yyscanner );
564 
565 #define yy_new_buffer yy_create_buffer
566 #define yy_set_interactive(is_interactive) \
567  { \
568  if ( ! YY_CURRENT_BUFFER ){ \
569  yyensure_buffer_stack (yyscanner); \
570  YY_CURRENT_BUFFER_LVALUE = \
571  yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
572  } \
573  YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
574  }
575 #define yy_set_bol(at_bol) \
576  { \
577  if ( ! YY_CURRENT_BUFFER ){\
578  yyensure_buffer_stack (yyscanner); \
579  YY_CURRENT_BUFFER_LVALUE = \
580  yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
581  } \
582  YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
583  }
584 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
585 
586 /* Begin user sect3 */
587 
588 #define octave_tex_wrap(yyscanner) (/*CONSTCOND*/1)
589 #define YY_SKIP_YYWRAP
591 
592 typedef int yy_state_type;
593 
594 #define yytext_ptr yytext_r
595 
596 static yy_state_type yy_get_previous_state ( yyscan_t yyscanner );
597 static yy_state_type yy_try_NUL_trans ( yy_state_type current_state , yyscan_t yyscanner);
598 static int yy_get_next_buffer ( yyscan_t yyscanner );
599 static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner );
600 
601 /* Done after the current pattern has been matched and before the
602  * corresponding action - sets up yytext.
603  */
604 #define YY_DO_BEFORE_ACTION \
605  yyg->yytext_ptr = yy_bp; \
606  yyleng = (int) (yy_cp - yy_bp); \
607  yyg->yy_hold_char = *yy_cp; \
608  *yy_cp = '\0'; \
609  yyg->yy_c_buf_p = yy_cp;
610 #define YY_NUM_RULES 128
611 #define YY_END_OF_BUFFER 129
612 /* This struct is not used in this scanner,
613  but its presence is necessary. */
614 struct yy_trans_info
615  {
616  flex_int32_t yy_verify;
617  flex_int32_t yy_nxt;
618  };
619 static const flex_int16_t yy_accept[465] =
620  { 0,
621  0, 0, 0, 0, 0, 0, 129, 127, 126, 127,
622  16, 17, 14, 15, 3, 2, 3, 1, 5, 4,
623  123, 0, 0, 0, 0, 0, 0, 0, 0, 0,
624  0, 0, 22, 20, 21, 0, 0, 0, 0, 0,
625  0, 0, 0, 0, 0, 0, 0, 0, 38, 0,
626  0, 0, 0, 0, 0, 0, 0, 0, 18, 19,
627  2, 1, 1, 1, 0, 0, 64, 0, 0, 0,
628  0, 55, 0, 63, 0, 0, 0, 0, 54, 0,
629  0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
630  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
631 
632  0, 0, 0, 0, 96, 0, 7, 0, 0, 0,
633  0, 0, 0, 0, 35, 0, 0, 100, 36, 0,
634  0, 0, 0, 0, 0, 0, 39, 79, 0, 0,
635  0, 0, 0, 0, 0, 9, 0, 8, 0, 0,
636  0, 0, 0, 0, 0, 0, 0, 62, 37, 0,
637  1, 0, 0, 0, 0, 0, 58, 59, 0, 0,
638  0, 0, 0, 0, 0, 0, 82, 0, 0, 86,
639  0, 47, 0, 0, 0, 0, 0, 87, 125, 0,
640  0, 85, 0, 0, 0, 29, 0, 0, 0, 0,
641  97, 0, 0, 78, 0, 0, 0, 0, 0, 0,
642 
643  0, 93, 0, 101, 0, 73, 121, 0, 0, 0,
644  0, 0, 0, 46, 0, 0, 48, 0, 0, 0,
645  41, 0, 0, 103, 0, 0, 0, 0, 44, 0,
646  0, 0, 0, 0, 88, 0, 0, 0, 0, 0,
647  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
648  24, 0, 80, 83, 0, 0, 105, 0, 0, 0,
649  0, 0, 0, 0, 0, 0, 0, 0, 0, 32,
650  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
651  0, 0, 0, 107, 0, 0, 0, 0, 0, 0,
652  0, 0, 0, 0, 69, 0, 0, 0, 0, 0,
653 
654  0, 0, 0, 28, 51, 50, 0, 0, 60, 0,
655  56, 52, 0, 61, 23, 70, 0, 0, 0, 13,
656  0, 26, 0, 0, 0, 102, 0, 0, 0, 0,
657  25, 0, 66, 33, 0, 0, 117, 122, 0, 0,
658  0, 68, 49, 90, 0, 0, 0, 67, 0, 0,
659  120, 0, 0, 42, 0, 0, 0, 30, 81, 0,
660  0, 40, 0, 0, 89, 53, 0, 0, 0, 104,
661  84, 0, 0, 0, 0, 0, 0, 72, 0, 0,
662  71, 0, 34, 116, 0, 0, 115, 92, 91, 0,
663  106, 119, 118, 0, 0, 94, 98, 0, 0, 0,
664 
665  0, 0, 0, 57, 0, 0, 0, 0, 0, 27,
666  0, 0, 0, 0, 0, 65, 0, 0, 0, 0,
667  113, 45, 0, 0, 0, 0, 74, 0, 0, 0,
668  0, 10, 11, 0, 0, 0, 0, 0, 95, 99,
669  43, 31, 109, 0, 0, 124, 0, 114, 76, 108,
670  0, 0, 77, 111, 12, 0, 0, 110, 75, 0,
671  0, 0, 112, 0
672  } ;
673 
674 static const YY_CHAR yy_ec[256] =
675  { 0,
676  1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
677  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
678  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
679  1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
680  1, 1, 1, 2, 1, 4, 1, 5, 6, 6,
681  6, 6, 6, 6, 6, 6, 6, 1, 1, 1,
682  1, 1, 1, 1, 1, 1, 1, 7, 1, 1,
683  8, 1, 9, 1, 1, 10, 1, 1, 11, 12,
684  1, 13, 14, 15, 16, 1, 1, 17, 1, 1,
685  18, 19, 20, 21, 22, 1, 23, 24, 25, 26,
686 
687  27, 28, 29, 30, 31, 1, 32, 33, 34, 35,
688  36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
689  46, 47, 48, 1, 49, 1, 1, 1, 1, 1,
690  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
691  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
692  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
693  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
694  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
695  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
696  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
697 
698  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
699  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
700  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
701  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
702  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
703  1, 1, 1, 1, 1
704  } ;
705 
706 static const YY_CHAR yy_meta[50] =
707  { 0,
708  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
709  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
710  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
711  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
712  1, 1, 1, 1, 1, 1, 1, 1, 1
713  } ;
714 
715 static const flex_int16_t yy_base[468] =
716  { 0,
717  0, 4, 0, 6, 434, 433, 480, 483, 483, 49,
718  483, 483, 483, 483, 483, 477, 8, 11, 483, 483,
719  483, 451, 454, 442, 1, 441, 0, 2, 443, 443,
720  435, 440, 483, 483, 483, 1, 72, 79, 8, 5,
721  434, 24, 442, 72, 445, 97, 64, 103, 95, 110,
722  123, 125, 88, 430, 104, 0, 435, 438, 483, 483,
723  462, 98, 111, 155, 430, 428, 483, 427, 432, 432,
724  427, 483, 426, 483, 427, 426, 427, 413, 483, 18,
725  423, 414, 409, 408, 483, 415, 410, 410, 414, 405,
726  401, 131, 405, 109, 44, 397, 400, 397, 415, 406,
727 
728  104, 402, 397, 411, 124, 392, 483, 395, 135, 404,
729  394, 135, 396, 402, 483, 403, 142, 483, 483, 399,
730  392, 391, 392, 383, 382, 389, 483, 483, 141, 388,
731  383, 390, 383, 379, 385, 483, 145, 483, 390, 151,
732  370, 384, 376, 153, 370, 381, 381, 483, 483, 365,
733  176, 364, 370, 379, 361, 372, 483, 483, 370, 365,
734  357, 366, 359, 365, 361, 354, 483, 369, 358, 483,
735  349, 483, 364, 364, 351, 357, 339, 483, 483, 343,
736  349, 483, 347, 350, 349, 483, 339, 337, 354, 342,
737  483, 336, 333, 483, 350, 335, 347, 341, 338, 327,
738 
739  326, 483, 330, 483, 332, 483, 483, 335, 321, 339,
740  327, 319, 322, 483, 324, 320, 483, 327, 324, 318,
741  483, 323, 318, 483, 325, 310, 309, 322, 483, 306,
742  319, 306, 313, 146, 483, 314, 319, 318, 317, 313,
743  315, 314, 295, 312, 311, 300, 302, 308, 303, 293,
744  483, 301, 483, 483, 287, 287, 483, 286, 301, 287,
745  299, 288, 277, 278, 149, 285, 294, 275, 269, 483,
746  291, 287, 279, 278, 270, 155, 273, 285, 284, 266,
747  265, 277, 272, 483, 275, 260, 267, 266, 262, 256,
748  273, 268, 267, 266, 483, 269, 251, 251, 256, 257,
749 
750  256, 256, 258, 483, 483, 483, 261, 244, 483, 259,
751  483, 483, 245, 483, 483, 483, 235, 238, 236, 259,
752  245, 483, 240, 235, 237, 483, 232, 248, 239, 236,
753  483, 228, 483, 483, 244, 239, 483, 483, 226, 233,
754  224, 483, 483, 483, 232, 221, 237, 483, 223, 231,
755  483, 218, 233, 483, 215, 213, 212, 483, 483, 216,
756  215, 483, 221, 222, 483, 483, 209, 208, 211, 483,
757  483, 214, 205, 214, 216, 202, 205, 483, 205, 191,
758  483, 195, 483, 483, 197, 206, 483, 483, 483, 201,
759  483, 483, 483, 194, 190, 204, 203, 185, 193, 193,
760 
761  185, 189, 185, 483, 182, 193, 191, 180, 183, 483,
762  191, 190, 185, 179, 184, 483, 174, 181, 173, 172,
763  483, 483, 186, 185, 163, 170, 483, 181, 163, 161,
764  158, 483, 483, 160, 156, 158, 162, 156, 483, 483,
765  483, 483, 483, 152, 175, 483, 161, 483, 483, 483,
766  168, 141, 483, 483, 483, 114, 108, 483, 483, 89,
767  65, 25, 483, 483, 17, 8, 0
768  } ;
769 
770 static const flex_int16_t yy_def[468] =
771  { 0,
772  465, 465, 466, 466, 467, 467, 464, 464, 464, 464,
773  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
774  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
775  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
776  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
777  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
778  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
779  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
780  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
781  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
782 
783  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
784  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
785  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
786  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
787  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
788  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
789  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
790  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
791  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
792  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
793 
794  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
795  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
796  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
797  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
798  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
799  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
800  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
801  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
802  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
803  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
804 
805  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
806  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
807  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
808  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
809  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
810  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
811  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
812  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
813  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
814  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
815 
816  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
817  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
818  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
819  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
820  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
821  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
822  464, 464, 464, 0, 464, 464, 464
823  } ;
824 
825 static const flex_int16_t yy_nxt[533] =
826  { 0,
827  19, 16, 9, 17, 18, 18, 9, 16, 15, 17,
828  18, 18, 62, 62, 63, 64, 64, 8, 10, 464,
829  11, 12, 10, 68, 11, 12, 147, 69, 74, 71,
830  72, 464, 75, 80, 94, 81, 148, 82, 95, 73,
831  83, 97, 98, 96, 163, 99, 102, 13, 14, 100,
832  103, 13, 14, 21, 164, 22, 23, 24, 25, 26,
833  27, 28, 29, 30, 31, 32, 181, 33, 463, 34,
834  35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
835  45, 46, 47, 48, 49, 50, 182, 51, 52, 53,
836  54, 55, 56, 57, 114, 58, 59, 60, 84, 85,
837 
838  462, 87, 62, 62, 88, 115, 105, 106, 89, 90,
839  141, 91, 107, 86, 92, 151, 151, 142, 143, 109,
840  93, 110, 111, 112, 113, 116, 145, 461, 120, 117,
841  146, 121, 124, 118, 122, 123, 125, 179, 188, 126,
842  127, 180, 189, 128, 119, 131, 460, 132, 129, 130,
843  133, 193, 134, 135, 459, 137, 136, 138, 63, 64,
844  64, 139, 201, 175, 194, 176, 140, 177, 197, 198,
845  206, 215, 202, 223, 226, 232, 216, 339, 224, 207,
846  151, 151, 300, 328, 458, 301, 302, 227, 329, 228,
847  457, 456, 233, 340, 455, 454, 453, 452, 451, 450,
848 
849  449, 448, 447, 446, 445, 444, 443, 442, 441, 440,
850  439, 438, 437, 436, 435, 434, 433, 432, 431, 430,
851  429, 428, 427, 426, 425, 424, 423, 422, 421, 420,
852  419, 418, 417, 416, 415, 414, 413, 412, 411, 410,
853  409, 408, 407, 406, 405, 404, 403, 402, 401, 400,
854  399, 398, 397, 396, 395, 394, 393, 392, 391, 390,
855  389, 388, 387, 386, 385, 384, 383, 382, 381, 380,
856  379, 378, 377, 376, 375, 374, 373, 372, 371, 370,
857  369, 368, 367, 366, 365, 364, 363, 362, 361, 360,
858  359, 358, 357, 356, 355, 354, 353, 352, 351, 350,
859 
860  349, 348, 347, 346, 345, 344, 343, 342, 341, 338,
861  337, 336, 335, 334, 333, 332, 331, 330, 327, 326,
862  325, 324, 323, 322, 321, 320, 319, 318, 317, 316,
863  315, 314, 313, 312, 311, 310, 309, 308, 307, 306,
864  305, 304, 303, 299, 298, 297, 296, 295, 294, 293,
865  292, 291, 290, 289, 288, 287, 286, 285, 284, 283,
866  282, 281, 280, 279, 278, 277, 276, 275, 274, 273,
867  272, 271, 270, 269, 268, 267, 266, 265, 264, 263,
868  262, 261, 260, 259, 258, 257, 256, 255, 254, 253,
869  252, 251, 250, 249, 248, 247, 246, 245, 244, 243,
870 
871  242, 241, 240, 239, 238, 237, 236, 235, 234, 231,
872  230, 229, 225, 222, 221, 220, 219, 218, 217, 214,
873  213, 212, 211, 210, 209, 208, 205, 204, 203, 200,
874  199, 196, 195, 192, 191, 190, 187, 186, 185, 184,
875  183, 178, 174, 173, 172, 171, 170, 169, 168, 167,
876  166, 165, 162, 161, 160, 159, 158, 157, 156, 155,
877  154, 153, 152, 61, 150, 149, 144, 108, 104, 101,
878  79, 78, 77, 76, 70, 67, 66, 65, 61, 464,
879  20, 20, 7, 464, 464, 464, 464, 464, 464, 464,
880  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
881 
882  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
883  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
884  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
885  464, 464
886  } ;
887 
888 static const flex_int16_t yy_chk[533] =
889  { 0,
890  467, 3, 1, 3, 3, 3, 2, 4, 466, 4,
891  4, 4, 17, 17, 18, 18, 18, 465, 1, 0,
892  1, 1, 2, 25, 2, 2, 56, 25, 28, 27,
893  27, 0, 28, 36, 39, 36, 56, 36, 39, 27,
894  36, 40, 40, 39, 80, 40, 42, 1, 1, 40,
895  42, 2, 2, 10, 80, 10, 10, 10, 10, 10,
896  10, 10, 10, 10, 10, 10, 95, 10, 462, 10,
897  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
898  10, 10, 10, 10, 10, 10, 95, 10, 10, 10,
899  10, 10, 10, 10, 47, 10, 10, 10, 37, 37,
900 
901  461, 38, 62, 62, 38, 47, 44, 44, 38, 38,
902  53, 38, 44, 37, 38, 63, 63, 53, 53, 46,
903  38, 46, 46, 46, 46, 48, 55, 460, 49, 48,
904  55, 49, 50, 48, 49, 49, 50, 94, 101, 50,
905  50, 94, 101, 50, 48, 51, 457, 51, 50, 50,
906  51, 105, 51, 51, 456, 52, 51, 52, 64, 64,
907  64, 52, 112, 92, 105, 92, 52, 92, 109, 109,
908  117, 129, 112, 137, 140, 144, 129, 276, 137, 117,
909  151, 151, 234, 265, 452, 234, 234, 140, 265, 140,
910  451, 447, 144, 276, 445, 444, 438, 437, 436, 435,
911 
912  434, 431, 430, 429, 428, 426, 425, 424, 423, 420,
913  419, 418, 417, 415, 414, 413, 412, 411, 409, 408,
914  407, 406, 405, 403, 402, 401, 400, 399, 398, 397,
915  396, 395, 394, 390, 386, 385, 382, 380, 379, 377,
916  376, 375, 374, 373, 372, 369, 368, 367, 364, 363,
917  361, 360, 357, 356, 355, 353, 352, 350, 349, 347,
918  346, 345, 341, 340, 339, 336, 335, 332, 330, 329,
919  328, 327, 325, 324, 323, 321, 320, 319, 318, 317,
920  313, 310, 308, 307, 303, 302, 301, 300, 299, 298,
921  297, 296, 294, 293, 292, 291, 290, 289, 288, 287,
922 
923  286, 285, 283, 282, 281, 280, 279, 278, 277, 275,
924  274, 273, 272, 271, 269, 268, 267, 266, 264, 263,
925  262, 261, 260, 259, 258, 256, 255, 252, 250, 249,
926  248, 247, 246, 245, 244, 243, 242, 241, 240, 239,
927  238, 237, 236, 233, 232, 231, 230, 228, 227, 226,
928  225, 223, 222, 220, 219, 218, 216, 215, 213, 212,
929  211, 210, 209, 208, 205, 203, 201, 200, 199, 198,
930  197, 196, 195, 193, 192, 190, 189, 188, 187, 185,
931  184, 183, 181, 180, 177, 176, 175, 174, 173, 171,
932  169, 168, 166, 165, 164, 163, 162, 161, 160, 159,
933 
934  156, 155, 154, 153, 152, 150, 147, 146, 145, 143,
935  142, 141, 139, 135, 134, 133, 132, 131, 130, 126,
936  125, 124, 123, 122, 121, 120, 116, 114, 113, 111,
937  110, 108, 106, 104, 103, 102, 100, 99, 98, 97,
938  96, 93, 91, 90, 89, 88, 87, 86, 84, 83,
939  82, 81, 78, 77, 76, 75, 73, 71, 70, 69,
940  68, 66, 65, 61, 58, 57, 54, 45, 43, 41,
941  32, 31, 30, 29, 26, 24, 23, 22, 16, 7,
942  6, 5, 464, 464, 464, 464, 464, 464, 464, 464,
943  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
944 
945  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
946  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
947  464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
948  464, 464
949  } ;
950 
951 /* The intent behind this definition is that it'll catch
952  * any uses of REJECT which flex missed.
953  */
954 #define REJECT reject_used_but_not_detected
955 #define yymore() yymore_used_but_not_detected
956 #define YY_MORE_ADJ 0
957 #define YY_RESTORE_YY_MORE_OFFSET
958 #line 1 "libinterp/corefcn/oct-tex-lexer.ll"
959 /* DO NOT EDIT. AUTOMATICALLY GENERATED FROM oct-tex-lexer.in.ll and oct-tex-symbols.in. */
960 
961 
962 
963 #line 66 "libinterp/corefcn/oct-tex-lexer.ll"
964 
965 #include "unistd-wrappers.h"
966 
967 #include "text-engine.h"
968 
969 // oct-tex-parser.h must be included after text-engine.h
970 #include "oct-tex-parser.h"
971 
972 // FIXME: with bison 3.x, OCTAVE_TEX_STYPE appears in the generated
973 // oct-parse.h file, but there is no definition for YYSTYPE, which is
974 // needed by the code that is generated by flex. I can't seem to find
975 // a way to tell flex to use OCTAVE_TEX_STYPE instead of YYSTYPE in
976 // the code it generates, or to tell bison to provide the definition
977 // of YYSTYPE in the generated oct-parse.h file.
978 
979 #if defined (OCTAVE_TEX_STYPE_IS_DECLARED) && ! defined YYSTYPE
980 # define YYSTYPE OCTAVE_TEX_STYPE
981 #endif
982 
983 #define YY_NO_UNISTD_H 1
984 #define isatty octave_isatty_wrapper
985 #define yyguts_t octave_tex_yyguts_t
986 
987 #line 988 "libinterp/corefcn/oct-tex-lexer.cc"
988 #line 989 "libinterp/corefcn/oct-tex-lexer.cc"
989 
990 #define INITIAL 0
991 #define NUM_MODE 1
992 #define MAYBE_NUM_MODE 2
993 
994 #ifndef YY_NO_UNISTD_H
995 /* Special case for "unistd.h", since it is non-ANSI. We include it way
996  * down here because we want the user's section 1 to have been scanned first.
997  * The user has a chance to override it with an option.
998  */
999 #include <unistd.h>
1000 #endif
1001 
1002 #ifndef YY_EXTRA_TYPE
1003 #define YY_EXTRA_TYPE void *
1004 #endif
1005 
1006 /* Holds the entire state of the reentrant scanner. */
1007 struct yyguts_t
1008  {
1009 
1010  /* User-defined. Not touched by flex. */
1011  YY_EXTRA_TYPE yyextra_r;
1012 
1013  /* The rest are the same as the globals declared in the non-reentrant scanner. */
1014  FILE *yyin_r, *yyout_r;
1015  size_t yy_buffer_stack_top; /**< index of top of stack. */
1016  size_t yy_buffer_stack_max; /**< capacity of stack. */
1017  YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
1018  char yy_hold_char;
1019  int yy_n_chars;
1020  int yyleng_r;
1021  char *yy_c_buf_p;
1022  int yy_init;
1023  int yy_start;
1024  int yy_did_buffer_switch_on_eof;
1025  int yy_start_stack_ptr;
1026  int yy_start_stack_depth;
1027  int *yy_start_stack;
1028  yy_state_type yy_last_accepting_state;
1029  char* yy_last_accepting_cpos;
1030 
1031  int yylineno_r;
1032  int yy_flex_debug_r;
1033 
1034  char *yytext_r;
1035  int yy_more_flag;
1036  int yy_more_len;
1037 
1038  YYSTYPE * yylval_r;
1039 
1040  }; /* end struct yyguts_t */
1041 
1042 static int yy_init_globals ( yyscan_t yyscanner );
1043 
1044  /* This must go here because YYSTYPE and YYLTYPE are included
1045  * from bison output in section 1.*/
1046  # define yylval yyg->yylval_r
1047 
1048 int yylex_init (yyscan_t* scanner);
1049 
1050 int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);
1051 
1052 /* Accessor methods to globals.
1053  These are made visible to non-reentrant scanners for convenience. */
1054 
1055 int yylex_destroy ( yyscan_t yyscanner );
1056 
1057 int yyget_debug ( yyscan_t yyscanner );
1058 
1059 void yyset_debug ( int debug_flag , yyscan_t yyscanner );
1060 
1061 YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner );
1062 
1063 void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner );
1064 
1065 FILE *yyget_in ( yyscan_t yyscanner );
1066 
1067 void yyset_in ( FILE * _in_str , yyscan_t yyscanner );
1068 
1069 FILE *yyget_out ( yyscan_t yyscanner );
1070 
1071 void yyset_out ( FILE * _out_str , yyscan_t yyscanner );
1072 
1073  int yyget_leng ( yyscan_t yyscanner );
1074 
1075 char *yyget_text ( yyscan_t yyscanner );
1076 
1077 int yyget_lineno ( yyscan_t yyscanner );
1078 
1079 void yyset_lineno ( int _line_number , yyscan_t yyscanner );
1080 
1081 int yyget_column ( yyscan_t yyscanner );
1082 
1083 void yyset_column ( int _column_no , yyscan_t yyscanner );
1084 
1085 YYSTYPE * yyget_lval ( yyscan_t yyscanner );
1086 
1087 void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner );
1088 
1089 /* Macros after this point can all be overridden by user definitions in
1090  * section 1.
1091  */
1092 
1093 #ifndef YY_SKIP_YYWRAP
1094 #ifdef __cplusplus
1095 extern "C" int yywrap ( yyscan_t yyscanner );
1096 #else
1097 extern int yywrap ( yyscan_t yyscanner );
1098 #endif
1099 #endif
1100 
1101 #ifndef YY_NO_UNPUT
1102 
1103  static void yyunput ( int c, char *buf_ptr , yyscan_t yyscanner);
1104 
1105 #endif
1106 
1107 #ifndef yytext_ptr
1108 static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner);
1109 #endif
1110 
1111 #ifdef YY_NEED_STRLEN
1112 static int yy_flex_strlen ( const char * , yyscan_t yyscanner);
1113 #endif
1114 
1115 #ifndef YY_NO_INPUT
1116 #ifdef __cplusplus
1117 static int yyinput ( yyscan_t yyscanner );
1118 #else
1119 static int input ( yyscan_t yyscanner );
1120 #endif
1121 
1122 #endif
1123 
1124 /* Amount of stuff to slurp up with each read. */
1125 #ifndef YY_READ_BUF_SIZE
1126 #ifdef __ia64__
1127 /* On IA-64, the buffer size is 16k, not 8k */
1128 #define YY_READ_BUF_SIZE 16384
1129 #else
1130 #define YY_READ_BUF_SIZE 8192
1131 #endif /* __ia64__ */
1132 #endif
1133 
1134 /* Copy whatever the last rule matched to the standard output. */
1135 #ifndef ECHO
1136 /* This used to be an fputs(), but since the string might contain NUL's,
1137  * we now use fwrite().
1138  */
1139 #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
1140 #endif
1141 
1142 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1143  * is returned in "result".
1144  */
1145 #ifndef YY_INPUT
1146 #define YY_INPUT(buf,result,max_size) \
1147  if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1148  { \
1149  int c = '*'; \
1150  int n; \
1151  for ( n = 0; n < max_size && \
1152  (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1153  buf[n] = (char) c; \
1154  if ( c == '\n' ) \
1155  buf[n++] = (char) c; \
1156  if ( c == EOF && ferror( yyin ) ) \
1157  YY_FATAL_ERROR( "input in flex scanner failed" ); \
1158  result = n; \
1159  } \
1160  else \
1161  { \
1162  errno=0; \
1163  while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
1164  { \
1165  if( errno != EINTR) \
1166  { \
1167  YY_FATAL_ERROR( "input in flex scanner failed" ); \
1168  break; \
1169  } \
1170  errno=0; \
1171  clearerr(yyin); \
1172  } \
1173  }\
1174 \
1175 
1176 #endif
1177 
1178 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1179  * we don't want an extra ';' after the "return" because that will cause
1180  * some compilers to complain about unreachable statements.
1181  */
1182 #ifndef yyterminate
1183 #define yyterminate() return YY_NULL
1184 #endif
1185 
1186 /* Number of entries by which start-condition stack grows. */
1187 #ifndef YY_START_STACK_INCR
1188 #define YY_START_STACK_INCR 25
1189 #endif
1190 
1191 /* Report a fatal error. */
1192 #ifndef YY_FATAL_ERROR
1193 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1194 #endif
1195 
1196 /* end tables serialization structures and prototypes */
1197 
1198 /* Default declaration of generated scanner - a define so the user can
1199  * easily add parameters.
1200  */
1201 #ifndef YY_DECL
1202 #define YY_DECL_IS_OURS 1
1203 
1204 extern int yylex \
1205  (YYSTYPE * yylval_param , yyscan_t yyscanner);
1206 
1207 #define YY_DECL int yylex \
1208  (YYSTYPE * yylval_param , yyscan_t yyscanner)
1209 #endif /* !YY_DECL */
1210 
1211 /* Code executed at the beginning of each rule, after yytext and yyleng
1212  * have been set up.
1213  */
1214 #ifndef YY_USER_ACTION
1215 #define YY_USER_ACTION
1216 #endif
1217 
1218 /* Code executed at the end of each rule. */
1219 #ifndef YY_BREAK
1220 #define YY_BREAK /*LINTED*/break;
1221 #endif
1222 
1223 #define YY_RULE_SETUP \
1224  YY_USER_ACTION
1225 
1226 /** The main scanner function which does all the work.
1227  */
1229 {
1230  yy_state_type yy_current_state;
1231  char *yy_cp, *yy_bp;
1232  int yy_act;
1233  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1234 
1235  yylval = yylval_param;
1236 
1237  if ( !yyg->yy_init )
1238  {
1239  yyg->yy_init = 1;
1240 
1241 #ifdef YY_USER_INIT
1242  YY_USER_INIT;
1243 #endif
1244 
1245  if ( ! yyg->yy_start )
1246  yyg->yy_start = 1; /* first start state */
1247 
1248  if ( ! yyin )
1249  yyin = stdin;
1250 
1251  if ( ! yyout )
1252  yyout = stdout;
1253 
1254  if ( ! YY_CURRENT_BUFFER ) {
1255  yyensure_buffer_stack (yyscanner);
1257  yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
1258  }
1259 
1260  yy_load_buffer_state( yyscanner );
1261  }
1262 
1263  {
1264 #line 94 "libinterp/corefcn/oct-tex-lexer.ll"
1265 
1266 
1267 
1268 #line 98 "libinterp/corefcn/oct-tex-lexer.ll"
1269 // Numeric values.
1270 
1271 
1272 #line 1273 "libinterp/corefcn/oct-tex-lexer.cc"
1273 
1274  while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
1275  {
1276  yy_cp = yyg->yy_c_buf_p;
1277 
1278  /* Support of yytext. */
1279  *yy_cp = yyg->yy_hold_char;
1280 
1281  /* yy_bp points to the position in yy_ch_buf of the start of
1282  * the current run.
1283  */
1284  yy_bp = yy_cp;
1285 
1286  yy_current_state = yyg->yy_start;
1287 yy_match:
1288  do
1289  {
1290  YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
1291  if ( yy_accept[yy_current_state] )
1292  {
1293  yyg->yy_last_accepting_state = yy_current_state;
1294  yyg->yy_last_accepting_cpos = yy_cp;
1295  }
1296  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1297  {
1298  yy_current_state = (int) yy_def[yy_current_state];
1299  if ( yy_current_state >= 465 )
1300  yy_c = yy_meta[yy_c];
1301  }
1302  yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
1303  ++yy_cp;
1304  }
1305  while ( yy_base[yy_current_state] != 483 );
1306 
1307 yy_find_action:
1308  yy_act = yy_accept[yy_current_state];
1309  if ( yy_act == 0 )
1310  { /* have to back up */
1311  yy_cp = yyg->yy_last_accepting_cpos;
1312  yy_current_state = yyg->yy_last_accepting_state;
1313  yy_act = yy_accept[yy_current_state];
1314  }
1315 
1317 
1318 do_action: /* This label is used only to access EOF actions. */
1319 
1320  switch ( yy_act )
1321  { /* beginning of action switch */
1322  case 0: /* must back up */
1323  /* undo the effects of YY_DO_BEFORE_ACTION */
1324  *yy_cp = yyg->yy_hold_char;
1325  yy_cp = yyg->yy_last_accepting_cpos;
1326  yy_current_state = yyg->yy_last_accepting_state;
1327  goto yy_find_action;
1328 
1329 case 1:
1331 #line 101 "libinterp/corefcn/oct-tex-lexer.ll"
1332 {
1333  int nread = sscanf (yytext, "%lf", &(yylval->num));
1334 
1335  if (nread == 1)
1336  return NUM;
1337  }
1338  YY_BREAK
1339 case 2:
1341 #line 108 "libinterp/corefcn/oct-tex-lexer.ll"
1342 { }
1343  YY_BREAK
1344 case 3:
1345 /* rule 3 can match eol */
1347 #line 110 "libinterp/corefcn/oct-tex-lexer.ll"
1348 {
1349  yyless (0);
1350  BEGIN (INITIAL);
1351  }
1352  YY_BREAK
1353 case 4:
1355 #line 115 "libinterp/corefcn/oct-tex-lexer.ll"
1356 {
1357  BEGIN (NUM_MODE);
1358  return START;
1359  }
1360  YY_BREAK
1361 case 5:
1362 /* rule 5 can match eol */
1364 #line 120 "libinterp/corefcn/oct-tex-lexer.ll"
1365 {
1366  yyless (0);
1367  BEGIN (INITIAL);
1368  }
1369  YY_BREAK
1370 
1371 // Simple commands.
1372 
1373 case 6:
1375 #line 129 "libinterp/corefcn/oct-tex-lexer.ll"
1376 { return BF; }
1377  YY_BREAK
1378 case 7:
1380 #line 130 "libinterp/corefcn/oct-tex-lexer.ll"
1381 { return IT; }
1382  YY_BREAK
1383 case 8:
1385 #line 131 "libinterp/corefcn/oct-tex-lexer.ll"
1386 { return SL; }
1387  YY_BREAK
1388 case 9:
1390 #line 132 "libinterp/corefcn/oct-tex-lexer.ll"
1391 { return RM; }
1392  YY_BREAK
1393 
1394 // Generic font commands.
1395 
1396 case 10:
1398 #line 138 "libinterp/corefcn/oct-tex-lexer.ll"
1399 { return FONTNAME; }
1400  YY_BREAK
1401 case 11:
1403 #line 140 "libinterp/corefcn/oct-tex-lexer.ll"
1404 {
1406  return FONTSIZE;
1407  }
1408  YY_BREAK
1409 case 12:
1411 #line 145 "libinterp/corefcn/oct-tex-lexer.ll"
1412 {
1414  return COLOR_RGB;
1415  }
1416  YY_BREAK
1417 case 13:
1419 #line 150 "libinterp/corefcn/oct-tex-lexer.ll"
1420 { return COLOR; }
1421  YY_BREAK
1422 
1423 // Special characters.
1424 
1425 case 14:
1427 #line 156 "libinterp/corefcn/oct-tex-lexer.ll"
1428 { return START; }
1429  YY_BREAK
1430 case 15:
1432 #line 157 "libinterp/corefcn/oct-tex-lexer.ll"
1433 { return END; }
1434  YY_BREAK
1435 case 16:
1437 #line 158 "libinterp/corefcn/oct-tex-lexer.ll"
1438 { return SUPER; }
1439  YY_BREAK
1440 case 17:
1442 #line 159 "libinterp/corefcn/oct-tex-lexer.ll"
1443 { return SUB; }
1444  YY_BREAK
1445 case 18:
1446 #line 162 "libinterp/corefcn/oct-tex-lexer.ll"
1447 case 19:
1448 #line 163 "libinterp/corefcn/oct-tex-lexer.ll"
1449 case 20:
1450 #line 164 "libinterp/corefcn/oct-tex-lexer.ll"
1451 case 21:
1452 #line 165 "libinterp/corefcn/oct-tex-lexer.ll"
1453 case 22:
1455 #line 165 "libinterp/corefcn/oct-tex-lexer.ll"
1456 {
1457  yylval->ch = yytext[1];
1458  return CH;
1459  }
1460  YY_BREAK
1461 
1462 // Symbols.
1463 
1464 case 23:
1466 #line 174 "libinterp/corefcn/oct-tex-lexer.ll"
1467 { yylval->sym = 0; return SYM; }
1468  YY_BREAK
1469 case 24:
1471 #line 175 "libinterp/corefcn/oct-tex-lexer.ll"
1472 { yylval->sym = 1; return SYM; }
1473  YY_BREAK
1474 case 25:
1476 #line 176 "libinterp/corefcn/oct-tex-lexer.ll"
1477 { yylval->sym = 2; return SYM; }
1478  YY_BREAK
1479 case 26:
1481 #line 177 "libinterp/corefcn/oct-tex-lexer.ll"
1482 { yylval->sym = 3; return SYM; }
1483  YY_BREAK
1484 case 27:
1486 #line 178 "libinterp/corefcn/oct-tex-lexer.ll"
1487 { yylval->sym = 4; return SYM; }
1488  YY_BREAK
1489 case 28:
1491 #line 179 "libinterp/corefcn/oct-tex-lexer.ll"
1492 { yylval->sym = 5; return SYM; }
1493  YY_BREAK
1494 case 29:
1496 #line 180 "libinterp/corefcn/oct-tex-lexer.ll"
1497 { yylval->sym = 6; return SYM; }
1498  YY_BREAK
1499 case 30:
1501 #line 181 "libinterp/corefcn/oct-tex-lexer.ll"
1502 { yylval->sym = 7; return SYM; }
1503  YY_BREAK
1504 case 31:
1506 #line 182 "libinterp/corefcn/oct-tex-lexer.ll"
1507 { yylval->sym = 8; return SYM; }
1508  YY_BREAK
1509 case 32:
1511 #line 183 "libinterp/corefcn/oct-tex-lexer.ll"
1512 { yylval->sym = 9; return SYM; }
1513  YY_BREAK
1514 case 33:
1516 #line 184 "libinterp/corefcn/oct-tex-lexer.ll"
1517 { yylval->sym = 10; return SYM; }
1518  YY_BREAK
1519 case 34:
1521 #line 185 "libinterp/corefcn/oct-tex-lexer.ll"
1522 { yylval->sym = 11; return SYM; }
1523  YY_BREAK
1524 case 35:
1526 #line 186 "libinterp/corefcn/oct-tex-lexer.ll"
1527 { yylval->sym = 12; return SYM; }
1528  YY_BREAK
1529 case 36:
1531 #line 187 "libinterp/corefcn/oct-tex-lexer.ll"
1532 { yylval->sym = 13; return SYM; }
1533  YY_BREAK
1534 case 37:
1536 #line 188 "libinterp/corefcn/oct-tex-lexer.ll"
1537 { yylval->sym = 14; return SYM; }
1538  YY_BREAK
1539 case 38:
1541 #line 189 "libinterp/corefcn/oct-tex-lexer.ll"
1542 { yylval->sym = 15; return SYM; }
1543  YY_BREAK
1544 case 39:
1546 #line 190 "libinterp/corefcn/oct-tex-lexer.ll"
1547 { yylval->sym = 16; return SYM; }
1548  YY_BREAK
1549 case 40:
1551 #line 191 "libinterp/corefcn/oct-tex-lexer.ll"
1552 { yylval->sym = 17; return SYM; }
1553  YY_BREAK
1554 case 41:
1556 #line 192 "libinterp/corefcn/oct-tex-lexer.ll"
1557 { yylval->sym = 18; return SYM; }
1558  YY_BREAK
1559 case 42:
1561 #line 193 "libinterp/corefcn/oct-tex-lexer.ll"
1562 { yylval->sym = 19; return SYM; }
1563  YY_BREAK
1564 case 43:
1566 #line 194 "libinterp/corefcn/oct-tex-lexer.ll"
1567 { yylval->sym = 20; return SYM; }
1568  YY_BREAK
1569 case 44:
1571 #line 195 "libinterp/corefcn/oct-tex-lexer.ll"
1572 { yylval->sym = 21; return SYM; }
1573  YY_BREAK
1574 case 45:
1576 #line 196 "libinterp/corefcn/oct-tex-lexer.ll"
1577 { yylval->sym = 22; return SYM; }
1578  YY_BREAK
1579 case 46:
1581 #line 197 "libinterp/corefcn/oct-tex-lexer.ll"
1582 { yylval->sym = 23; return SYM; }
1583  YY_BREAK
1584 case 47:
1586 #line 198 "libinterp/corefcn/oct-tex-lexer.ll"
1587 { yylval->sym = 24; return SYM; }
1588  YY_BREAK
1589 case 48:
1591 #line 199 "libinterp/corefcn/oct-tex-lexer.ll"
1592 { yylval->sym = 25; return SYM; }
1593  YY_BREAK
1594 case 49:
1596 #line 200 "libinterp/corefcn/oct-tex-lexer.ll"
1597 { yylval->sym = 26; return SYM; }
1598  YY_BREAK
1599 case 50:
1601 #line 201 "libinterp/corefcn/oct-tex-lexer.ll"
1602 { yylval->sym = 27; return SYM; }
1603  YY_BREAK
1604 case 51:
1606 #line 202 "libinterp/corefcn/oct-tex-lexer.ll"
1607 { yylval->sym = 28; return SYM; }
1608  YY_BREAK
1609 case 52:
1611 #line 203 "libinterp/corefcn/oct-tex-lexer.ll"
1612 { yylval->sym = 29; return SYM; }
1613  YY_BREAK
1614 case 53:
1616 #line 204 "libinterp/corefcn/oct-tex-lexer.ll"
1617 { yylval->sym = 30; return SYM; }
1618  YY_BREAK
1619 case 54:
1621 #line 205 "libinterp/corefcn/oct-tex-lexer.ll"
1622 { yylval->sym = 31; return SYM; }
1623  YY_BREAK
1624 case 55:
1626 #line 206 "libinterp/corefcn/oct-tex-lexer.ll"
1627 { yylval->sym = 32; return SYM; }
1628  YY_BREAK
1629 case 56:
1631 #line 207 "libinterp/corefcn/oct-tex-lexer.ll"
1632 { yylval->sym = 33; return SYM; }
1633  YY_BREAK
1634 case 57:
1636 #line 208 "libinterp/corefcn/oct-tex-lexer.ll"
1637 { yylval->sym = 34; return SYM; }
1638  YY_BREAK
1639 case 58:
1641 #line 209 "libinterp/corefcn/oct-tex-lexer.ll"
1642 { yylval->sym = 35; return SYM; }
1643  YY_BREAK
1644 case 59:
1646 #line 210 "libinterp/corefcn/oct-tex-lexer.ll"
1647 { yylval->sym = 36; return SYM; }
1648  YY_BREAK
1649 case 60:
1651 #line 211 "libinterp/corefcn/oct-tex-lexer.ll"
1652 { yylval->sym = 37; return SYM; }
1653  YY_BREAK
1654 case 61:
1656 #line 212 "libinterp/corefcn/oct-tex-lexer.ll"
1657 { yylval->sym = 38; return SYM; }
1658  YY_BREAK
1659 case 62:
1661 #line 213 "libinterp/corefcn/oct-tex-lexer.ll"
1662 { yylval->sym = 39; return SYM; }
1663  YY_BREAK
1664 case 63:
1666 #line 214 "libinterp/corefcn/oct-tex-lexer.ll"
1667 { yylval->sym = 40; return SYM; }
1668  YY_BREAK
1669 case 64:
1671 #line 215 "libinterp/corefcn/oct-tex-lexer.ll"
1672 { yylval->sym = 41; return SYM; }
1673  YY_BREAK
1674 case 65:
1676 #line 216 "libinterp/corefcn/oct-tex-lexer.ll"
1677 { yylval->sym = 42; return SYM; }
1678  YY_BREAK
1679 case 66:
1681 #line 217 "libinterp/corefcn/oct-tex-lexer.ll"
1682 { yylval->sym = 43; return SYM; }
1683  YY_BREAK
1684 case 67:
1686 #line 218 "libinterp/corefcn/oct-tex-lexer.ll"
1687 { yylval->sym = 44; return SYM; }
1688  YY_BREAK
1689 case 68:
1691 #line 219 "libinterp/corefcn/oct-tex-lexer.ll"
1692 { yylval->sym = 45; return SYM; }
1693  YY_BREAK
1694 case 69:
1696 #line 220 "libinterp/corefcn/oct-tex-lexer.ll"
1697 { yylval->sym = 46; return SYM; }
1698  YY_BREAK
1699 case 70:
1701 #line 221 "libinterp/corefcn/oct-tex-lexer.ll"
1702 { yylval->sym = 47; return SYM; }
1703  YY_BREAK
1704 case 71:
1706 #line 222 "libinterp/corefcn/oct-tex-lexer.ll"
1707 { yylval->sym = 48; return SYM; }
1708  YY_BREAK
1709 case 72:
1711 #line 223 "libinterp/corefcn/oct-tex-lexer.ll"
1712 { yylval->sym = 49; return SYM; }
1713  YY_BREAK
1714 case 73:
1716 #line 224 "libinterp/corefcn/oct-tex-lexer.ll"
1717 { yylval->sym = 50; return SYM; }
1718  YY_BREAK
1719 case 74:
1721 #line 225 "libinterp/corefcn/oct-tex-lexer.ll"
1722 { yylval->sym = 51; return SYM; }
1723  YY_BREAK
1724 case 75:
1726 #line 226 "libinterp/corefcn/oct-tex-lexer.ll"
1727 { yylval->sym = 52; return SYM; }
1728  YY_BREAK
1729 case 76:
1731 #line 227 "libinterp/corefcn/oct-tex-lexer.ll"
1732 { yylval->sym = 53; return SYM; }
1733  YY_BREAK
1734 case 77:
1736 #line 228 "libinterp/corefcn/oct-tex-lexer.ll"
1737 { yylval->sym = 54; return SYM; }
1738  YY_BREAK
1739 case 78:
1741 #line 229 "libinterp/corefcn/oct-tex-lexer.ll"
1742 { yylval->sym = 55; return SYM; }
1743  YY_BREAK
1744 case 79:
1746 #line 230 "libinterp/corefcn/oct-tex-lexer.ll"
1747 { yylval->sym = 56; return SYM; }
1748  YY_BREAK
1749 case 80:
1751 #line 231 "libinterp/corefcn/oct-tex-lexer.ll"
1752 { yylval->sym = 57; return SYM; }
1753  YY_BREAK
1754 case 81:
1756 #line 232 "libinterp/corefcn/oct-tex-lexer.ll"
1757 { yylval->sym = 58; return SYM; }
1758  YY_BREAK
1759 case 82:
1761 #line 233 "libinterp/corefcn/oct-tex-lexer.ll"
1762 { yylval->sym = 59; return SYM; }
1763  YY_BREAK
1764 case 83:
1766 #line 234 "libinterp/corefcn/oct-tex-lexer.ll"
1767 { yylval->sym = 60; return SYM; }
1768  YY_BREAK
1769 case 84:
1771 #line 235 "libinterp/corefcn/oct-tex-lexer.ll"
1772 { yylval->sym = 61; return SYM; }
1773  YY_BREAK
1774 case 85:
1776 #line 236 "libinterp/corefcn/oct-tex-lexer.ll"
1777 { yylval->sym = 62; return SYM; }
1778  YY_BREAK
1779 case 86:
1781 #line 237 "libinterp/corefcn/oct-tex-lexer.ll"
1782 { yylval->sym = 63; return SYM; }
1783  YY_BREAK
1784 case 87:
1786 #line 238 "libinterp/corefcn/oct-tex-lexer.ll"
1787 { yylval->sym = 64; return SYM; }
1788  YY_BREAK
1789 case 88:
1791 #line 239 "libinterp/corefcn/oct-tex-lexer.ll"
1792 { yylval->sym = 65; return SYM; }
1793  YY_BREAK
1794 case 89:
1796 #line 240 "libinterp/corefcn/oct-tex-lexer.ll"
1797 { yylval->sym = 66; return SYM; }
1798  YY_BREAK
1799 case 90:
1801 #line 241 "libinterp/corefcn/oct-tex-lexer.ll"
1802 { yylval->sym = 67; return SYM; }
1803  YY_BREAK
1804 case 91:
1806 #line 242 "libinterp/corefcn/oct-tex-lexer.ll"
1807 { yylval->sym = 68; return SYM; }
1808  YY_BREAK
1809 case 92:
1811 #line 243 "libinterp/corefcn/oct-tex-lexer.ll"
1812 { yylval->sym = 69; return SYM; }
1813  YY_BREAK
1814 case 93:
1816 #line 244 "libinterp/corefcn/oct-tex-lexer.ll"
1817 { yylval->sym = 70; return SYM; }
1818  YY_BREAK
1819 case 94:
1821 #line 245 "libinterp/corefcn/oct-tex-lexer.ll"
1822 { yylval->sym = 71; return SYM; }
1823  YY_BREAK
1824 case 95:
1826 #line 246 "libinterp/corefcn/oct-tex-lexer.ll"
1827 { yylval->sym = 72; return SYM; }
1828  YY_BREAK
1829 case 96:
1831 #line 247 "libinterp/corefcn/oct-tex-lexer.ll"
1832 { yylval->sym = 73; return SYM; }
1833  YY_BREAK
1834 case 97:
1836 #line 248 "libinterp/corefcn/oct-tex-lexer.ll"
1837 { yylval->sym = 74; return SYM; }
1838  YY_BREAK
1839 case 98:
1841 #line 249 "libinterp/corefcn/oct-tex-lexer.ll"
1842 { yylval->sym = 75; return SYM; }
1843  YY_BREAK
1844 case 99:
1846 #line 250 "libinterp/corefcn/oct-tex-lexer.ll"
1847 { yylval->sym = 76; return SYM; }
1848  YY_BREAK
1849 case 100:
1851 #line 251 "libinterp/corefcn/oct-tex-lexer.ll"
1852 { yylval->sym = 77; return SYM; }
1853  YY_BREAK
1854 case 101:
1856 #line 252 "libinterp/corefcn/oct-tex-lexer.ll"
1857 { yylval->sym = 78; return SYM; }
1858  YY_BREAK
1859 case 102:
1861 #line 253 "libinterp/corefcn/oct-tex-lexer.ll"
1862 { yylval->sym = 79; return SYM; }
1863  YY_BREAK
1864 case 103:
1866 #line 254 "libinterp/corefcn/oct-tex-lexer.ll"
1867 { yylval->sym = 80; return SYM; }
1868  YY_BREAK
1869 case 104:
1871 #line 255 "libinterp/corefcn/oct-tex-lexer.ll"
1872 { yylval->sym = 81; return SYM; }
1873  YY_BREAK
1874 case 105:
1876 #line 256 "libinterp/corefcn/oct-tex-lexer.ll"
1877 { yylval->sym = 82; return SYM; }
1878  YY_BREAK
1879 case 106:
1881 #line 257 "libinterp/corefcn/oct-tex-lexer.ll"
1882 { yylval->sym = 83; return SYM; }
1883  YY_BREAK
1884 case 107:
1886 #line 258 "libinterp/corefcn/oct-tex-lexer.ll"
1887 { yylval->sym = 84; return SYM; }
1888  YY_BREAK
1889 case 108:
1891 #line 259 "libinterp/corefcn/oct-tex-lexer.ll"
1892 { yylval->sym = 85; return SYM; }
1893  YY_BREAK
1894 case 109:
1896 #line 260 "libinterp/corefcn/oct-tex-lexer.ll"
1897 { yylval->sym = 86; return SYM; }
1898  YY_BREAK
1899 case 110:
1901 #line 261 "libinterp/corefcn/oct-tex-lexer.ll"
1902 { yylval->sym = 87; return SYM; }
1903  YY_BREAK
1904 case 111:
1906 #line 262 "libinterp/corefcn/oct-tex-lexer.ll"
1907 { yylval->sym = 88; return SYM; }
1908  YY_BREAK
1909 case 112:
1911 #line 263 "libinterp/corefcn/oct-tex-lexer.ll"
1912 { yylval->sym = 89; return SYM; }
1913  YY_BREAK
1914 case 113:
1916 #line 264 "libinterp/corefcn/oct-tex-lexer.ll"
1917 { yylval->sym = 90; return SYM; }
1918  YY_BREAK
1919 case 114:
1921 #line 265 "libinterp/corefcn/oct-tex-lexer.ll"
1922 { yylval->sym = 91; return SYM; }
1923  YY_BREAK
1924 case 115:
1926 #line 266 "libinterp/corefcn/oct-tex-lexer.ll"
1927 { yylval->sym = 92; return SYM; }
1928  YY_BREAK
1929 case 116:
1931 #line 267 "libinterp/corefcn/oct-tex-lexer.ll"
1932 { yylval->sym = 93; return SYM; }
1933  YY_BREAK
1934 case 117:
1936 #line 268 "libinterp/corefcn/oct-tex-lexer.ll"
1937 { yylval->sym = 94; return SYM; }
1938  YY_BREAK
1939 case 118:
1941 #line 269 "libinterp/corefcn/oct-tex-lexer.ll"
1942 { yylval->sym = 95; return SYM; }
1943  YY_BREAK
1944 case 119:
1946 #line 270 "libinterp/corefcn/oct-tex-lexer.ll"
1947 { yylval->sym = 96; return SYM; }
1948  YY_BREAK
1949 case 120:
1951 #line 271 "libinterp/corefcn/oct-tex-lexer.ll"
1952 { yylval->sym = 97; return SYM; }
1953  YY_BREAK
1954 case 121:
1956 #line 272 "libinterp/corefcn/oct-tex-lexer.ll"
1957 { yylval->sym = 98; return SYM; }
1958  YY_BREAK
1959 case 122:
1961 #line 273 "libinterp/corefcn/oct-tex-lexer.ll"
1962 { yylval->sym = 99; return SYM; }
1963  YY_BREAK
1964 case 123:
1966 #line 274 "libinterp/corefcn/oct-tex-lexer.ll"
1967 { yylval->sym = 100; return SYM; }
1968  YY_BREAK
1969 case 124:
1971 #line 275 "libinterp/corefcn/oct-tex-lexer.ll"
1972 { yylval->sym = 101; return SYM; }
1973  YY_BREAK
1974 case 125:
1976 #line 276 "libinterp/corefcn/oct-tex-lexer.ll"
1977 { yylval->sym = 102; return SYM; }
1978  YY_BREAK
1979 
1980 // Generic character.
1981 
1982 case 126:
1983 /* rule 126 can match eol */
1984 #line 283 "libinterp/corefcn/oct-tex-lexer.ll"
1985 case 127:
1986 /* rule 127 can match eol */
1988 #line 283 "libinterp/corefcn/oct-tex-lexer.ll"
1989 {
1990  yylval->ch = yytext[0];
1991  return CH;
1992  }
1993  YY_BREAK
1994 
1995 #if defined (HAVE_PRAGMA_GCC_DIAGNOSTIC)
1996  // Also disable this warning for functions that are generated by flex
1997  // after the pattern rules.
1998 # pragma GCC diagnostic ignored "-Wunused-parameter"
1999 #endif
2000 
2001 case 128:
2003 #line 296 "libinterp/corefcn/oct-tex-lexer.ll"
2004 ECHO;
2005  YY_BREAK
2006 #line 2007 "libinterp/corefcn/oct-tex-lexer.cc"
2007 case YY_STATE_EOF(INITIAL):
2008 case YY_STATE_EOF(NUM_MODE):
2010  yyterminate();
2011 
2012  case YY_END_OF_BUFFER:
2013  {
2014  /* Amount of text matched not including the EOB char. */
2015  int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
2016 
2017  /* Undo the effects of YY_DO_BEFORE_ACTION. */
2018  *yy_cp = yyg->yy_hold_char;
2020 
2021  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
2022  {
2023  /* We're scanning a new file or input source. It's
2024  * possible that this happened because the user
2025  * just pointed yyin at a new source and called
2026  * yylex(). If so, then we have to assure
2027  * consistency between YY_CURRENT_BUFFER and our
2028  * globals. Here is the right place to do so, because
2029  * this is the first action (other than possibly a
2030  * back-up) that will match for the new input source.
2031  */
2032  yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2033  YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
2034  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
2035  }
2036 
2037  /* Note that here we test for yy_c_buf_p "<=" to the position
2038  * of the first EOB in the buffer, since yy_c_buf_p will
2039  * already have been incremented past the NUL character
2040  * (since all states make transitions on EOB to the
2041  * end-of-buffer state). Contrast this with the test
2042  * in input().
2043  */
2044  if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2045  { /* This was really a NUL. */
2046  yy_state_type yy_next_state;
2047 
2048  yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
2049 
2050  yy_current_state = yy_get_previous_state( yyscanner );
2051 
2052  /* Okay, we're now positioned to make the NUL
2053  * transition. We couldn't have
2054  * yy_get_previous_state() go ahead and do it
2055  * for us because it doesn't know how to deal
2056  * with the possibility of jamming (and we don't
2057  * want to build jamming into it because then it
2058  * will run more slowly).
2059  */
2060 
2061  yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
2062 
2063  yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2064 
2065  if ( yy_next_state )
2066  {
2067  /* Consume the NUL. */
2068  yy_cp = ++yyg->yy_c_buf_p;
2069  yy_current_state = yy_next_state;
2070  goto yy_match;
2071  }
2072 
2073  else
2074  {
2075  yy_cp = yyg->yy_c_buf_p;
2076  goto yy_find_action;
2077  }
2078  }
2079 
2080  else switch ( yy_get_next_buffer( yyscanner ) )
2081  {
2082  case EOB_ACT_END_OF_FILE:
2083  {
2084  yyg->yy_did_buffer_switch_on_eof = 0;
2085 
2086  if ( yywrap( yyscanner ) )
2087  {
2088  /* Note: because we've taken care in
2089  * yy_get_next_buffer() to have set up
2090  * yytext, we can now set up
2091  * yy_c_buf_p so that if some total
2092  * hoser (like flex itself) wants to
2093  * call the scanner after we return the
2094  * YY_NULL, it'll still work - another
2095  * YY_NULL will get returned.
2096  */
2097  yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
2098 
2099  yy_act = YY_STATE_EOF(YY_START);
2100  goto do_action;
2101  }
2102 
2103  else
2104  {
2105  if ( ! yyg->yy_did_buffer_switch_on_eof )
2106  YY_NEW_FILE;
2107  }
2108  break;
2109  }
2110 
2111  case EOB_ACT_CONTINUE_SCAN:
2112  yyg->yy_c_buf_p =
2113  yyg->yytext_ptr + yy_amount_of_matched_text;
2114 
2115  yy_current_state = yy_get_previous_state( yyscanner );
2116 
2117  yy_cp = yyg->yy_c_buf_p;
2118  yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2119  goto yy_match;
2120 
2121  case EOB_ACT_LAST_MATCH:
2122  yyg->yy_c_buf_p =
2123  &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
2124 
2125  yy_current_state = yy_get_previous_state( yyscanner );
2126 
2127  yy_cp = yyg->yy_c_buf_p;
2128  yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2129  goto yy_find_action;
2130  }
2131  break;
2132  }
2133 
2134  default:
2136  "fatal flex scanner internal error--no action found" );
2137  } /* end of action switch */
2138  } /* end of scanning one token */
2139  } /* end of user's declarations */
2140 } /* end of yylex */
2141 
2142 /* yy_get_next_buffer - try to read in a new buffer
2143  *
2144  * Returns a code representing an action:
2145  * EOB_ACT_LAST_MATCH -
2146  * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2147  * EOB_ACT_END_OF_FILE - end of file
2148  */
2149 static int yy_get_next_buffer (yyscan_t yyscanner)
2150 {
2151  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2152  char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2153  char *source = yyg->yytext_ptr;
2154  int number_to_move, i;
2155  int ret_val;
2156 
2157  if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
2159  "fatal flex scanner internal error--end of buffer missed" );
2160 
2161  if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
2162  { /* Don't try to fill the buffer, so this is an EOF. */
2163  if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
2164  {
2165  /* We matched a single character, the EOB, so
2166  * treat this as a final EOF.
2167  */
2168  return EOB_ACT_END_OF_FILE;
2169  }
2170 
2171  else
2172  {
2173  /* We matched some text prior to the EOB, first
2174  * process it.
2175  */
2176  return EOB_ACT_LAST_MATCH;
2177  }
2178  }
2179 
2180  /* Try to read more data. */
2181 
2182  /* First move last chars to start of buffer. */
2183  number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1);
2184 
2185  for ( i = 0; i < number_to_move; ++i )
2186  *(dest++) = *(source++);
2187 
2188  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2189  /* don't do the read, it's not guaranteed to return an EOF,
2190  * just force an EOF
2191  */
2192  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
2193 
2194  else
2195  {
2196  int num_to_read =
2197  YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2198 
2199  while ( num_to_read <= 0 )
2200  { /* Not enough room in the buffer - grow it. */
2201 
2202  /* just a shorter name for the current buffer */
2204 
2205  int yy_c_buf_p_offset =
2206  (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
2207 
2208  if ( b->yy_is_our_buffer )
2209  {
2210  int new_size = b->yy_buf_size * 2;
2211 
2212  if ( new_size <= 0 )
2213  b->yy_buf_size += b->yy_buf_size / 8;
2214  else
2215  b->yy_buf_size *= 2;
2216 
2217  b->yy_ch_buf = (char *)
2218  /* Include room in for 2 EOB chars. */
2219  yyrealloc( (void *) b->yy_ch_buf,
2220  (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
2221  }
2222  else
2223  /* Can't grow it, we don't own it. */
2224  b->yy_ch_buf = NULL;
2225 
2226  if ( ! b->yy_ch_buf )
2228  "fatal error - scanner input buffer overflow" );
2229 
2230  yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2231 
2232  num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
2233  number_to_move - 1;
2234 
2235  }
2236 
2237  if ( num_to_read > YY_READ_BUF_SIZE )
2238  num_to_read = YY_READ_BUF_SIZE;
2239 
2240  /* Read in more data. */
2241  YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2242  yyg->yy_n_chars, num_to_read );
2243 
2244  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2245  }
2246 
2247  if ( yyg->yy_n_chars == 0 )
2248  {
2249  if ( number_to_move == YY_MORE_ADJ )
2250  {
2251  ret_val = EOB_ACT_END_OF_FILE;
2252  yyrestart( yyin , yyscanner);
2253  }
2254 
2255  else
2256  {
2257  ret_val = EOB_ACT_LAST_MATCH;
2258  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2260  }
2261  }
2262 
2263  else
2264  ret_val = EOB_ACT_CONTINUE_SCAN;
2265 
2266  if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
2267  /* Extend the array by 50%, plus the number we really need. */
2268  int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
2269  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
2270  (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner );
2271  if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2272  YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2273  /* "- 2" to take care of EOB's */
2274  YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
2275  }
2276 
2277  yyg->yy_n_chars += number_to_move;
2278  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2279  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2280 
2281  yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2282 
2283  return ret_val;
2284 }
2285 
2286 /* yy_get_previous_state - get the state just before the EOB char was reached */
2287 
2288  static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
2289 {
2290  yy_state_type yy_current_state;
2291  char *yy_cp;
2292  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2293 
2294  yy_current_state = yyg->yy_start;
2295 
2296  for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
2297  {
2298  YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2299  if ( yy_accept[yy_current_state] )
2300  {
2301  yyg->yy_last_accepting_state = yy_current_state;
2302  yyg->yy_last_accepting_cpos = yy_cp;
2303  }
2304  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2305  {
2306  yy_current_state = (int) yy_def[yy_current_state];
2307  if ( yy_current_state >= 465 )
2308  yy_c = yy_meta[yy_c];
2309  }
2310  yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
2311  }
2312 
2313  return yy_current_state;
2314 }
2315 
2316 /* yy_try_NUL_trans - try to make a transition on the NUL character
2317  *
2318  * synopsis
2319  * next_state = yy_try_NUL_trans( current_state );
2320  */
2321  static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
2322 {
2323  int yy_is_jam;
2324  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
2325  char *yy_cp = yyg->yy_c_buf_p;
2326 
2327  YY_CHAR yy_c = 1;
2328  if ( yy_accept[yy_current_state] )
2329  {
2330  yyg->yy_last_accepting_state = yy_current_state;
2331  yyg->yy_last_accepting_cpos = yy_cp;
2332  }
2333  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2334  {
2335  yy_current_state = (int) yy_def[yy_current_state];
2336  if ( yy_current_state >= 465 )
2337  yy_c = yy_meta[yy_c];
2338  }
2339  yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
2340  yy_is_jam = (yy_current_state == 464);
2341 
2342  (void)yyg;
2343  return yy_is_jam ? 0 : yy_current_state;
2344 }
2345 
2346 #ifndef YY_NO_UNPUT
2347 
2348  static void yyunput (int c, char * yy_bp , yyscan_t yyscanner)
2349 {
2350  char *yy_cp;
2351  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2352 
2353  yy_cp = yyg->yy_c_buf_p;
2354 
2355  /* undo effects of setting up yytext */
2356  *yy_cp = yyg->yy_hold_char;
2357 
2358  if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2359  { /* need to shift things up to make room */
2360  /* +2 for EOB chars. */
2361  int number_to_move = yyg->yy_n_chars + 2;
2362  char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
2363  YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
2364  char *source =
2365  &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
2366 
2367  while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2368  *--dest = *--source;
2369 
2370  yy_cp += (int) (dest - source);
2371  yy_bp += (int) (dest - source);
2372  YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
2373  yyg->yy_n_chars = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
2374 
2375  if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2376  YY_FATAL_ERROR( "flex scanner push-back overflow" );
2377  }
2378 
2379  *--yy_cp = (char) c;
2380 
2381  yyg->yytext_ptr = yy_bp;
2382  yyg->yy_hold_char = *yy_cp;
2383  yyg->yy_c_buf_p = yy_cp;
2384 }
2385 
2386 #endif
2387 
2388 #ifndef YY_NO_INPUT
2389 #ifdef __cplusplus
2390  static int yyinput (yyscan_t yyscanner)
2391 #else
2392  static int input (yyscan_t yyscanner)
2393 #endif
2394 
2395 {
2396  int c;
2397  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2398 
2399  *yyg->yy_c_buf_p = yyg->yy_hold_char;
2400 
2401  if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2402  {
2403  /* yy_c_buf_p now points to the character we want to return.
2404  * If this occurs *before* the EOB characters, then it's a
2405  * valid NUL; if not, then we've hit the end of the buffer.
2406  */
2407  if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2408  /* This was really a NUL. */
2409  *yyg->yy_c_buf_p = '\0';
2410 
2411  else
2412  { /* need more input */
2413  int offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr);
2414  ++yyg->yy_c_buf_p;
2415 
2416  switch ( yy_get_next_buffer( yyscanner ) )
2417  {
2418  case EOB_ACT_LAST_MATCH:
2419  /* This happens because yy_g_n_b()
2420  * sees that we've accumulated a
2421  * token and flags that we need to
2422  * try matching the token before
2423  * proceeding. But for input(),
2424  * there's no matching to consider.
2425  * So convert the EOB_ACT_LAST_MATCH
2426  * to EOB_ACT_END_OF_FILE.
2427  */
2428 
2429  /* Reset buffer status. */
2430  yyrestart( yyin , yyscanner);
2431 
2432  /*FALLTHROUGH*/
2433 
2434  case EOB_ACT_END_OF_FILE:
2435  {
2436  if ( yywrap( yyscanner ) )
2437  return 0;
2438 
2439  if ( ! yyg->yy_did_buffer_switch_on_eof )
2440  YY_NEW_FILE;
2441 #ifdef __cplusplus
2442  return yyinput(yyscanner);
2443 #else
2444  return input(yyscanner);
2445 #endif
2446  }
2447 
2448  case EOB_ACT_CONTINUE_SCAN:
2449  yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
2450  break;
2451  }
2452  }
2453  }
2454 
2455  c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
2456  *yyg->yy_c_buf_p = '\0'; /* preserve yytext */
2457  yyg->yy_hold_char = *++yyg->yy_c_buf_p;
2458 
2459  return c;
2460 }
2461 #endif /* ifndef YY_NO_INPUT */
2462 
2463 /** Immediately switch to a different input stream.
2464  * @param input_file A readable stream.
2465  * @param yyscanner The scanner object.
2466  * @note This function does not reset the start condition to @c INITIAL .
2467  */
2468  void yyrestart (FILE * input_file , yyscan_t yyscanner)
2469 {
2470  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2471 
2472  if ( ! YY_CURRENT_BUFFER ){
2473  yyensure_buffer_stack (yyscanner);
2475  yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
2476  }
2477 
2478  yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner);
2479  yy_load_buffer_state( yyscanner );
2480 }
2481 
2482 /** Switch to a different input buffer.
2483  * @param new_buffer The new input buffer.
2484  * @param yyscanner The scanner object.
2485  */
2486  void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
2487 {
2488  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2489 
2490  /* TODO. We should be able to replace this entire function body
2491  * with
2492  * yypop_buffer_state();
2493  * yypush_buffer_state(new_buffer);
2494  */
2495  yyensure_buffer_stack (yyscanner);
2496  if ( YY_CURRENT_BUFFER == new_buffer )
2497  return;
2498 
2499  if ( YY_CURRENT_BUFFER )
2500  {
2501  /* Flush out information for old buffer. */
2502  *yyg->yy_c_buf_p = yyg->yy_hold_char;
2503  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2504  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2505  }
2506 
2507  YY_CURRENT_BUFFER_LVALUE = new_buffer;
2508  yy_load_buffer_state( yyscanner );
2509 
2510  /* We don't actually know whether we did this switch during
2511  * EOF (yywrap()) processing, but the only time this flag
2512  * is looked at is after yywrap() is called, so it's safe
2513  * to go ahead and always set it.
2514  */
2515  yyg->yy_did_buffer_switch_on_eof = 1;
2516 }
2517 
2518 static void yy_load_buffer_state (yyscan_t yyscanner)
2519 {
2520  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2521  yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2522  yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2523  yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2524  yyg->yy_hold_char = *yyg->yy_c_buf_p;
2525 }
2526 
2527 /** Allocate and initialize an input buffer state.
2528  * @param file A readable stream.
2529  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2530  * @param yyscanner The scanner object.
2531  * @return the allocated buffer state.
2532  */
2533  YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner)
2534 {
2535  YY_BUFFER_STATE b;
2536 
2537  b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
2538  if ( ! b )
2539  YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2540 
2541  b->yy_buf_size = size;
2542 
2543  /* yy_ch_buf has to be 2 characters longer than the size given because
2544  * we need to put in 2 end-of-buffer characters.
2545  */
2546  b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
2547  if ( ! b->yy_ch_buf )
2548  YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2549 
2550  b->yy_is_our_buffer = 1;
2551 
2552  yy_init_buffer( b, file , yyscanner);
2553 
2554  return b;
2555 }
2556 
2557 /** Destroy the buffer.
2558  * @param b a buffer created with yy_create_buffer()
2559  * @param yyscanner The scanner object.
2560  */
2562 {
2563  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2564 
2565  if ( ! b )
2566  return;
2567 
2568  if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2570 
2571  if ( b->yy_is_our_buffer )
2572  yyfree( (void *) b->yy_ch_buf , yyscanner );
2573 
2574  yyfree( (void *) b , yyscanner );
2575 }
2576 
2577 /* Initializes or reinitializes a buffer.
2578  * This function is sometimes called more than once on the same buffer,
2579  * such as during a yyrestart() or at EOF.
2580  */
2581  static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner)
2582 
2583 {
2584  int oerrno = errno;
2585  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2586 
2587  yy_flush_buffer( b , yyscanner);
2588 
2589  b->yy_input_file = file;
2590  b->yy_fill_buffer = 1;
2591 
2592  /* If b is the current buffer, then yy_init_buffer was _probably_
2593  * called from yyrestart() or through yy_get_next_buffer.
2594  * In that case, we don't want to reset the lineno or column.
2595  */
2596  if (b != YY_CURRENT_BUFFER){
2597  b->yy_bs_lineno = 1;
2598  b->yy_bs_column = 0;
2599  }
2600 
2601  b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2602 
2603  errno = oerrno;
2604 }
2605 
2606 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2607  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2608  * @param yyscanner The scanner object.
2609  */
2611 {
2612  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2613  if ( ! b )
2614  return;
2615 
2616  b->yy_n_chars = 0;
2617 
2618  /* We always need two end-of-buffer characters. The first causes
2619  * a transition to the end-of-buffer state. The second causes
2620  * a jam in that state.
2621  */
2622  b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2623  b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2624 
2625  b->yy_buf_pos = &b->yy_ch_buf[0];
2626 
2627  b->yy_at_bol = 1;
2628  b->yy_buffer_status = YY_BUFFER_NEW;
2629 
2630  if ( b == YY_CURRENT_BUFFER )
2631  yy_load_buffer_state( yyscanner );
2632 }
2633 
2634 /** Pushes the new state onto the stack. The new state becomes
2635  * the current state. This function will allocate the stack
2636  * if necessary.
2637  * @param new_buffer The new state.
2638  * @param yyscanner The scanner object.
2639  */
2640 void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
2641 {
2642  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2643  if (new_buffer == NULL)
2644  return;
2645 
2646  yyensure_buffer_stack(yyscanner);
2647 
2648  /* This block is copied from yy_switch_to_buffer. */
2649  if ( YY_CURRENT_BUFFER )
2650  {
2651  /* Flush out information for old buffer. */
2652  *yyg->yy_c_buf_p = yyg->yy_hold_char;
2653  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2654  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2655  }
2656 
2657  /* Only push if top exists. Otherwise, replace top. */
2658  if (YY_CURRENT_BUFFER)
2659  yyg->yy_buffer_stack_top++;
2660  YY_CURRENT_BUFFER_LVALUE = new_buffer;
2661 
2662  /* copied from yy_switch_to_buffer. */
2663  yy_load_buffer_state( yyscanner );
2664  yyg->yy_did_buffer_switch_on_eof = 1;
2665 }
2666 
2667 /** Removes and deletes the top of the stack, if present.
2668  * The next element becomes the new top.
2669  * @param yyscanner The scanner object.
2670  */
2672 {
2673  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2674  if (!YY_CURRENT_BUFFER)
2675  return;
2676 
2677  yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner);
2678  YY_CURRENT_BUFFER_LVALUE = NULL;
2679  if (yyg->yy_buffer_stack_top > 0)
2680  --yyg->yy_buffer_stack_top;
2681 
2682  if (YY_CURRENT_BUFFER) {
2683  yy_load_buffer_state( yyscanner );
2684  yyg->yy_did_buffer_switch_on_eof = 1;
2685  }
2686 }
2687 
2688 /* Allocates the stack if it does not exist.
2689  * Guarantees space for at least one push.
2690  */
2691 static void yyensure_buffer_stack (yyscan_t yyscanner)
2692 {
2693  yy_size_t num_to_alloc;
2694  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2695 
2696  if (!yyg->yy_buffer_stack) {
2697 
2698  /* First allocation is just for 2 elements, since we don't know if this
2699  * scanner will even need a stack. We use 2 instead of 1 to avoid an
2700  * immediate realloc on the next call.
2701  */
2702  num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
2703  yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
2704  (num_to_alloc * sizeof(struct yy_buffer_state*)
2705  , yyscanner);
2706  if ( ! yyg->yy_buffer_stack )
2707  YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
2708 
2709  memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2710 
2711  yyg->yy_buffer_stack_max = num_to_alloc;
2712  yyg->yy_buffer_stack_top = 0;
2713  return;
2714  }
2715 
2716  if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
2717 
2718  /* Increase the buffer to prepare for a possible push. */
2719  yy_size_t grow_size = 8 /* arbitrary grow size */;
2720 
2721  num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
2722  yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
2723  (yyg->yy_buffer_stack,
2724  num_to_alloc * sizeof(struct yy_buffer_state*)
2725  , yyscanner);
2726  if ( ! yyg->yy_buffer_stack )
2727  YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
2728 
2729  /* zero only the new slots.*/
2730  memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
2731  yyg->yy_buffer_stack_max = num_to_alloc;
2732  }
2733 }
2734 
2735 /** Setup the input buffer state to scan directly from a user-specified character buffer.
2736  * @param base the character buffer
2737  * @param size the size in bytes of the character buffer
2738  * @param yyscanner The scanner object.
2739  * @return the newly allocated buffer state object.
2740  */
2741 YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
2742 {
2743  YY_BUFFER_STATE b;
2744 
2745  if ( size < 2 ||
2746  base[size-2] != YY_END_OF_BUFFER_CHAR ||
2747  base[size-1] != YY_END_OF_BUFFER_CHAR )
2748  /* They forgot to leave room for the EOB's. */
2749  return NULL;
2750 
2751  b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
2752  if ( ! b )
2753  YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
2754 
2755  b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */
2756  b->yy_buf_pos = b->yy_ch_buf = base;
2757  b->yy_is_our_buffer = 0;
2758  b->yy_input_file = NULL;
2759  b->yy_n_chars = b->yy_buf_size;
2760  b->yy_is_interactive = 0;
2761  b->yy_at_bol = 1;
2762  b->yy_fill_buffer = 0;
2763  b->yy_buffer_status = YY_BUFFER_NEW;
2764 
2765  yy_switch_to_buffer( b , yyscanner );
2766 
2767  return b;
2768 }
2769 
2770 /** Setup the input buffer state to scan a string. The next call to yylex() will
2771  * scan from a @e copy of @a str.
2772  * @param yystr a NUL-terminated string to scan
2773  * @param yyscanner The scanner object.
2774  * @return the newly allocated buffer state object.
2775  * @note If you want to scan bytes that may contain NUL values, then use
2776  * yy_scan_bytes() instead.
2777  */
2778 YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner)
2779 {
2780 
2781  return yy_scan_bytes( yystr, (int) strlen(yystr) , yyscanner);
2782 }
2783 
2784 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
2785  * scan from a @e copy of @a bytes.
2786  * @param yybytes the byte buffer to scan
2787  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
2788  * @param yyscanner The scanner object.
2789  * @return the newly allocated buffer state object.
2790  */
2791 YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len , yyscan_t yyscanner)
2792 {
2793  YY_BUFFER_STATE b;
2794  char *buf;
2795  yy_size_t n;
2796  int i;
2797 
2798  /* Get memory for full buffer, including space for trailing EOB's. */
2799  n = (yy_size_t) (_yybytes_len + 2);
2800  buf = (char *) yyalloc( n , yyscanner );
2801  if ( ! buf )
2802  YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
2803 
2804  for ( i = 0; i < _yybytes_len; ++i )
2805  buf[i] = yybytes[i];
2806 
2807  buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
2808 
2809  b = yy_scan_buffer( buf, n , yyscanner);
2810  if ( ! b )
2811  YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
2812 
2813  /* It's okay to grow etc. this buffer, and we should throw it
2814  * away when we're done.
2815  */
2816  b->yy_is_our_buffer = 1;
2817 
2818  return b;
2819 }
2820 
2821 #ifndef YY_EXIT_FAILURE
2822 #define YY_EXIT_FAILURE 2
2823 #endif
2824 
2825 static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner)
2826 {
2827  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2828  (void)yyg;
2829  fprintf( stderr, "%s\n", msg );
2830  exit( YY_EXIT_FAILURE );
2831 }
2832 
2833 /* Redefine yyless() so it works in section 3 code. */
2834 
2835 #undef yyless
2836 #define yyless(n) \
2837  do \
2838  { \
2839  /* Undo effects of setting up yytext. */ \
2840  int yyless_macro_arg = (n); \
2841  YY_LESS_LINENO(yyless_macro_arg);\
2842  yytext[yyleng] = yyg->yy_hold_char; \
2843  yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
2844  yyg->yy_hold_char = *yyg->yy_c_buf_p; \
2845  *yyg->yy_c_buf_p = '\0'; \
2846  yyleng = yyless_macro_arg; \
2847  } \
2848  while ( 0 )
2849 
2850 /* Accessor methods (get/set functions) to struct members. */
2851 
2852 /** Get the user-defined data for this scanner.
2853  * @param yyscanner The scanner object.
2854  */
2856 {
2857  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2858  return yyextra;
2859 }
2860 
2861 /** Get the current line number.
2862  * @param yyscanner The scanner object.
2863  */
2864 int yyget_lineno (yyscan_t yyscanner)
2865 {
2866  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2867 
2868  if (! YY_CURRENT_BUFFER)
2869  return 0;
2870 
2871  return yylineno;
2872 }
2873 
2874 /** Get the current column number.
2875  * @param yyscanner The scanner object.
2876  */
2877 int yyget_column (yyscan_t yyscanner)
2878 {
2879  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2880 
2881  if (! YY_CURRENT_BUFFER)
2882  return 0;
2883 
2884  return yycolumn;
2885 }
2886 
2887 /** Get the input stream.
2888  * @param yyscanner The scanner object.
2889  */
2890 FILE *yyget_in (yyscan_t yyscanner)
2891 {
2892  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2893  return yyin;
2894 }
2895 
2896 /** Get the output stream.
2897  * @param yyscanner The scanner object.
2898  */
2899 FILE *yyget_out (yyscan_t yyscanner)
2900 {
2901  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2902  return yyout;
2903 }
2904 
2905 /** Get the length of the current token.
2906  * @param yyscanner The scanner object.
2907  */
2908 int yyget_leng (yyscan_t yyscanner)
2909 {
2910  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2911  return yyleng;
2912 }
2913 
2914 /** Get the current token.
2915  * @param yyscanner The scanner object.
2916  */
2917 
2918 char *yyget_text (yyscan_t yyscanner)
2919 {
2920  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2921  return yytext;
2922 }
2923 
2924 /** Set the user-defined data. This data is never touched by the scanner.
2925  * @param user_defined The data to be associated with this scanner.
2926  * @param yyscanner The scanner object.
2927  */
2928 void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner)
2929 {
2930  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2931  yyextra = user_defined ;
2932 }
2933 
2934 /** Set the current line number.
2935  * @param _line_number line number
2936  * @param yyscanner The scanner object.
2937  */
2938 void yyset_lineno (int _line_number , yyscan_t yyscanner)
2939 {
2940  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2941 
2942  /* lineno is only valid if an input buffer exists. */
2943  if (! YY_CURRENT_BUFFER )
2944  YY_FATAL_ERROR( "yyset_lineno called with no buffer" );
2945 
2946  yylineno = _line_number;
2947 }
2948 
2949 /** Set the current column.
2950  * @param _column_no column number
2951  * @param yyscanner The scanner object.
2952  */
2953 void yyset_column (int _column_no , yyscan_t yyscanner)
2954 {
2955  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2956 
2957  /* column is only valid if an input buffer exists. */
2958  if (! YY_CURRENT_BUFFER )
2959  YY_FATAL_ERROR( "yyset_column called with no buffer" );
2960 
2961  yycolumn = _column_no;
2962 }
2963 
2964 /** Set the input stream. This does not discard the current
2965  * input buffer.
2966  * @param _in_str A readable stream.
2967  * @param yyscanner The scanner object.
2968  * @see yy_switch_to_buffer
2969  */
2970 void yyset_in (FILE * _in_str , yyscan_t yyscanner)
2971 {
2972  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2973  yyin = _in_str ;
2974 }
2975 
2976 void yyset_out (FILE * _out_str , yyscan_t yyscanner)
2977 {
2978  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2979  yyout = _out_str ;
2980 }
2981 
2982 int yyget_debug (yyscan_t yyscanner)
2983 {
2984  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2985  return yy_flex_debug;
2986 }
2987 
2988 void yyset_debug (int _bdebug , yyscan_t yyscanner)
2989 {
2990  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2991  yy_flex_debug = _bdebug ;
2992 }
2993 
2994 /* Accessor methods for yylval and yylloc */
2995 
2997 {
2998  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2999  return yylval;
3000 }
3001 
3002 void yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner)
3003 {
3004  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3005  yylval = yylval_param;
3006 }
3007 
3008 /* User-visible API */
3009 
3010 /* yylex_init is special because it creates the scanner itself, so it is
3011  * the ONLY reentrant function that doesn't take the scanner as the last argument.
3012  * That's why we explicitly handle the declaration, instead of using our macros.
3013  */
3014 int yylex_init(yyscan_t* ptr_yy_globals)
3015 {
3016  if (ptr_yy_globals == NULL){
3017  errno = EINVAL;
3018  return 1;
3019  }
3020 
3021  *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
3022 
3023  if (*ptr_yy_globals == NULL){
3024  errno = ENOMEM;
3025  return 1;
3026  }
3027 
3028  /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
3029  memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
3030 
3031  return yy_init_globals ( *ptr_yy_globals );
3032 }
3033 
3034 /* yylex_init_extra has the same functionality as yylex_init, but follows the
3035  * convention of taking the scanner as the last argument. Note however, that
3036  * this is a *pointer* to a scanner, as it will be allocated by this call (and
3037  * is the reason, too, why this function also must handle its own declaration).
3038  * The user defined value in the first argument will be available to yyalloc in
3039  * the yyextra field.
3040  */
3041 int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals )
3042 {
3043  struct yyguts_t dummy_yyguts;
3044 
3045  yyset_extra (yy_user_defined, &dummy_yyguts);
3046 
3047  if (ptr_yy_globals == NULL){
3048  errno = EINVAL;
3049  return 1;
3050  }
3051 
3052  *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
3053 
3054  if (*ptr_yy_globals == NULL){
3055  errno = ENOMEM;
3056  return 1;
3057  }
3058 
3059  /* By setting to 0xAA, we expose bugs in
3060  yy_init_globals. Leave at 0x00 for releases. */
3061  memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
3062 
3063  yyset_extra (yy_user_defined, *ptr_yy_globals);
3064 
3065  return yy_init_globals ( *ptr_yy_globals );
3066 }
3067 
3068 static int yy_init_globals (yyscan_t yyscanner)
3069 {
3070  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3071  /* Initialization is the same as for the non-reentrant scanner.
3072  * This function is called from yylex_destroy(), so don't allocate here.
3073  */
3074 
3075  yyg->yy_buffer_stack = NULL;
3076  yyg->yy_buffer_stack_top = 0;
3077  yyg->yy_buffer_stack_max = 0;
3078  yyg->yy_c_buf_p = NULL;
3079  yyg->yy_init = 0;
3080  yyg->yy_start = 0;
3081 
3082  yyg->yy_start_stack_ptr = 0;
3083  yyg->yy_start_stack_depth = 0;
3084  yyg->yy_start_stack = NULL;
3085 
3086 /* Defined in main.c */
3087 #ifdef YY_STDINIT
3088  yyin = stdin;
3089  yyout = stdout;
3090 #else
3091  yyin = NULL;
3092  yyout = NULL;
3093 #endif
3094 
3095  /* For future reference: Set errno on error, since we are called by
3096  * yylex_init()
3097  */
3098  return 0;
3099 }
3100 
3101 /* yylex_destroy is for both reentrant and non-reentrant scanners. */
3102 int yylex_destroy (yyscan_t yyscanner)
3103 {
3104  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3105 
3106  /* Pop the buffer stack, destroying each element. */
3107  while(YY_CURRENT_BUFFER){
3108  yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner );
3109  YY_CURRENT_BUFFER_LVALUE = NULL;
3110  yypop_buffer_state(yyscanner);
3111  }
3112 
3113  /* Destroy the stack itself. */
3114  yyfree(yyg->yy_buffer_stack , yyscanner);
3115  yyg->yy_buffer_stack = NULL;
3116 
3117  /* Destroy the start condition stack. */
3118  yyfree( yyg->yy_start_stack , yyscanner );
3119  yyg->yy_start_stack = NULL;
3120 
3121  /* Reset the globals. This is important in a non-reentrant scanner so the next time
3122  * yylex() is called, initialization will occur. */
3123  yy_init_globals( yyscanner);
3124 
3125  /* Destroy the main struct (reentrant only). */
3126  yyfree ( yyscanner , yyscanner );
3127  yyscanner = NULL;
3128  return 0;
3129 }
3130 
3131 /*
3132  * Internal utility routines.
3133  */
3134 
3135 #ifndef yytext_ptr
3136 static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner)
3137 {
3138  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3139  (void)yyg;
3140 
3141  int i;
3142  for ( i = 0; i < n; ++i )
3143  s1[i] = s2[i];
3144 }
3145 #endif
3146 
3147 #ifdef YY_NEED_STRLEN
3148 static int yy_flex_strlen (const char * s , yyscan_t yyscanner)
3149 {
3150  int n;
3151  for ( n = 0; s[n]; ++n )
3152  ;
3153 
3154  return n;
3155 }
3156 #endif
3157 
3158 #define YYTABLES_NAME "yytables"
3159 
3160 #line 296 "libinterp/corefcn/oct-tex-lexer.ll"
3161 
3162 
3163 #if defined (HAVE_PRAGMA_GCC_DIAGNOSTIC)
3164  // Restore prevailing warning state for remainder of the file.
3165 # pragma GCC diagnostic pop
3166 #endif
3167 
3168 void *
3170 {
3171  return malloc (size);
3172 }
3173 
3174 void *
3176 {
3177 return realloc (ptr, size);
3178 }
3179 
3180 void
3182 {
3183  free (ptr);
3184 }
3185 
3187 
3188  bool text_parser_tex::init_lexer (const std::string& s)
3189  {
3190  if (! m_scanner)
3192 
3193  if (m_scanner)
3194  {
3195  if (m_buffer_state)
3196  {
3197  octave_tex__delete_buffer (reinterpret_cast<YY_BUFFER_STATE> (m_buffer_state),
3198  m_scanner);
3199  m_buffer_state = nullptr;
3200  }
3201 
3202  m_buffer_state = octave_tex__scan_bytes (s.data (), s.length (),
3203  m_scanner);
3204  }
3205 
3206  return (m_scanner && m_buffer_state);
3207  }
3208 
3209  void text_parser_tex::destroy_lexer ()
3210  {
3211  if (m_buffer_state)
3212  {
3213  octave_tex__delete_buffer (reinterpret_cast<YY_BUFFER_STATE> (m_buffer_state),
3214  m_scanner);
3215  m_buffer_state = nullptr;
3216  }
3217 
3218  if (m_scanner)
3219  {
3221  m_scanner = nullptr;
3222  }
3223  }
3224 
3225 OCTAVE_END_NAMESPACE(octave)
3226 
OCTAVE_BEGIN_NAMESPACE(octave) static octave_value daspk_fcn
octave_idx_type n
Definition: mx-inlines.cc:761
#define scanner
Definition: oct-parse.cc:147
T::size_type strlen(const typename T::value_type *str)
Definition: oct-string.cc:88
#define yy_load_buffer_state
#define YY_NEW_FILE
#define yyset_extra
#define yytext
#define yyget_lval
#define yyget_column
unsigned char flex_uint8_t
#define yyset_lineno
#define yyset_lval
void * yyscan_t
#define yylex_init
#define yyrestart
#define yyset_debug
#define YY_EXTRA_TYPE
#define YYSTYPE
void octave_tex__delete_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner)
Destroy the buffer.
short int flex_int16_t
#define yy_flex_debug
#define yyget_out
unsigned int flex_uint32_t
void * octave_tex_realloc(void *, yy_size_t, yyscan_t yyscanner)
#define yy_scan_bytes
#define YY_BREAK
#define yylex_init_extra
int octave_tex_lex_init(yyscan_t *scanner)
#define yynoreturn
#define yyget_debug
#define yypush_buffer_state
struct yy_buffer_state * YY_BUFFER_STATE
#define yyfree
#define yyout
#define YY_BUFFER_NEW
#define yyget_lineno
#define yylex
#define YY_RESTORE_YY_MORE_OFFSET
#define yywrap
void * octave_tex_alloc(yy_size_t, yyscan_t yyscanner)
#define yyget_text
#define YY_BUFFER_NORMAL
#define yyensure_buffer_stack
#define yy_scan_buffer
#define YY_MORE_ADJ
#define YY_RULE_SETUP
#define yy_scan_string
#define yyextra
int octave_tex_lex_destroy(yyscan_t yyscanner)
#define yylval
signed char flex_int8_t
#define yyget_leng
#define EOB_ACT_END_OF_FILE
#define yyalloc
#define yypop_buffer_state
#define YY_CURRENT_BUFFER_LVALUE
int flex_int32_t
#define yylex_destroy
#define YY_START
#define yyset_column
#define yy_switch_to_buffer
int yy_state_type
#define YY_CURRENT_BUFFER
#define yy_init_buffer
#define INITIAL
#define yyget_extra
#define yyin
#define MAYBE_NUM_MODE
#define YY_READ_BUF_SIZE
#define YY_INPUT(buf, result, max_size)
#define ECHO
#define yy_flush_buffer
#define yyrealloc
#define YY_END_OF_BUFFER
#define YY_STATE_EOF(state)
#define BEGIN
#define YY_END_OF_BUFFER_CHAR
#define YY_FATAL_ERROR(msg)
#define yyterminate()
unsigned short int flex_uint16_t
#define yy_create_buffer
flex_uint8_t YY_CHAR
#define YY_DO_BEFORE_ACTION
#define yy_delete_buffer
#define EOB_ACT_LAST_MATCH
#define yyget_in
size_t yy_size_t
#define YY_BUFFER_EOF_PENDING
#define yylineno
#define yyguts_t
#define yycolumn
void octave_tex_free(void *, yyscan_t yyscanner)
#define yyset_out
#define EOB_ACT_CONTINUE_SCAN
#define YY_DECL
#define yyless(n)
#define YY_BUF_SIZE
#define YY_EXIT_FAILURE
#define isatty
#define NUM_MODE
#define YY_SC_TO_UI(c)
YY_BUFFER_STATE octave_tex__scan_bytes(const char *bytes, int len, yyscan_t yyscanner)
Setup the input buffer state to scan the given bytes.
#define yyleng
#define yyset_in
void * malloc(unsigned)
#define m_scanner
void free(void *)
@ SUB
@ START
@ FONTSIZE
@ NUM
@ CH
@ BF
@ SYM
@ COLOR
@ RM
@ SL
@ FONTNAME
@ END
@ COLOR_RGB
@ IT
@ SUPER
F77_RET_T len
Definition: xerbla.cc:61