GNU Octave 10.1.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 
Loading...
Searching...
No Matches
oct-tex-lexer.cc
Go to the documentation of this file.
1////////////////////////////////////////////////////////////////////////
2//
3// Copyright (C) 2013-2025 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>
312typedef int8_t flex_int8_t;
313typedef uint8_t flex_uint8_t;
314typedef int16_t flex_int16_t;
315typedef uint16_t flex_uint16_t;
316typedef int32_t flex_int32_t;
317typedef uint32_t flex_uint32_t;
318#else
319typedef signed char flex_int8_t;
320typedef short int flex_int16_t;
321typedef int flex_int32_t;
322typedef unsigned char flex_uint8_t;
323typedef unsigned short int flex_uint16_t;
324typedef 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
385typedef 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
435typedef struct yy_buffer_state *YY_BUFFER_STATE;
436#endif
437
438#ifndef YY_TYPEDEF_YY_SIZE_T
439#define YY_TYPEDEF_YY_SIZE_T
440typedef 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
467struct 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
544void yyrestart ( FILE *input_file , yyscan_t yyscanner );
545void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
546YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner );
547void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
548void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
549void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
550void yypop_buffer_state ( yyscan_t yyscanner );
551
552static void yyensure_buffer_stack ( yyscan_t yyscanner );
553static void yy_load_buffer_state ( yyscan_t yyscanner );
554static 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
557YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner );
558YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner );
559YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner );
560
561void *yyalloc ( yy_size_t , yyscan_t yyscanner );
562void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner );
563void 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
592typedef int yy_state_type;
593
594#define yytext_ptr yytext_r
595
596static yy_state_type yy_get_previous_state ( yyscan_t yyscanner );
597static yy_state_type yy_try_NUL_trans ( yy_state_type current_state , yyscan_t yyscanner);
598static int yy_get_next_buffer ( yyscan_t yyscanner );
599static 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. */
614struct yy_trans_info
615 {
616 flex_int32_t yy_verify;
617 flex_int32_t yy_nxt;
618 };
619static 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
674static 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
706static 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
715static 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
770static 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
825static 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
888static 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. */
1007struct 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
1042static 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
1049
1050int 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
1055int yylex_destroy ( yyscan_t yyscanner );
1056
1057int yyget_debug ( yyscan_t yyscanner );
1058
1059void yyset_debug ( int debug_flag , yyscan_t yyscanner );
1060
1061YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner );
1062
1063void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner );
1064
1065FILE *yyget_in ( yyscan_t yyscanner );
1066
1067void yyset_in ( FILE * _in_str , yyscan_t yyscanner );
1068
1069FILE *yyget_out ( yyscan_t yyscanner );
1070
1071void yyset_out ( FILE * _out_str , yyscan_t yyscanner );
1072
1073 int yyget_leng ( yyscan_t yyscanner );
1074
1075char *yyget_text ( yyscan_t yyscanner );
1076
1077int yyget_lineno ( yyscan_t yyscanner );
1078
1079void yyset_lineno ( int _line_number , yyscan_t yyscanner );
1080
1081int yyget_column ( yyscan_t yyscanner );
1082
1083void yyset_column ( int _column_no , yyscan_t yyscanner );
1084
1085YYSTYPE * yyget_lval ( yyscan_t yyscanner );
1086
1087void 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
1095extern "C" int yywrap ( yyscan_t yyscanner );
1096#else
1097extern 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
1108static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner);
1109#endif
1110
1111#ifdef YY_NEED_STRLEN
1112static int yy_flex_strlen ( const char * , yyscan_t yyscanner);
1113#endif
1114
1115#ifndef YY_NO_INPUT
1116#ifdef __cplusplus
1117static int yyinput ( yyscan_t yyscanner );
1118#else
1119static 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
1204extern 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;
1287yy_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
1307yy_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
1318do_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
1329case 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
1339case 2:
1341#line 108 "libinterp/corefcn/oct-tex-lexer.ll"
1342{ }
1343 YY_BREAK
1344case 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
1353case 4:
1355#line 115 "libinterp/corefcn/oct-tex-lexer.ll"
1356{
1357 BEGIN (NUM_MODE);
1358 return START;
1359 }
1360 YY_BREAK
1361case 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
1373case 6:
1375#line 129 "libinterp/corefcn/oct-tex-lexer.ll"
1376{ return BF; }
1377 YY_BREAK
1378case 7:
1380#line 130 "libinterp/corefcn/oct-tex-lexer.ll"
1381{ return IT; }
1382 YY_BREAK
1383case 8:
1385#line 131 "libinterp/corefcn/oct-tex-lexer.ll"
1386{ return SL; }
1387 YY_BREAK
1388case 9:
1390#line 132 "libinterp/corefcn/oct-tex-lexer.ll"
1391{ return RM; }
1392 YY_BREAK
1393
1394// Generic font commands.
1395
1396case 10:
1398#line 138 "libinterp/corefcn/oct-tex-lexer.ll"
1399{ return FONTNAME; }
1400 YY_BREAK
1401case 11:
1403#line 140 "libinterp/corefcn/oct-tex-lexer.ll"
1404{
1406 return FONTSIZE;
1407 }
1408 YY_BREAK
1409case 12:
1411#line 145 "libinterp/corefcn/oct-tex-lexer.ll"
1412{
1414 return COLOR_RGB;
1415 }
1416 YY_BREAK
1417case 13:
1419#line 150 "libinterp/corefcn/oct-tex-lexer.ll"
1420{ return COLOR; }
1421 YY_BREAK
1422
1423// Special characters.
1424
1425case 14:
1427#line 156 "libinterp/corefcn/oct-tex-lexer.ll"
1428{ return START; }
1429 YY_BREAK
1430case 15:
1432#line 157 "libinterp/corefcn/oct-tex-lexer.ll"
1433{ return END; }
1434 YY_BREAK
1435case 16:
1437#line 158 "libinterp/corefcn/oct-tex-lexer.ll"
1438{ return SUPER; }
1439 YY_BREAK
1440case 17:
1442#line 159 "libinterp/corefcn/oct-tex-lexer.ll"
1443{ return SUB; }
1444 YY_BREAK
1445case 18:
1446#line 162 "libinterp/corefcn/oct-tex-lexer.ll"
1447case 19:
1448#line 163 "libinterp/corefcn/oct-tex-lexer.ll"
1449case 20:
1450#line 164 "libinterp/corefcn/oct-tex-lexer.ll"
1451case 21:
1452#line 165 "libinterp/corefcn/oct-tex-lexer.ll"
1453case 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
1464case 23:
1466#line 174 "libinterp/corefcn/oct-tex-lexer.ll"
1467{ yylval->sym = 0; return SYM; }
1468 YY_BREAK
1469case 24:
1471#line 175 "libinterp/corefcn/oct-tex-lexer.ll"
1472{ yylval->sym = 1; return SYM; }
1473 YY_BREAK
1474case 25:
1476#line 176 "libinterp/corefcn/oct-tex-lexer.ll"
1477{ yylval->sym = 2; return SYM; }
1478 YY_BREAK
1479case 26:
1481#line 177 "libinterp/corefcn/oct-tex-lexer.ll"
1482{ yylval->sym = 3; return SYM; }
1483 YY_BREAK
1484case 27:
1486#line 178 "libinterp/corefcn/oct-tex-lexer.ll"
1487{ yylval->sym = 4; return SYM; }
1488 YY_BREAK
1489case 28:
1491#line 179 "libinterp/corefcn/oct-tex-lexer.ll"
1492{ yylval->sym = 5; return SYM; }
1493 YY_BREAK
1494case 29:
1496#line 180 "libinterp/corefcn/oct-tex-lexer.ll"
1497{ yylval->sym = 6; return SYM; }
1498 YY_BREAK
1499case 30:
1501#line 181 "libinterp/corefcn/oct-tex-lexer.ll"
1502{ yylval->sym = 7; return SYM; }
1503 YY_BREAK
1504case 31:
1506#line 182 "libinterp/corefcn/oct-tex-lexer.ll"
1507{ yylval->sym = 8; return SYM; }
1508 YY_BREAK
1509case 32:
1511#line 183 "libinterp/corefcn/oct-tex-lexer.ll"
1512{ yylval->sym = 9; return SYM; }
1513 YY_BREAK
1514case 33:
1516#line 184 "libinterp/corefcn/oct-tex-lexer.ll"
1517{ yylval->sym = 10; return SYM; }
1518 YY_BREAK
1519case 34:
1521#line 185 "libinterp/corefcn/oct-tex-lexer.ll"
1522{ yylval->sym = 11; return SYM; }
1523 YY_BREAK
1524case 35:
1526#line 186 "libinterp/corefcn/oct-tex-lexer.ll"
1527{ yylval->sym = 12; return SYM; }
1528 YY_BREAK
1529case 36:
1531#line 187 "libinterp/corefcn/oct-tex-lexer.ll"
1532{ yylval->sym = 13; return SYM; }
1533 YY_BREAK
1534case 37:
1536#line 188 "libinterp/corefcn/oct-tex-lexer.ll"
1537{ yylval->sym = 14; return SYM; }
1538 YY_BREAK
1539case 38:
1541#line 189 "libinterp/corefcn/oct-tex-lexer.ll"
1542{ yylval->sym = 15; return SYM; }
1543 YY_BREAK
1544case 39:
1546#line 190 "libinterp/corefcn/oct-tex-lexer.ll"
1547{ yylval->sym = 16; return SYM; }
1548 YY_BREAK
1549case 40:
1551#line 191 "libinterp/corefcn/oct-tex-lexer.ll"
1552{ yylval->sym = 17; return SYM; }
1553 YY_BREAK
1554case 41:
1556#line 192 "libinterp/corefcn/oct-tex-lexer.ll"
1557{ yylval->sym = 18; return SYM; }
1558 YY_BREAK
1559case 42:
1561#line 193 "libinterp/corefcn/oct-tex-lexer.ll"
1562{ yylval->sym = 19; return SYM; }
1563 YY_BREAK
1564case 43:
1566#line 194 "libinterp/corefcn/oct-tex-lexer.ll"
1567{ yylval->sym = 20; return SYM; }
1568 YY_BREAK
1569case 44:
1571#line 195 "libinterp/corefcn/oct-tex-lexer.ll"
1572{ yylval->sym = 21; return SYM; }
1573 YY_BREAK
1574case 45:
1576#line 196 "libinterp/corefcn/oct-tex-lexer.ll"
1577{ yylval->sym = 22; return SYM; }
1578 YY_BREAK
1579case 46:
1581#line 197 "libinterp/corefcn/oct-tex-lexer.ll"
1582{ yylval->sym = 23; return SYM; }
1583 YY_BREAK
1584case 47:
1586#line 198 "libinterp/corefcn/oct-tex-lexer.ll"
1587{ yylval->sym = 24; return SYM; }
1588 YY_BREAK
1589case 48:
1591#line 199 "libinterp/corefcn/oct-tex-lexer.ll"
1592{ yylval->sym = 25; return SYM; }
1593 YY_BREAK
1594case 49:
1596#line 200 "libinterp/corefcn/oct-tex-lexer.ll"
1597{ yylval->sym = 26; return SYM; }
1598 YY_BREAK
1599case 50:
1601#line 201 "libinterp/corefcn/oct-tex-lexer.ll"
1602{ yylval->sym = 27; return SYM; }
1603 YY_BREAK
1604case 51:
1606#line 202 "libinterp/corefcn/oct-tex-lexer.ll"
1607{ yylval->sym = 28; return SYM; }
1608 YY_BREAK
1609case 52:
1611#line 203 "libinterp/corefcn/oct-tex-lexer.ll"
1612{ yylval->sym = 29; return SYM; }
1613 YY_BREAK
1614case 53:
1616#line 204 "libinterp/corefcn/oct-tex-lexer.ll"
1617{ yylval->sym = 30; return SYM; }
1618 YY_BREAK
1619case 54:
1621#line 205 "libinterp/corefcn/oct-tex-lexer.ll"
1622{ yylval->sym = 31; return SYM; }
1623 YY_BREAK
1624case 55:
1626#line 206 "libinterp/corefcn/oct-tex-lexer.ll"
1627{ yylval->sym = 32; return SYM; }
1628 YY_BREAK
1629case 56:
1631#line 207 "libinterp/corefcn/oct-tex-lexer.ll"
1632{ yylval->sym = 33; return SYM; }
1633 YY_BREAK
1634case 57:
1636#line 208 "libinterp/corefcn/oct-tex-lexer.ll"
1637{ yylval->sym = 34; return SYM; }
1638 YY_BREAK
1639case 58:
1641#line 209 "libinterp/corefcn/oct-tex-lexer.ll"
1642{ yylval->sym = 35; return SYM; }
1643 YY_BREAK
1644case 59:
1646#line 210 "libinterp/corefcn/oct-tex-lexer.ll"
1647{ yylval->sym = 36; return SYM; }
1648 YY_BREAK
1649case 60:
1651#line 211 "libinterp/corefcn/oct-tex-lexer.ll"
1652{ yylval->sym = 37; return SYM; }
1653 YY_BREAK
1654case 61:
1656#line 212 "libinterp/corefcn/oct-tex-lexer.ll"
1657{ yylval->sym = 38; return SYM; }
1658 YY_BREAK
1659case 62:
1661#line 213 "libinterp/corefcn/oct-tex-lexer.ll"
1662{ yylval->sym = 39; return SYM; }
1663 YY_BREAK
1664case 63:
1666#line 214 "libinterp/corefcn/oct-tex-lexer.ll"
1667{ yylval->sym = 40; return SYM; }
1668 YY_BREAK
1669case 64:
1671#line 215 "libinterp/corefcn/oct-tex-lexer.ll"
1672{ yylval->sym = 41; return SYM; }
1673 YY_BREAK
1674case 65:
1676#line 216 "libinterp/corefcn/oct-tex-lexer.ll"
1677{ yylval->sym = 42; return SYM; }
1678 YY_BREAK
1679case 66:
1681#line 217 "libinterp/corefcn/oct-tex-lexer.ll"
1682{ yylval->sym = 43; return SYM; }
1683 YY_BREAK
1684case 67:
1686#line 218 "libinterp/corefcn/oct-tex-lexer.ll"
1687{ yylval->sym = 44; return SYM; }
1688 YY_BREAK
1689case 68:
1691#line 219 "libinterp/corefcn/oct-tex-lexer.ll"
1692{ yylval->sym = 45; return SYM; }
1693 YY_BREAK
1694case 69:
1696#line 220 "libinterp/corefcn/oct-tex-lexer.ll"
1697{ yylval->sym = 46; return SYM; }
1698 YY_BREAK
1699case 70:
1701#line 221 "libinterp/corefcn/oct-tex-lexer.ll"
1702{ yylval->sym = 47; return SYM; }
1703 YY_BREAK
1704case 71:
1706#line 222 "libinterp/corefcn/oct-tex-lexer.ll"
1707{ yylval->sym = 48; return SYM; }
1708 YY_BREAK
1709case 72:
1711#line 223 "libinterp/corefcn/oct-tex-lexer.ll"
1712{ yylval->sym = 49; return SYM; }
1713 YY_BREAK
1714case 73:
1716#line 224 "libinterp/corefcn/oct-tex-lexer.ll"
1717{ yylval->sym = 50; return SYM; }
1718 YY_BREAK
1719case 74:
1721#line 225 "libinterp/corefcn/oct-tex-lexer.ll"
1722{ yylval->sym = 51; return SYM; }
1723 YY_BREAK
1724case 75:
1726#line 226 "libinterp/corefcn/oct-tex-lexer.ll"
1727{ yylval->sym = 52; return SYM; }
1728 YY_BREAK
1729case 76:
1731#line 227 "libinterp/corefcn/oct-tex-lexer.ll"
1732{ yylval->sym = 53; return SYM; }
1733 YY_BREAK
1734case 77:
1736#line 228 "libinterp/corefcn/oct-tex-lexer.ll"
1737{ yylval->sym = 54; return SYM; }
1738 YY_BREAK
1739case 78:
1741#line 229 "libinterp/corefcn/oct-tex-lexer.ll"
1742{ yylval->sym = 55; return SYM; }
1743 YY_BREAK
1744case 79:
1746#line 230 "libinterp/corefcn/oct-tex-lexer.ll"
1747{ yylval->sym = 56; return SYM; }
1748 YY_BREAK
1749case 80:
1751#line 231 "libinterp/corefcn/oct-tex-lexer.ll"
1752{ yylval->sym = 57; return SYM; }
1753 YY_BREAK
1754case 81:
1756#line 232 "libinterp/corefcn/oct-tex-lexer.ll"
1757{ yylval->sym = 58; return SYM; }
1758 YY_BREAK
1759case 82:
1761#line 233 "libinterp/corefcn/oct-tex-lexer.ll"
1762{ yylval->sym = 59; return SYM; }
1763 YY_BREAK
1764case 83:
1766#line 234 "libinterp/corefcn/oct-tex-lexer.ll"
1767{ yylval->sym = 60; return SYM; }
1768 YY_BREAK
1769case 84:
1771#line 235 "libinterp/corefcn/oct-tex-lexer.ll"
1772{ yylval->sym = 61; return SYM; }
1773 YY_BREAK
1774case 85:
1776#line 236 "libinterp/corefcn/oct-tex-lexer.ll"
1777{ yylval->sym = 62; return SYM; }
1778 YY_BREAK
1779case 86:
1781#line 237 "libinterp/corefcn/oct-tex-lexer.ll"
1782{ yylval->sym = 63; return SYM; }
1783 YY_BREAK
1784case 87:
1786#line 238 "libinterp/corefcn/oct-tex-lexer.ll"
1787{ yylval->sym = 64; return SYM; }
1788 YY_BREAK
1789case 88:
1791#line 239 "libinterp/corefcn/oct-tex-lexer.ll"
1792{ yylval->sym = 65; return SYM; }
1793 YY_BREAK
1794case 89:
1796#line 240 "libinterp/corefcn/oct-tex-lexer.ll"
1797{ yylval->sym = 66; return SYM; }
1798 YY_BREAK
1799case 90:
1801#line 241 "libinterp/corefcn/oct-tex-lexer.ll"
1802{ yylval->sym = 67; return SYM; }
1803 YY_BREAK
1804case 91:
1806#line 242 "libinterp/corefcn/oct-tex-lexer.ll"
1807{ yylval->sym = 68; return SYM; }
1808 YY_BREAK
1809case 92:
1811#line 243 "libinterp/corefcn/oct-tex-lexer.ll"
1812{ yylval->sym = 69; return SYM; }
1813 YY_BREAK
1814case 93:
1816#line 244 "libinterp/corefcn/oct-tex-lexer.ll"
1817{ yylval->sym = 70; return SYM; }
1818 YY_BREAK
1819case 94:
1821#line 245 "libinterp/corefcn/oct-tex-lexer.ll"
1822{ yylval->sym = 71; return SYM; }
1823 YY_BREAK
1824case 95:
1826#line 246 "libinterp/corefcn/oct-tex-lexer.ll"
1827{ yylval->sym = 72; return SYM; }
1828 YY_BREAK
1829case 96:
1831#line 247 "libinterp/corefcn/oct-tex-lexer.ll"
1832{ yylval->sym = 73; return SYM; }
1833 YY_BREAK
1834case 97:
1836#line 248 "libinterp/corefcn/oct-tex-lexer.ll"
1837{ yylval->sym = 74; return SYM; }
1838 YY_BREAK
1839case 98:
1841#line 249 "libinterp/corefcn/oct-tex-lexer.ll"
1842{ yylval->sym = 75; return SYM; }
1843 YY_BREAK
1844case 99:
1846#line 250 "libinterp/corefcn/oct-tex-lexer.ll"
1847{ yylval->sym = 76; return SYM; }
1848 YY_BREAK
1849case 100:
1851#line 251 "libinterp/corefcn/oct-tex-lexer.ll"
1852{ yylval->sym = 77; return SYM; }
1853 YY_BREAK
1854case 101:
1856#line 252 "libinterp/corefcn/oct-tex-lexer.ll"
1857{ yylval->sym = 78; return SYM; }
1858 YY_BREAK
1859case 102:
1861#line 253 "libinterp/corefcn/oct-tex-lexer.ll"
1862{ yylval->sym = 79; return SYM; }
1863 YY_BREAK
1864case 103:
1866#line 254 "libinterp/corefcn/oct-tex-lexer.ll"
1867{ yylval->sym = 80; return SYM; }
1868 YY_BREAK
1869case 104:
1871#line 255 "libinterp/corefcn/oct-tex-lexer.ll"
1872{ yylval->sym = 81; return SYM; }
1873 YY_BREAK
1874case 105:
1876#line 256 "libinterp/corefcn/oct-tex-lexer.ll"
1877{ yylval->sym = 82; return SYM; }
1878 YY_BREAK
1879case 106:
1881#line 257 "libinterp/corefcn/oct-tex-lexer.ll"
1882{ yylval->sym = 83; return SYM; }
1883 YY_BREAK
1884case 107:
1886#line 258 "libinterp/corefcn/oct-tex-lexer.ll"
1887{ yylval->sym = 84; return SYM; }
1888 YY_BREAK
1889case 108:
1891#line 259 "libinterp/corefcn/oct-tex-lexer.ll"
1892{ yylval->sym = 85; return SYM; }
1893 YY_BREAK
1894case 109:
1896#line 260 "libinterp/corefcn/oct-tex-lexer.ll"
1897{ yylval->sym = 86; return SYM; }
1898 YY_BREAK
1899case 110:
1901#line 261 "libinterp/corefcn/oct-tex-lexer.ll"
1902{ yylval->sym = 87; return SYM; }
1903 YY_BREAK
1904case 111:
1906#line 262 "libinterp/corefcn/oct-tex-lexer.ll"
1907{ yylval->sym = 88; return SYM; }
1908 YY_BREAK
1909case 112:
1911#line 263 "libinterp/corefcn/oct-tex-lexer.ll"
1912{ yylval->sym = 89; return SYM; }
1913 YY_BREAK
1914case 113:
1916#line 264 "libinterp/corefcn/oct-tex-lexer.ll"
1917{ yylval->sym = 90; return SYM; }
1918 YY_BREAK
1919case 114:
1921#line 265 "libinterp/corefcn/oct-tex-lexer.ll"
1922{ yylval->sym = 91; return SYM; }
1923 YY_BREAK
1924case 115:
1926#line 266 "libinterp/corefcn/oct-tex-lexer.ll"
1927{ yylval->sym = 92; return SYM; }
1928 YY_BREAK
1929case 116:
1931#line 267 "libinterp/corefcn/oct-tex-lexer.ll"
1932{ yylval->sym = 93; return SYM; }
1933 YY_BREAK
1934case 117:
1936#line 268 "libinterp/corefcn/oct-tex-lexer.ll"
1937{ yylval->sym = 94; return SYM; }
1938 YY_BREAK
1939case 118:
1941#line 269 "libinterp/corefcn/oct-tex-lexer.ll"
1942{ yylval->sym = 95; return SYM; }
1943 YY_BREAK
1944case 119:
1946#line 270 "libinterp/corefcn/oct-tex-lexer.ll"
1947{ yylval->sym = 96; return SYM; }
1948 YY_BREAK
1949case 120:
1951#line 271 "libinterp/corefcn/oct-tex-lexer.ll"
1952{ yylval->sym = 97; return SYM; }
1953 YY_BREAK
1954case 121:
1956#line 272 "libinterp/corefcn/oct-tex-lexer.ll"
1957{ yylval->sym = 98; return SYM; }
1958 YY_BREAK
1959case 122:
1961#line 273 "libinterp/corefcn/oct-tex-lexer.ll"
1962{ yylval->sym = 99; return SYM; }
1963 YY_BREAK
1964case 123:
1966#line 274 "libinterp/corefcn/oct-tex-lexer.ll"
1967{ yylval->sym = 100; return SYM; }
1968 YY_BREAK
1969case 124:
1971#line 275 "libinterp/corefcn/oct-tex-lexer.ll"
1972{ yylval->sym = 101; return SYM; }
1973 YY_BREAK
1974case 125:
1976#line 276 "libinterp/corefcn/oct-tex-lexer.ll"
1977{ yylval->sym = 102; return SYM; }
1978 YY_BREAK
1979
1980// Generic character.
1981
1982case 126:
1983/* rule 126 can match eol */
1984#line 283 "libinterp/corefcn/oct-tex-lexer.ll"
1985case 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
2001case 128:
2003#line 296 "libinterp/corefcn/oct-tex-lexer.ll"
2004ECHO;
2005 YY_BREAK
2006#line 2007 "libinterp/corefcn/oct-tex-lexer.cc"
2007case YY_STATE_EOF(INITIAL):
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 {
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 )
2107 }
2108 break;
2109 }
2110
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 */
2149static 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
2435 {
2436 if ( yywrap( yyscanner ) )
2437 return 0;
2438
2439 if ( ! yyg->yy_did_buffer_switch_on_eof )
2441#ifdef __cplusplus
2442 return yyinput(yyscanner);
2443#else
2444 return input(yyscanner);
2445#endif
2446 }
2447
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
2518static 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{
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 */
2640void 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. */
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
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 */
2691static 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 */
2741YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
2742{
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 */
2778YY_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 */
2791YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len , yyscan_t yyscanner)
2792{
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
2825static 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 */
2864int 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 */
2877int 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 */
2890FILE *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 */
2899FILE *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 */
2908int 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
2918char *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 */
2928void 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 */
2938void 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 */
2953void 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 */
2970void yyset_in (FILE * _in_str , yyscan_t yyscanner)
2971{
2972 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2973 yyin = _in_str ;
2974}
2975
2976void yyset_out (FILE * _out_str , yyscan_t yyscanner)
2977{
2978 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2979 yyout = _out_str ;
2980}
2981
2982int yyget_debug (yyscan_t yyscanner)
2983{
2984 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2985 return yy_flex_debug;
2986}
2987
2988void 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
3002void 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 */
3014int 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 */
3041int 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
3068static 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. */
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 );
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
3136static 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
3148static 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
3168void *
3170{
3171 return malloc (size);
3172}
3173
3174void *
3176{
3177return realloc (ptr, size);
3178}
3179
3180void
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
3225OCTAVE_END_NAMESPACE(octave)
3226
OCTAVE_BEGIN_NAMESPACE(octave) static octave_value daspk_fcn
#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