26 #if defined (HAVE_CONFIG_H)
30 #if defined (HAVE_PRAGMA_GCC_DIAGNOSTIC)
32 # pragma GCC diagnostic ignored "-Wunused-function"
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 # if defined (HAVE_WARN_IMPLICIT_FALLTHROUGH)
42 # pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
48 #if ! defined (register)
52 #line 53 "libinterp/parse-tree/lex.cc"
54 #define YY_INT_ALIGNED short int
59 #define YY_FLEX_MAJOR_VERSION 2
60 #define YY_FLEX_MINOR_VERSION 6
61 #define YY_FLEX_SUBMINOR_VERSION 4
62 #if YY_FLEX_SUBMINOR_VERSION > 0
66 #ifdef yy_create_buffer
67 #define octave__create_buffer_ALREADY_DEFINED
69 #define yy_create_buffer octave__create_buffer
72 #ifdef yy_delete_buffer
73 #define octave__delete_buffer_ALREADY_DEFINED
75 #define yy_delete_buffer octave__delete_buffer
79 #define octave__scan_buffer_ALREADY_DEFINED
81 #define yy_scan_buffer octave__scan_buffer
85 #define octave__scan_string_ALREADY_DEFINED
87 #define yy_scan_string octave__scan_string
91 #define octave__scan_bytes_ALREADY_DEFINED
93 #define yy_scan_bytes octave__scan_bytes
97 #define octave__init_buffer_ALREADY_DEFINED
99 #define yy_init_buffer octave__init_buffer
102 #ifdef yy_flush_buffer
103 #define octave__flush_buffer_ALREADY_DEFINED
105 #define yy_flush_buffer octave__flush_buffer
108 #ifdef yy_load_buffer_state
109 #define octave__load_buffer_state_ALREADY_DEFINED
111 #define yy_load_buffer_state octave__load_buffer_state
114 #ifdef yy_switch_to_buffer
115 #define octave__switch_to_buffer_ALREADY_DEFINED
117 #define yy_switch_to_buffer octave__switch_to_buffer
120 #ifdef yypush_buffer_state
121 #define octave_push_buffer_state_ALREADY_DEFINED
123 #define yypush_buffer_state octave_push_buffer_state
126 #ifdef yypop_buffer_state
127 #define octave_pop_buffer_state_ALREADY_DEFINED
129 #define yypop_buffer_state octave_pop_buffer_state
132 #ifdef yyensure_buffer_stack
133 #define octave_ensure_buffer_stack_ALREADY_DEFINED
135 #define yyensure_buffer_stack octave_ensure_buffer_stack
139 #define octave_lex_ALREADY_DEFINED
141 #define yylex octave_lex
145 #define octave_restart_ALREADY_DEFINED
147 #define yyrestart octave_restart
151 #define octave_lex_init_ALREADY_DEFINED
153 #define yylex_init octave_lex_init
156 #ifdef yylex_init_extra
157 #define octave_lex_init_extra_ALREADY_DEFINED
159 #define yylex_init_extra octave_lex_init_extra
163 #define octave_lex_destroy_ALREADY_DEFINED
165 #define yylex_destroy octave_lex_destroy
169 #define octave_get_debug_ALREADY_DEFINED
171 #define yyget_debug octave_get_debug
175 #define octave_set_debug_ALREADY_DEFINED
177 #define yyset_debug octave_set_debug
181 #define octave_get_extra_ALREADY_DEFINED
183 #define yyget_extra octave_get_extra
187 #define octave_set_extra_ALREADY_DEFINED
189 #define yyset_extra octave_set_extra
193 #define octave_get_in_ALREADY_DEFINED
195 #define yyget_in octave_get_in
199 #define octave_set_in_ALREADY_DEFINED
201 #define yyset_in octave_set_in
205 #define octave_get_out_ALREADY_DEFINED
207 #define yyget_out octave_get_out
211 #define octave_set_out_ALREADY_DEFINED
213 #define yyset_out octave_set_out
217 #define octave_get_leng_ALREADY_DEFINED
219 #define yyget_leng octave_get_leng
223 #define octave_get_text_ALREADY_DEFINED
225 #define yyget_text octave_get_text
229 #define octave_get_lineno_ALREADY_DEFINED
231 #define yyget_lineno octave_get_lineno
235 #define octave_set_lineno_ALREADY_DEFINED
237 #define yyset_lineno octave_set_lineno
241 #define octave_get_column_ALREADY_DEFINED
243 #define yyget_column octave_get_column
247 #define octave_set_column_ALREADY_DEFINED
249 #define yyset_column octave_set_column
253 #define octave_wrap_ALREADY_DEFINED
255 #define yywrap octave_wrap
259 #define octave_get_lval_ALREADY_DEFINED
261 #define yyget_lval octave_get_lval
265 #define octave_set_lval_ALREADY_DEFINED
267 #define yyset_lval octave_set_lval
271 #define octave_alloc_ALREADY_DEFINED
273 #define yyalloc octave_alloc
277 #define octave_realloc_ALREADY_DEFINED
279 #define yyrealloc octave_realloc
283 #define octave_free_ALREADY_DEFINED
285 #define yyfree octave_free
305 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
310 #ifndef __STDC_LIMIT_MACROS
311 #define __STDC_LIMIT_MACROS 1
314 #include <inttypes.h>
331 #define INT8_MIN (-128)
334 #define INT16_MIN (-32767-1)
337 #define INT32_MIN (-2147483647-1)
340 #define INT8_MAX (127)
343 #define INT16_MAX (32767)
346 #define INT32_MAX (2147483647)
349 #define UINT8_MAX (255U)
352 #define UINT16_MAX (65535U)
355 #define UINT32_MAX (4294967295U)
359 #define SIZE_MAX (~(size_t)0)
369 #define yyconst const
371 #if defined(__GNUC__) && __GNUC__ >= 3
372 #define yynoreturn __attribute__((__noreturn__))
383 #define YY_SC_TO_UI(c) ((YY_CHAR) (c))
386 #ifndef YY_TYPEDEF_YY_SCANNER_T
387 #define YY_TYPEDEF_YY_SCANNER_T
393 #define yyin yyg->yyin_r
394 #define yyout yyg->yyout_r
395 #define yyextra yyg->yyextra_r
396 #define yyleng yyg->yyleng_r
397 #define yytext yyg->yytext_r
398 #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
399 #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
400 #define yy_flex_debug yyg->yy_flex_debug_r
406 #define BEGIN yyg->yy_start = 1 + 2 *
411 #define YY_START ((yyg->yy_start - 1) / 2)
412 #define YYSTATE YY_START
414 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
416 #define YY_NEW_FILE yyrestart( yyin , yyscanner )
417 #define YY_END_OF_BUFFER_CHAR 0
426 #define YY_BUF_SIZE 32768
428 #define YY_BUF_SIZE 16384
434 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
436 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
437 #define YY_TYPEDEF_YY_BUFFER_STATE
441 #ifndef YY_TYPEDEF_YY_SIZE_T
442 #define YY_TYPEDEF_YY_SIZE_T
446 #define EOB_ACT_CONTINUE_SCAN 0
447 #define EOB_ACT_END_OF_FILE 1
448 #define EOB_ACT_LAST_MATCH 2
450 #define YY_LESS_LINENO(n)
451 #define YY_LINENO_REWIND_TO(ptr)
458 int yyless_macro_arg = (n); \
459 YY_LESS_LINENO(yyless_macro_arg);\
460 *yy_cp = yyg->yy_hold_char; \
461 YY_RESTORE_YY_MORE_OFFSET \
462 yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
463 YY_DO_BEFORE_ACTION; \
466 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
468 #ifndef YY_STRUCT_YY_BUFFER_STATE
469 #define YY_STRUCT_YY_BUFFER_STATE
516 #define YY_BUFFER_NEW 0
517 #define YY_BUFFER_NORMAL 1
528 #define YY_BUFFER_EOF_PENDING 2
539 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
540 ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
545 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
558 #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner)
568 #define yy_new_buffer yy_create_buffer
569 #define yy_set_interactive(is_interactive) \
571 if ( ! YY_CURRENT_BUFFER ){ \
572 yyensure_buffer_stack (yyscanner); \
573 YY_CURRENT_BUFFER_LVALUE = \
574 yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
576 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
578 #define yy_set_bol(at_bol) \
580 if ( ! YY_CURRENT_BUFFER ){\
581 yyensure_buffer_stack (yyscanner); \
582 YY_CURRENT_BUFFER_LVALUE = \
583 yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
585 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
587 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
591 #define octave_wrap(yyscanner) (1)
592 #define YY_SKIP_YYWRAP
597 #define yytext_ptr yytext_r
607 #define YY_DO_BEFORE_ACTION \
608 yyg->yytext_ptr = yy_bp; \
609 yyleng = (int) (yy_cp - yy_bp); \
610 yyg->yy_hold_char = *yy_cp; \
612 yyg->yy_c_buf_p = yy_cp;
613 #define YY_NUM_RULES 123
614 #define YY_END_OF_BUFFER 124
624 0, 0, 5, 5, 10, 10, 0, 0, 0, 0,
625 0, 0, 0, 0, 0, 0, 0, 0, 124, 122,
626 54, 64, 64, 95, 66, 122, 59, 80, 65, 100,
627 101, 84, 92, 96, 93, 102, 85, 53, 53, 67,
628 91, 82, 103, 83, 122, 62, 15, 86, 16, 87,
629 59, 59, 120, 81, 121, 94, 54, 122, 9, 8,
630 3, 3, 7, 123, 5, 6, 4, 9, 10, 11,
631 11, 102, 13, 14, 10, 1, 1, 123, 20, 20,
632 123, 123, 24, 24, 24, 24, 24, 24, 41, 42,
633 42, 26, 40, 123, 45, 46, 46, 44, 50, 48,
635 50, 47, 50, 54, 0, 64, 77, 0, 21, 21,
636 0, 59, 0, 0, 89, 118, 88, 106, 98, 104,
637 99, 105, 97, 70, 68, 69, 0, 71, 53, 72,
638 73, 107, 53, 53, 0, 0, 51, 0, 75, 76,
639 79, 0, 61, 0, 63, 0, 56, 56, 0, 108,
640 114, 59, 59, 119, 90, 78, 54, 0, 0, 9,
641 8, 3, 0, 3, 5, 6, 0, 10, 11, 0,
642 10, 1, 0, 20, 20, 0, 0, 0, 0, 0,
643 0, 24, 0, 23, 23, 0, 0, 0, 41, 42,
644 25, 0, 39, 39, 38, 38, 27, 29, 30, 31,
646 32, 33, 34, 35, 39, 45, 46, 43, 48, 50,
647 0, 47, 0, 0, 0, 0, 0, 60, 115, 74,
648 111, 109, 110, 0, 112, 53, 0, 113, 116, 52,
649 53, 53, 0, 53, 53, 0, 61, 0, 0, 63,
650 0, 0, 57, 57, 59, 0, 17, 17, 0, 0,
651 0, 18, 18, 0, 19, 19, 0, 22, 22, 0,
652 0, 37, 37, 27, 28, 0, 47, 0, 0, 0,
653 60, 0, 117, 0, 55, 55, 0, 53, 53, 53,
654 0, 61, 0, 63, 0, 58, 0, 2, 2, 0,
655 12, 12, 0, 36, 36, 27, 47, 0, 49, 49,
657 0, 60, 53, 61, 63, 60, 0
662 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
663 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
664 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
665 1, 2, 5, 6, 7, 8, 7, 9, 10, 11,
666 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
667 21, 21, 21, 21, 21, 22, 22, 23, 24, 25,
668 26, 27, 28, 29, 30, 31, 30, 32, 32, 30,
669 8, 8, 33, 33, 8, 8, 8, 8, 8, 8,
670 8, 8, 8, 8, 8, 8, 8, 34, 8, 8,
671 35, 36, 37, 38, 39, 1, 40, 41, 30, 32,
673 42, 43, 44, 8, 33, 33, 8, 8, 8, 45,
674 8, 8, 8, 46, 47, 48, 8, 49, 8, 50,
675 8, 8, 51, 52, 53, 54, 1, 1, 1, 1,
676 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
677 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
678 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
679 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
680 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
681 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
682 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
684 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
685 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
686 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
687 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
688 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
694 1, 2, 3, 3, 1, 4, 5, 6, 1, 7,
695 5, 5, 1, 1, 5, 1, 8, 1, 9, 9,
696 9, 9, 1, 5, 1, 1, 1, 1, 10, 11,
697 11, 11, 12, 6, 5, 13, 5, 1, 12, 11,
698 11, 11, 11, 6, 6, 6, 6, 6, 6, 6,
704 0, 53, 59, 111, 55, 83, 823, 822, 64, 75,
705 91, 95, 121, 127, 101, 137, 164, 0, 824, 1050,
706 73, 1050, 820, 796, 1050, 85, 132, 47, 1050, 1050,
707 1050, 90, 93, 1050, 65, 209, 792, 231, 205, 1050,
708 1050, 789, 787, 786, 809, 801, 1050, 230, 1050, 773,
709 240, 242, 1050, 80, 1050, 753, 135, 217, 0, 773,
710 1050, 771, 1050, 147, 232, 223, 1050, 710, 151, 1050,
711 723, 707, 1050, 1050, 152, 1050, 720, 152, 1050, 719,
712 283, 271, 1050, 247, 718, 237, 259, 274, 0, 1050,
713 714, 710, 698, 324, 0, 1050, 711, 702, 1050, 709,
715 707, 143, 689, 286, 276, 1050, 1050, 288, 1050, 702,
716 287, 292, 702, 701, 1050, 1050, 675, 1050, 1050, 1050,
717 1050, 1050, 1050, 126, 674, 673, 675, 664, 278, 663,
718 662, 1050, 365, 0, 276, 315, 1050, 0, 1050, 1050,
719 1050, 592, 301, 591, 306, 344, 1050, 589, 298, 1050,
720 1050, 351, 360, 1050, 1050, 1050, 305, 310, 336, 0,
721 589, 1050, 302, 587, 331, 318, 570, 347, 1050, 569,
722 350, 1050, 329, 1050, 582, 356, 387, 390, 407, 374,
723 392, 1050, 402, 1050, 581, 410, 410, 416, 0, 1050,
724 1050, 563, 1050, 419, 1050, 576, 405, 1050, 1050, 1050,
726 1050, 1050, 1050, 1050, 0, 0, 1050, 1050, 559, 1050,
727 339, 398, 553, 474, 485, 414, 482, 425, 1050, 453,
728 1050, 1050, 1050, 425, 1050, 413, 437, 1050, 1050, 1050,
729 443, 447, 428, 450, 441, 437, 471, 466, 475, 476,
730 458, 433, 1050, 441, 479, 495, 1050, 438, 491, 497,
731 500, 1050, 427, 503, 1050, 399, 507, 1050, 385, 510,
732 513, 1050, 376, 499, 0, 348, 519, 519, 522, 523,
733 524, 317, 1050, 524, 1050, 255, 510, 523, 527, 205,
734 222, 533, 141, 535, 552, 1050, 530, 1050, 126, 554,
735 1050, 106, 568, 1050, 98, 1050, 536, 561, 1050, 81,
737 62, 557, 556, 565, 566, 571, 1050, 595, 608, 621,
738 634, 647, 660, 673, 685, 696, 707, 719, 732, 745,
739 758, 771, 783, 796, 808, 819, 830, 834, 844, 855,
740 867, 872, 882, 893, 904, 916, 921, 932, 943, 955,
741 968, 980, 992, 1004, 1015, 1026, 1037
746 307, 1, 308, 308, 1, 1, 309, 309, 310, 310,
747 311, 311, 312, 312, 313, 313, 307, 17, 307, 307,
748 307, 307, 307, 307, 307, 314, 315, 307, 307, 307,
749 307, 307, 307, 307, 307, 307, 307, 307, 38, 307,
750 307, 307, 307, 307, 316, 317, 307, 307, 307, 307,
751 315, 315, 307, 307, 307, 307, 307, 314, 318, 307,
752 307, 307, 307, 319, 307, 307, 307, 307, 307, 307,
753 307, 36, 307, 307, 307, 307, 307, 320, 307, 307,
754 320, 320, 307, 307, 307, 321, 307, 321, 322, 307,
755 307, 307, 307, 323, 324, 307, 307, 307, 307, 307,
757 307, 325, 307, 307, 314, 307, 307, 314, 307, 307,
758 307, 315, 326, 327, 307, 307, 307, 307, 307, 307,
759 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
760 307, 307, 307, 39, 307, 307, 307, 328, 307, 307,
761 307, 316, 329, 317, 330, 307, 307, 307, 331, 307,
762 307, 315, 315, 307, 307, 307, 307, 314, 314, 318,
763 307, 307, 319, 307, 307, 307, 307, 307, 307, 307,
764 307, 307, 320, 307, 307, 320, 320, 320, 320, 307,
765 321, 307, 321, 307, 307, 307, 321, 321, 322, 307,
766 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
768 307, 307, 307, 307, 332, 324, 307, 307, 307, 307,
769 307, 325, 333, 307, 326, 334, 327, 335, 307, 307,
770 307, 307, 307, 336, 307, 307, 307, 307, 307, 307,
771 307, 307, 307, 307, 337, 307, 329, 338, 307, 330,
772 339, 331, 307, 307, 315, 314, 307, 307, 340, 341,
773 320, 307, 307, 320, 307, 307, 321, 307, 307, 307,
774 307, 307, 307, 307, 332, 333, 342, 343, 334, 307,
775 335, 344, 307, 336, 307, 307, 307, 307, 307, 337,
776 338, 345, 339, 346, 307, 307, 340, 307, 307, 341,
777 307, 307, 307, 307, 307, 307, 342, 343, 307, 307,
779 344, 347, 307, 345, 346, 347, 0, 307, 307, 307,
780 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
781 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
782 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
783 307, 307, 307, 307, 307, 307, 307
788 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
789 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
790 39, 39, 40, 41, 42, 43, 44, 45, 46, 27,
791 27, 27, 27, 27, 47, 48, 49, 50, 27, 27,
792 27, 27, 27, 51, 27, 27, 52, 27, 27, 27,
793 53, 54, 55, 56, 57, 115, 69, 70, 71, 58,
794 60, 61, 62, 301, 63, 64, 79, 80, 63, 65,
795 66, 72, 116, 67, 104, 68, 81, 79, 80, 105,
796 121, 82, 67, 299, 75, 70, 71, 109, 110, 58,
797 122, 73, 84, 65, 85, 66, 87, 86, 85, 72,
799 294, 88, 117, 96, 97, 154, 119, 74, 291, 65,
800 98, 66, 60, 61, 62, 118, 63, 64, 120, 73,
801 63, 65, 66, 90, 91, 67, 92, 68, 288, 90,
802 91, 155, 92, 111, 67, 74, 157, 93, 220, 96,
803 97, 158, 283, 93, 211, 65, 98, 66, 113, 162,
804 164, 221, 168, 171, 174, 175, 94, 105, 158, 213,
805 114, 65, 94, 66, 99, 100, 99, 101, 99, 99,
806 99, 102, 99, 99, 99, 99, 99, 99, 99, 99,
807 103, 99, 99, 99, 99, 99, 99, 99, 99, 99,
808 99, 99, 99, 102, 102, 102, 102, 102, 99, 99,
810 99, 99, 102, 102, 102, 102, 102, 102, 102, 102,
811 102, 102, 102, 102, 99, 99, 99, 99, 123, 109,
812 110, 124, 125, 281, 126, 127, 128, 129, 129, 129,
813 129, 146, 147, 148, 166, 307, 149, 137, 307, 184,
814 185, 111, 165, 111, 130, 307, 131, 133, 180, 134,
815 134, 134, 134, 181, 307, 150, 113, 275, 113, 166,
816 186, 135, 136, 137, 138, 187, 165, 159, 114, 134,
817 114, 135, 136, 174, 175, 166, 184, 185, 109, 110,
818 138, 152, 165, 153, 176, 174, 175, 104, 111, 177,
819 109, 110, 105, 111, 232, 232, 226, 226, 226, 226,
821 243, 244, 236, 113, 162, 164, 157, 239, 113, 227,
822 137, 158, 109, 110, 232, 114, 226, 238, 301, 227,
823 114, 178, 241, 179, 188, 194, 195, 196, 233, 166,
824 233, 174, 175, 234, 234, 234, 234, 246, 247, 248,
825 211, 165, 197, 197, 197, 146, 147, 148, 168, 266,
826 149, 171, 111, 105, 166, 213, 158, 176, 174, 175,
827 159, 111, 177, 198, 199, 165, 200, 113, 201, 202,
828 166, 203, 204, 205, 230, 180, 113, 230, 262, 114,
829 181, 165, 230, 231, 231, 231, 231, 258, 114, 174,
830 175, 251, 252, 253, 184, 185, 136, 137, 245, 211,
832 230, 255, 230, 231, 184, 185, 136, 245, 254, 255,
833 256, 186, 184, 185, 213, 111, 187, 257, 258, 259,
834 261, 262, 263, 264, 264, 264, 270, 275, 276, 252,
835 113, 226, 226, 226, 226, 243, 244, 178, 236, 179,
836 247, 272, 114, 243, 227, 137, 234, 234, 234, 234,
837 277, 226, 277, 238, 227, 278, 278, 278, 278, 283,
838 188, 231, 231, 231, 231, 232, 232, 281, 279, 279,
839 279, 279, 236, 137, 136, 137, 239, 239, 273, 137,
840 285, 231, 137, 217, 136, 232, 215, 238, 279, 286,
841 268, 241, 241, 288, 289, 113, 246, 247, 248, 291,
843 292, 251, 252, 253, 254, 255, 256, 114, 257, 258,
844 259, 293, 294, 295, 261, 262, 263, 296, 296, 296,
845 211, 299, 300, 111, 270, 270, 275, 276, 278, 278,
846 278, 278, 288, 289, 236, 213, 239, 211, 113, 272,
847 272, 303, 303, 303, 303, 279, 279, 279, 279, 238,
848 114, 241, 213, 285, 266, 137, 291, 292, 270, 137,
849 209, 303, 286, 299, 300, 279, 236, 239, 113, 293,
850 294, 295, 270, 272, 303, 303, 303, 303, 195, 260,
851 114, 238, 241, 184, 174, 250, 249, 272, 137, 162,
852 161, 147, 144, 142, 303, 59, 59, 59, 59, 59,
854 59, 59, 59, 59, 59, 59, 59, 59, 76, 76,
855 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
856 76, 78, 78, 78, 78, 78, 78, 78, 78, 78,
857 78, 78, 78, 78, 83, 83, 83, 83, 83, 83,
858 83, 83, 83, 83, 83, 83, 83, 89, 89, 89,
859 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
860 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
861 95, 95, 95, 108, 108, 108, 108, 108, 108, 108,
862 108, 108, 108, 108, 108, 108, 112, 229, 228, 225,
863 112, 224, 112, 112, 112, 112, 112, 143, 223, 222,
865 219, 143, 217, 215, 109, 214, 143, 143, 145, 210,
866 209, 208, 145, 207, 192, 191, 190, 145, 145, 160,
867 182, 174, 172, 170, 160, 169, 167, 160, 160, 160,
868 160, 160, 163, 163, 163, 163, 163, 163, 163, 163,
869 163, 163, 163, 163, 163, 173, 173, 173, 173, 173,
870 173, 173, 173, 173, 173, 173, 173, 173, 183, 183,
871 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
872 183, 189, 189, 162, 161, 189, 189, 189, 156, 189,
873 189, 189, 189, 193, 193, 193, 193, 193, 193, 193,
874 193, 193, 193, 193, 193, 193, 206, 206, 151, 206,
876 206, 206, 144, 206, 206, 206, 206, 206, 206, 212,
877 142, 141, 140, 212, 139, 212, 212, 132, 212, 212,
878 216, 107, 106, 307, 216, 77, 77, 307, 307, 216,
879 216, 218, 307, 307, 307, 218, 307, 307, 307, 307,
880 218, 218, 235, 307, 235, 237, 307, 307, 307, 237,
881 307, 237, 237, 307, 237, 237, 240, 307, 307, 307,
882 240, 307, 240, 240, 307, 240, 240, 242, 242, 242,
883 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
884 265, 307, 265, 267, 307, 307, 307, 267, 307, 307,
885 307, 307, 267, 267, 269, 307, 307, 307, 269, 307,
887 269, 269, 269, 269, 269, 271, 307, 307, 307, 271,
888 307, 271, 271, 307, 271, 271, 274, 274, 274, 274,
889 274, 274, 274, 274, 274, 274, 274, 274, 274, 280,
890 307, 280, 280, 282, 307, 307, 307, 282, 307, 307,
891 307, 307, 282, 282, 284, 307, 307, 307, 284, 307,
892 307, 307, 307, 284, 284, 287, 287, 287, 287, 287,
893 287, 287, 287, 287, 287, 287, 287, 287, 290, 290,
894 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
895 290, 297, 307, 307, 307, 297, 307, 297, 297, 307,
896 297, 297, 298, 298, 298, 298, 298, 298, 298, 298,
898 298, 298, 298, 298, 298, 302, 307, 307, 307, 302,
899 307, 307, 307, 307, 302, 302, 304, 307, 307, 307,
900 304, 307, 304, 304, 307, 304, 304, 305, 307, 307,
901 307, 305, 307, 305, 305, 307, 305, 305, 306, 307,
902 307, 307, 306, 307, 306, 306, 307, 306, 306, 19,
903 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
904 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
905 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
906 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
907 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
914 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
915 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
916 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
917 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
918 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
919 1, 1, 1, 1, 2, 28, 5, 5, 5, 2,
920 3, 3, 3, 301, 3, 3, 9, 9, 3, 3,
921 3, 5, 28, 3, 21, 3, 10, 10, 10, 21,
922 35, 10, 3, 300, 6, 6, 6, 26, 26, 6,
923 35, 5, 11, 3, 11, 3, 12, 11, 12, 6,
925 295, 12, 32, 15, 15, 54, 33, 5, 292, 3,
926 15, 3, 4, 4, 4, 32, 4, 4, 33, 6,
927 4, 4, 4, 13, 13, 4, 13, 4, 289, 14,
928 14, 54, 14, 27, 4, 6, 57, 13, 124, 16,
929 16, 57, 283, 14, 102, 4, 16, 4, 27, 64,
930 64, 124, 69, 75, 78, 78, 13, 69, 75, 102,
931 27, 4, 14, 4, 17, 17, 17, 17, 17, 17,
932 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
933 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
934 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
936 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
937 17, 17, 17, 17, 17, 17, 17, 17, 36, 58,
938 58, 36, 36, 281, 36, 36, 36, 36, 36, 36,
939 36, 48, 48, 48, 66, 39, 48, 280, 39, 86,
940 86, 51, 65, 52, 36, 39, 36, 38, 84, 38,
941 38, 38, 38, 84, 39, 48, 51, 276, 52, 66,
942 87, 38, 38, 38, 38, 87, 65, 58, 51, 38,
943 52, 38, 38, 82, 82, 66, 88, 88, 105, 105,
944 38, 51, 65, 52, 81, 81, 81, 104, 111, 81,
945 108, 108, 104, 112, 135, 135, 129, 129, 129, 129,
947 149, 149, 143, 111, 163, 163, 157, 145, 112, 129,
948 129, 157, 158, 158, 135, 111, 129, 143, 272, 129,
949 112, 82, 145, 82, 88, 94, 94, 94, 136, 166,
950 136, 173, 173, 136, 136, 136, 136, 159, 159, 159,
951 211, 165, 94, 94, 94, 146, 146, 146, 168, 266,
952 146, 171, 152, 168, 166, 211, 171, 176, 176, 176,
953 158, 153, 176, 94, 94, 165, 94, 152, 94, 94,
954 166, 94, 94, 94, 133, 180, 153, 133, 263, 152,
955 180, 165, 133, 133, 133, 133, 133, 259, 153, 177,
956 177, 178, 178, 178, 181, 181, 133, 133, 152, 212,
958 133, 256, 133, 133, 183, 183, 133, 153, 179, 179,
959 179, 186, 187, 187, 212, 216, 186, 188, 188, 188,
960 194, 194, 194, 197, 197, 197, 218, 224, 224, 253,
961 216, 226, 226, 226, 226, 242, 242, 177, 236, 177,
962 248, 218, 216, 244, 226, 226, 233, 233, 233, 233,
963 227, 226, 227, 236, 226, 227, 227, 227, 227, 241,
964 187, 231, 231, 231, 231, 232, 232, 238, 234, 234,
965 234, 234, 237, 235, 231, 231, 239, 240, 220, 232,
966 245, 231, 234, 217, 231, 232, 215, 237, 234, 245,
967 214, 239, 240, 249, 249, 245, 246, 246, 246, 250,
969 250, 251, 251, 251, 254, 254, 254, 245, 257, 257,
970 257, 260, 260, 260, 261, 261, 261, 264, 264, 264,
971 267, 268, 268, 269, 270, 271, 274, 274, 277, 277,
972 277, 277, 287, 287, 282, 267, 284, 297, 269, 270,
973 271, 278, 278, 278, 278, 279, 279, 279, 279, 282,
974 269, 284, 297, 285, 213, 278, 290, 290, 302, 279,
975 209, 278, 285, 298, 298, 279, 304, 305, 285, 293,
976 293, 293, 306, 302, 303, 303, 303, 303, 196, 192,
977 285, 304, 305, 185, 175, 170, 167, 306, 303, 164,
978 161, 148, 144, 142, 303, 308, 308, 308, 308, 308,
980 308, 308, 308, 308, 308, 308, 308, 308, 309, 309,
981 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
982 309, 310, 310, 310, 310, 310, 310, 310, 310, 310,
983 310, 310, 310, 310, 311, 311, 311, 311, 311, 311,
984 311, 311, 311, 311, 311, 311, 311, 312, 312, 312,
985 312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
986 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
987 313, 313, 313, 314, 314, 314, 314, 314, 314, 314,
988 314, 314, 314, 314, 314, 314, 315, 131, 130, 128,
989 315, 127, 315, 315, 315, 315, 315, 316, 126, 125,
991 117, 316, 114, 113, 110, 103, 316, 316, 317, 101,
992 100, 98, 317, 97, 93, 92, 91, 317, 317, 318,
993 85, 80, 77, 72, 318, 71, 68, 318, 318, 318,
994 318, 318, 319, 319, 319, 319, 319, 319, 319, 319,
995 319, 319, 319, 319, 319, 320, 320, 320, 320, 320,
996 320, 320, 320, 320, 320, 320, 320, 320, 321, 321,
997 321, 321, 321, 321, 321, 321, 321, 321, 321, 321,
998 321, 322, 322, 62, 60, 322, 322, 322, 56, 322,
999 322, 322, 322, 323, 323, 323, 323, 323, 323, 323,
1000 323, 323, 323, 323, 323, 323, 324, 324, 50, 324,
1002 324, 324, 46, 324, 324, 324, 324, 324, 324, 325,
1003 45, 44, 43, 325, 42, 325, 325, 37, 325, 325,
1004 326, 24, 23, 19, 326, 8, 7, 0, 0, 326,
1005 326, 327, 0, 0, 0, 327, 0, 0, 0, 0,
1006 327, 327, 328, 0, 328, 329, 0, 0, 0, 329,
1007 0, 329, 329, 0, 329, 329, 330, 0, 0, 0,
1008 330, 0, 330, 330, 0, 330, 330, 331, 331, 331,
1009 331, 331, 331, 331, 331, 331, 331, 331, 331, 331,
1010 332, 0, 332, 333, 0, 0, 0, 333, 0, 0,
1011 0, 0, 333, 333, 334, 0, 0, 0, 334, 0,
1013 334, 334, 334, 334, 334, 335, 0, 0, 0, 335,
1014 0, 335, 335, 0, 335, 335, 336, 336, 336, 336,
1015 336, 336, 336, 336, 336, 336, 336, 336, 336, 337,
1016 0, 337, 337, 338, 0, 0, 0, 338, 0, 0,
1017 0, 0, 338, 338, 339, 0, 0, 0, 339, 0,
1018 0, 0, 0, 339, 339, 340, 340, 340, 340, 340,
1019 340, 340, 340, 340, 340, 340, 340, 340, 341, 341,
1020 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
1021 341, 342, 0, 0, 0, 342, 0, 342, 342, 0,
1022 342, 342, 343, 343, 343, 343, 343, 343, 343, 343,
1024 343, 343, 343, 343, 343, 344, 0, 0, 0, 344,
1025 0, 0, 0, 0, 344, 344, 345, 0, 0, 0,
1026 345, 0, 345, 345, 0, 345, 345, 346, 0, 0,
1027 0, 346, 0, 346, 346, 0, 346, 346, 347, 0,
1028 0, 0, 347, 0, 347, 347, 0, 347, 347, 307,
1029 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
1030 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
1031 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
1032 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
1033 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
1041 #define REJECT reject_used_but_not_detected
1042 #define yymore() yymore_used_but_not_detected
1043 #define YY_MORE_ADJ 0
1044 #define YY_RESTORE_YY_MORE_OFFSET
1045 #line 1 "../libinterp/parse-tree/lex.ll"
1067 #line 91 "../libinterp/parse-tree/lex.ll"
1114 #if defined (OCTAVE_STYPE_IS_DECLARED) && ! defined YYSTYPE
1115 # define YYSTYPE OCTAVE_STYPE
1118 #define YY_NO_UNISTD_H 1
1119 #define isatty octave_isatty_wrapper
1121 #if ! (defined (FLEX_SCANNER) \
1122 && defined (YY_FLEX_MAJOR_VERSION) && YY_FLEX_MAJOR_VERSION >= 2 \
1123 && defined (YY_FLEX_MINOR_VERSION) && YY_FLEX_MINOR_VERSION >= 5)
1124 #error lex.l requires flex version 2.5.4 or later
1127 #define YY_EXTRA_TYPE octave::base_lexer *
1128 #define curr_lexer yyextra
1132 #if defined (YY_INPUT)
1135 #define YY_INPUT(buf, result, max_size) \
1136 result = curr_lexer->fill_flex_buffer (buf, max_size)
1140 #if defined (YY_FATAL_ERROR)
1141 # undef YY_FATAL_ERROR
1143 #define YY_FATAL_ERROR(msg) \
1144 (yyget_extra (yyscanner))->fatal_error (msg)
1146 #define CMD_OR_OP(PATTERN, TOK, COMPAT) \
1149 curr_lexer->lexer_debug (PATTERN); \
1151 if (curr_lexer->looks_like_command_arg ()) \
1154 curr_lexer->push_start_state (COMMAND_START); \
1157 return curr_lexer->handle_op (TOK, false, COMPAT); \
1161 #define CMD_OR_COMPUTED_ASSIGN_OP(PATTERN, TOK) \
1164 curr_lexer->lexer_debug (PATTERN); \
1166 if (curr_lexer->previous_token_may_be_command () \
1167 && curr_lexer->space_follows_previous_token ()) \
1170 curr_lexer->push_start_state (COMMAND_START); \
1173 return curr_lexer->handle_op (TOK, false, false); \
1177 #define CMD_OR_UNARY_OP(PATTERN, TOK, COMPAT) \
1180 curr_lexer->lexer_debug (PATTERN); \
1182 if (curr_lexer->previous_token_may_be_command ()) \
1184 if (curr_lexer->looks_like_command_arg ()) \
1187 curr_lexer->push_start_state (COMMAND_START); \
1190 return curr_lexer->handle_op (TOK, false, COMPAT); \
1194 if (curr_lexer->maybe_unput_comma_before_unary_op (TOK)) \
1197 curr_lexer->xunput (','); \
1200 return curr_lexer->handle_op (TOK, false, COMPAT); \
1205 #define HANDLE_EOB_OR_EOF(STATUS) \
1208 if (curr_lexer->is_push_lexer ()) \
1210 if (curr_lexer->at_end_of_buffer ()) \
1213 if (curr_lexer->at_end_of_file ()) \
1214 return curr_lexer->handle_end_of_input (); \
1222 #define HANDLE_STRING_CONTINUATION \
1225 curr_lexer->m_filepos.next_line (); \
1227 HANDLE_EOB_OR_EOF (-1); \
1231 #define HANDLE_IDENTIFIER(pattern, get_set) \
1234 curr_lexer->lexer_debug (pattern); \
1236 int tok = curr_lexer->previous_token_value (); \
1238 if (curr_lexer->whitespace_is_significant () \
1239 && curr_lexer->space_follows_previous_token () \
1240 && ! (tok == '[' || tok == '{' \
1241 || curr_lexer->previous_token_is_binop ())) \
1244 curr_lexer->xunput (','); \
1248 if (! curr_lexer->m_looking_at_decl_list \
1249 && curr_lexer->previous_token_may_be_command ()) \
1252 curr_lexer->push_start_state (COMMAND_START); \
1259 curr_lexer->m_filepos.increment_column (3); \
1260 curr_lexer->m_maybe_classdef_get_set_method = false; \
1263 return curr_lexer->handle_identifier (); \
1272 return c ==
' ' || c ==
'\t';
1278 return c ==
' ' || c ==
'\t' || c ==
'\n' || c ==
'\r';
1294 && ! (s ==
"set" || s ==
"get"
1295 || s ==
"enumeration" || s ==
"events"
1296 || s ==
"methods" || s ==
"properties"));
1300 #line 1301 "libinterp/parse-tree/lex.cc"
1301 #line 1302 "libinterp/parse-tree/lex.cc"
1304 #define COMMAND_START 1
1305 #define MATRIX_START 2
1306 #define INPUT_FILE_START 3
1307 #define BLOCK_COMMENT_START 4
1308 #define LINE_COMMENT_START 5
1309 #define DQ_STRING_START 6
1310 #define SQ_STRING_START 7
1311 #define FQ_IDENT_START 8
1313 #ifndef YY_NO_UNISTD_H
1321 #ifndef YY_EXTRA_TYPE
1322 #define YY_EXTRA_TYPE void *
1365 # define yylval yyg->yylval_r
1412 #ifndef YY_SKIP_YYWRAP
1427 static void yy_flex_strncpy (
char *,
const char *,
int ,
yyscan_t yyscanner);
1430 #ifdef YY_NEED_STRLEN
1431 static int yy_flex_strlen (
const char * ,
yyscan_t yyscanner);
1436 static int yyinput (
yyscan_t yyscanner );
1444 #ifndef YY_READ_BUF_SIZE
1447 #define YY_READ_BUF_SIZE 16384
1449 #define YY_READ_BUF_SIZE 8192
1458 #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
1465 #define YY_INPUT(buf,result,max_size) \
1466 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1470 for ( n = 0; n < max_size && \
1471 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1472 buf[n] = (char) c; \
1474 buf[n++] = (char) c; \
1475 if ( c == EOF && ferror( yyin ) ) \
1476 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1482 while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
1484 if( errno != EINTR) \
1486 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1502 #define yyterminate() return YY_NULL
1506 #ifndef YY_START_STACK_INCR
1507 #define YY_START_STACK_INCR 25
1511 #ifndef YY_FATAL_ERROR
1512 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1521 #define YY_DECL_IS_OURS 1
1526 #define YY_DECL int yylex \
1527 (YYSTYPE * yylval_param , yyscan_t yyscanner)
1533 #ifndef YY_USER_ACTION
1534 #define YY_USER_ACTION
1539 #define YY_BREAK break;
1542 #define YY_RULE_SETUP \
1544 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
1545 (yytext[yyleng - 1] == '\n'); \
1553 char *yy_cp, *yy_bp;
1586 #line 342 "../libinterp/parse-tree/lex.ll"
1590 #line 346 "../libinterp/parse-tree/lex.ll"
1595 #line 1596 "libinterp/parse-tree/lex.cc"
1620 while (
yy_chk[
yy_base[yy_current_state] + yy_c] != yy_current_state )
1622 yy_current_state = (int)
yy_def[yy_current_state];
1623 if ( yy_current_state >= 308 )
1626 yy_current_state =
yy_nxt[
yy_base[yy_current_state] + yy_c];
1629 while (
yy_base[yy_current_state] != 1050 );
1651 goto yy_find_action;
1656 #line 350 "../libinterp/parse-tree/lex.ll"
1658 curr_lexer->lexer_debug (
"<INPUT_FILE_START>{ANY_INCLUDING_NL}");
1672 #line 364 "../libinterp/parse-tree/lex.ll"
1674 curr_lexer->lexer_debug (
"<INPUT_FILE_START><<EOF>>");
1695 #line 385 "../libinterp/parse-tree/lex.ll"
1697 curr_lexer->lexer_debug (
"<COMMAND_START>(\\.\\.\\.){ANY_EXCEPT_NL}*{NL}");
1715 #line 402 "../libinterp/parse-tree/lex.ll"
1717 curr_lexer->lexer_debug (
"<COMMAND_START>({CCHAR}{ANY_EXCEPT_NL}*)?{NL}");
1729 curr_lexer->m_looking_for_object_index =
false;
1730 curr_lexer->m_at_beginning_of_statement =
true;
1738 #line 422 "../libinterp/parse-tree/lex.ll"
1740 curr_lexer->lexer_debug (
"<COMMAND_START>[\\,\\;]");
1753 curr_lexer->m_looking_for_object_index =
false;
1754 curr_lexer->m_at_beginning_of_statement =
true;
1773 #line 455 "../libinterp/parse-tree/lex.ll"
1775 curr_lexer->lexer_debug (
"<COMMAND_START>[\\(\\[\\{]+");
1784 #line 463 "../libinterp/parse-tree/lex.ll"
1786 curr_lexer->lexer_debug (
"<COMMAND_START>[\\)\\]\\}]+");
1806 #line 483 "../libinterp/parse-tree/lex.ll"
1808 curr_lexer->lexer_debug (
"<COMMAND_START>[\\\"\\']");
1810 if (
curr_lexer->m_command_arg_paren_count == 0)
1826 #line 501 "../libinterp/parse-tree/lex.ll"
1828 curr_lexer->lexer_debug (
"<COMMAND_START>{S}*");
1830 if (
curr_lexer->m_command_arg_paren_count == 0)
1850 #line 523 "../libinterp/parse-tree/lex.ll"
1852 curr_lexer->lexer_debug (
"<COMMAND_START>([\\.]|[^#% \\t\\r\\n\\.\\,\\;\\\"\\'\\(\\[\\{\\}\\]\\)]*");
1863 #line 534 "../libinterp/parse-tree/lex.ll"
1865 curr_lexer->lexer_debug (
"<MATRIX_START>{S}*");
1869 curr_lexer->mark_previous_token_trailing_space ();
1875 #line 542 "../libinterp/parse-tree/lex.ll"
1877 curr_lexer->lexer_debug (
"<MATRIX_START>{NL}");
1882 curr_lexer->warn_language_extension (
"bare newline inside parentheses");
1885 int tok =
curr_lexer->previous_token_value ();
1887 if (! (tok ==
';' || tok ==
'[' || tok ==
'{'))
1899 #line 563 "../libinterp/parse-tree/lex.ll"
1901 curr_lexer->lexer_debug (
"<MATRIX_START>\\.\\.\\.{ANY_EXCEPT_NL}*{NL}");
1910 curr_lexer->mark_previous_token_trailing_space ();
1928 #line 590 "../libinterp/parse-tree/lex.ll"
1930 curr_lexer->lexer_debug (
"<MATRIX_START>\\]");
1933 return curr_lexer->handle_close_bracket (
']');
1941 #line 601 "../libinterp/parse-tree/lex.ll"
1943 curr_lexer->lexer_debug (
"<MATRIX_START>\\}*");
1946 return curr_lexer->handle_close_bracket (
'}');
1951 #line 608 "../libinterp/parse-tree/lex.ll"
1955 bool unput_comma =
false;
1958 &&
curr_lexer->space_follows_previous_token ())
1960 int tok =
curr_lexer->previous_token_value ();
1962 if (! (tok ==
'[' || tok ==
'{'
1978 curr_lexer->m_looking_at_object_index.push_front (
false);
1980 curr_lexer->m_looking_for_object_index =
false;
1981 curr_lexer->m_at_beginning_of_statement =
false;
1984 && !
curr_lexer->m_parsed_function_name.top ())
1987 curr_lexer->m_looking_at_matrix_or_assign_lhs =
true;
1999 #line 653 "../libinterp/parse-tree/lex.ll"
2007 curr_lexer->m_looking_at_object_index.pop_front ();
2009 curr_lexer->m_looking_for_object_index =
true;
2010 curr_lexer->m_at_beginning_of_statement =
false;
2029 #line 681 "../libinterp/parse-tree/lex.ll"
2031 curr_lexer->lexer_debug (
"^{S}*{CCHAR}\\{{S}*{NL}");
2041 #line 689 "../libinterp/parse-tree/lex.ll"
2043 curr_lexer->lexer_debug (
"<BLOCK_COMMENT_START>^{S}*{CCHAR}\\{{S}*{NL}");
2047 if (
curr_lexer->m_block_comment_nesting_level)
2067 #line 712 "../libinterp/parse-tree/lex.ll"
2069 curr_lexer->lexer_debug (
"<BLOCK_COMMENT_START>^{S}*{CCHAR}\\}{S}*{NL}");
2073 if (
curr_lexer->m_block_comment_nesting_level > 1)
2082 if (
curr_lexer->m_block_comment_nesting_level == 0)
2098 #line 740 "../libinterp/parse-tree/lex.ll"
2100 curr_lexer->lexer_debug (
"<BLOCK_COMMENT_START>{ANY_EXCEPT_NL}*{NL}");
2114 #line 753 "../libinterp/parse-tree/lex.ll"
2116 curr_lexer->lexer_debug (
"{S}*{CCHAR}{ANY_EXCEPT_NL}*{NL}");
2134 #line 770 "../libinterp/parse-tree/lex.ll"
2136 curr_lexer->lexer_debug (
"<LINE_COMMENT_START>^{S}*{CCHAR}\\{{S}*{NL}");
2160 #line 793 "../libinterp/parse-tree/lex.ll"
2162 curr_lexer->lexer_debug (
"<LINE_COMMENT_START>{S}*{CCHAR}{ANY_EXCEPT_NL}*{NL}");
2171 bool have_space = (i > 0);
2187 curr_lexer->mark_previous_token_trailing_space ();
2213 #line 843 "../libinterp/parse-tree/lex.ll"
2215 curr_lexer->lexer_debug (
"<LINE_COMMENT_START>{ANY_INCLUDING_NL}");
2267 #line 896 "../libinterp/parse-tree/lex.ll"
2269 curr_lexer->lexer_debug (
"<LINE_COMMENT_START><<EOF>>");
2281 #line 908 "../libinterp/parse-tree/lex.ll"
2283 curr_lexer->lexer_debug (
"<DQ_STRING_START>\\\"\\\"");
2291 #line 915 "../libinterp/parse-tree/lex.ll"
2293 curr_lexer->lexer_debug (
"<DQ_STRING_START>\\\"");
2303 curr_lexer->m_looking_for_object_index =
true;
2304 curr_lexer->m_at_beginning_of_statement =
false;
2319 #line 940 "../libinterp/parse-tree/lex.ll"
2321 curr_lexer->lexer_debug (
"<DQ_STRING_START>\\\\[0-7]{1,3}");
2325 unsigned int result;
2326 sscanf (
yytext+1,
"%o", &result);
2333 "invalid octal escape sequence in character string",
2341 curr_lexer->m_string_text +=
static_cast<unsigned char> (result);
2346 #line 964 "../libinterp/parse-tree/lex.ll"
2348 curr_lexer->lexer_debug (
"<DQ_STRING_START>\\\\x[0-9a-fA-F]+");
2352 unsigned int result;
2353 sscanf (
yytext+2,
"%x", &result);
2359 curr_lexer->m_string_text +=
static_cast<unsigned char> (result);
2364 #line 979 "../libinterp/parse-tree/lex.ll"
2366 curr_lexer->lexer_debug (
"<DQ_STRING_START>\"\\\\a\"");
2374 #line 986 "../libinterp/parse-tree/lex.ll"
2376 curr_lexer->lexer_debug (
"<DQ_STRING_START>\"\\\\b\"");
2384 #line 993 "../libinterp/parse-tree/lex.ll"
2386 curr_lexer->lexer_debug (
"<DQ_STRING_START>\"\\\\f\"");
2394 #line 1000 "../libinterp/parse-tree/lex.ll"
2396 curr_lexer->lexer_debug (
"<DQ_STRING_START>\"\\\\n\"");
2404 #line 1007 "../libinterp/parse-tree/lex.ll"
2406 curr_lexer->lexer_debug (
"<DQ_STRING_START>\"\\\\r\"");
2414 #line 1014 "../libinterp/parse-tree/lex.ll"
2416 curr_lexer->lexer_debug (
"<DQ_STRING_START>\"\\\\t\"");
2424 #line 1021 "../libinterp/parse-tree/lex.ll"
2426 curr_lexer->lexer_debug (
"<DQ_STRING_START>\"\\\\v\"");
2435 #line 1028 "../libinterp/parse-tree/lex.ll"
2437 curr_lexer->lexer_debug (
"<DQ_STRING_START>(\\.\\.\\.){S}*{NL}");
2439 static const char *msg =
"'...' continuations in double-quoted character strings are obsolete and will not be allowed in a future version of Octave; please use '\\' instead";
2441 std::string nm =
curr_lexer->m_fcn_file_full_name;
2447 "%s; near line %d of file '%s'", msg,
2456 #line 1045 "../libinterp/parse-tree/lex.ll"
2458 curr_lexer->lexer_debug (
"<DQ_STRING_START>\\\\{S}+{NL}");
2460 static const char *msg =
"white space and comments after continuation markers in double-quoted character strings are obsolete and will not be allowed in a future version of Octave";
2462 std::string nm =
curr_lexer->m_fcn_file_full_name;
2468 "%s; near line %d of file '%s'", msg,
2477 #line 1062 "../libinterp/parse-tree/lex.ll"
2479 curr_lexer->lexer_debug (
"<DQ_STRING_START>\\\\{NL}");
2486 #line 1068 "../libinterp/parse-tree/lex.ll"
2488 curr_lexer->lexer_debug (
"<DQ_STRING_START>\\\\.");
2496 #line 1075 "../libinterp/parse-tree/lex.ll"
2498 curr_lexer->lexer_debug (
"<DQ_STRING_START>\\.");
2506 #line 1082 "../libinterp/parse-tree/lex.ll"
2508 curr_lexer->lexer_debug (
"<DQ_STRING_START>[^\\.\\\\\\r\\n\\\"]+");
2517 #line 1089 "../libinterp/parse-tree/lex.ll"
2519 curr_lexer->lexer_debug (
"<DQ_STRING_START>{NL}");
2524 "unterminated character string constant",
2539 #line 1109 "../libinterp/parse-tree/lex.ll"
2541 curr_lexer->lexer_debug (
"<SQ_STRING_START>\\'\\'");
2549 #line 1116 "../libinterp/parse-tree/lex.ll"
2551 curr_lexer->lexer_debug (
"<SQ_STRING_START>\\'");
2561 curr_lexer->m_looking_for_object_index =
true;
2562 curr_lexer->m_at_beginning_of_statement =
false;
2577 #line 1141 "../libinterp/parse-tree/lex.ll"
2579 curr_lexer->lexer_debug (
"<SQ_STRING_START>[^\\'\\n\\r]+");
2588 #line 1148 "../libinterp/parse-tree/lex.ll"
2590 curr_lexer->lexer_debug (
"<SQ_STRING_START>{NL}");
2595 "unterminated character string constant",
2610 #line 1168 "../libinterp/parse-tree/lex.ll"
2612 curr_lexer->lexer_debug (
"<FQ_IDENT_START>{FQIDENT}{S}*");
2618 int id_tok =
curr_lexer->handle_fq_identifier ();
2622 curr_lexer->m_looking_for_object_index =
true;
2624 return curr_lexer->count_token_internal (id_tok);
2630 #line 1185 "../libinterp/parse-tree/lex.ll"
2632 curr_lexer->lexer_debug (
"<FQ_IDENT_START>{S}+");
2636 curr_lexer->mark_previous_token_trailing_space ();
2642 #line 1193 "../libinterp/parse-tree/lex.ll"
2644 curr_lexer->lexer_debug (
"<FQ_IDENT_START>(\\.\\.\\.){ANY_EXCEPT_NL}*{NL}");
2652 #line 1199 "../libinterp/parse-tree/lex.ll"
2654 curr_lexer->lexer_debug (
"<FQ_IDENT_START>{ANY_INCLUDING_NL}");
2668 #line 1213 "../libinterp/parse-tree/lex.ll"
2672 if (
curr_lexer->previous_token_may_be_command ()
2673 &&
curr_lexer->space_follows_previous_token ())
2680 int tok =
curr_lexer->previous_token_value ();
2683 &&
curr_lexer->space_follows_previous_token ()
2684 && ! (tok ==
'[' || tok ==
'{'
2706 #line 1248 "../libinterp/parse-tree/lex.ll"
2709 #line 1248 "../libinterp/parse-tree/lex.ll"
2711 curr_lexer->lexer_debug (
"{D}{D_}*/\\.[\\*/\\\\^\\']|{NUMBER}");
2713 if (
curr_lexer->previous_token_may_be_command ()
2714 &&
curr_lexer->space_follows_previous_token ())
2721 int tok =
curr_lexer->previous_token_value ();
2724 &&
curr_lexer->space_follows_previous_token ()
2725 && ! (tok ==
'[' || tok ==
'{'
2745 #line 1282 "../libinterp/parse-tree/lex.ll"
2749 curr_lexer->mark_previous_token_trailing_space ();
2758 #line 1292 "../libinterp/parse-tree/lex.ll"
2760 curr_lexer->lexer_debug (
"\\.\\.\\.{ANY_EXCEPT_NL}*{NL}");
2770 #line 1303 "../libinterp/parse-tree/lex.ll"
2774 #line 1303 "../libinterp/parse-tree/lex.ll"
2776 curr_lexer->lexer_debug (
"\\\\{S}*{NL}|\\\\{S}*{CCHAR}{ANY_EXCEPT_NL}*{NL}");
2778 static const char *msg =
"using continuation marker \\ outside of double quoted strings is deprecated and will be removed from a future version of Octave, use ... instead";
2780 std::string nm =
curr_lexer->m_fcn_file_full_name;
2786 "%s; near line %d of file '%s'", msg,
2802 #line 1324 "../libinterp/parse-tree/lex.ll"
2815 #line 1335 "../libinterp/parse-tree/lex.ll"
2822 #line 1339 "../libinterp/parse-tree/lex.ll"
2832 #line 1347 "../libinterp/parse-tree/lex.ll"
2834 curr_lexer->lexer_debug (
"{FQIDENT}{S}*@{S}*{FQIDENT}");
2836 if (
curr_lexer->previous_token_may_be_command ())
2845 std::string txt =
yytext;
2847 size_t at_or_dot_pos = txt.find_first_of (
"@.");
2849 if (at_or_dot_pos != std::string::npos)
2851 size_t spc_pos = txt.find_first_of (
" \t");
2853 if (spc_pos != std::string::npos && spc_pos < at_or_dot_pos)
2856 curr_lexer->m_filepos.increment_column (spc_pos);
2863 curr_lexer->m_looking_for_object_index =
true;
2864 curr_lexer->m_at_beginning_of_statement =
false;
2866 return curr_lexer->handle_superclass_identifier ();
2875 #line 1388 "../libinterp/parse-tree/lex.ll"
2877 curr_lexer->lexer_debug (
"\\?{S}*{FQIDENT}");
2879 if (
curr_lexer->previous_token_may_be_command ()
2880 &&
curr_lexer->space_follows_previous_token ())
2889 int id_tok =
curr_lexer->handle_meta_identifier ();
2893 curr_lexer->m_looking_for_object_index =
true;
2895 return curr_lexer->count_token_internal (id_tok);
2901 #line 1413 "../libinterp/parse-tree/lex.ll"
2904 #line 1413 "../libinterp/parse-tree/lex.ll"
2906 curr_lexer->lexer_debug (
"\\@|\\@{S}*{FQIDENT}");
2908 if (
curr_lexer->previous_token_may_be_command ()
2909 &&
curr_lexer->space_follows_previous_token ())
2916 int tok_val =
curr_lexer->previous_token_value ();
2919 &&
curr_lexer->space_follows_previous_token ()
2920 && ! (tok_val ==
'[' || tok_val ==
'{'
2930 curr_lexer->m_at_beginning_of_statement =
false;
2932 std::string ident =
yytext;
2937 curr_lexer->m_looking_for_object_index =
false;
2943 ident = ident.substr (1);
2944 ident.erase (std::remove_if (ident.begin (), ident.end (),
2951 "function handles may not refer to keywords",
2956 curr_lexer->m_looking_for_object_index =
true;
2979 #line 1485 "../libinterp/parse-tree/lex.ll"
2987 curr_lexer->m_at_beginning_of_statement =
false;
2989 (
"bare newline inside parentheses");
2992 ||
curr_lexer->m_nesting_level.is_anon_fcn_body ())
2997 curr_lexer->m_at_beginning_of_statement =
true;
3001 else if (
curr_lexer->m_nesting_level.is_bracket_or_brace ())
3009 "unexpected internal lexer error",
3024 #line 1528 "../libinterp/parse-tree/lex.ll"
3028 if (
curr_lexer->previous_token_may_be_command ()
3029 &&
curr_lexer->space_follows_previous_token ())
3035 else if (
curr_lexer->m_at_beginning_of_statement)
3042 int tok =
curr_lexer->previous_token_value ();
3044 if (
curr_lexer->whitespace_is_significant ())
3046 if (
curr_lexer->space_follows_previous_token ())
3048 if (tok ==
'[' || tok ==
'{'
3062 if (tok ==
'[' || tok ==
'{'
3078 if (! tok || tok ==
'[' || tok ==
'{' || tok ==
'('
3099 #line 1601 "../libinterp/parse-tree/lex.ll"
3103 if (
curr_lexer->previous_token_may_be_command ()
3104 &&
curr_lexer->space_follows_previous_token ())
3112 int tok =
curr_lexer->previous_token_value ();
3114 if (
curr_lexer->whitespace_is_significant ())
3116 if (
curr_lexer->space_follows_previous_token ())
3118 if (tok ==
'[' || tok ==
'{'
3149 #line 1649 "../libinterp/parse-tree/lex.ll"
3154 #line 1650 "../libinterp/parse-tree/lex.ll"
3159 #line 1651 "../libinterp/parse-tree/lex.ll"
3164 #line 1652 "../libinterp/parse-tree/lex.ll"
3169 #line 1653 "../libinterp/parse-tree/lex.ll"
3174 #line 1654 "../libinterp/parse-tree/lex.ll"
3179 #line 1655 "../libinterp/parse-tree/lex.ll"
3184 #line 1656 "../libinterp/parse-tree/lex.ll"
3189 #line 1657 "../libinterp/parse-tree/lex.ll"
3194 #line 1658 "../libinterp/parse-tree/lex.ll"
3199 #line 1659 "../libinterp/parse-tree/lex.ll"
3204 #line 1660 "../libinterp/parse-tree/lex.ll"
3209 #line 1661 "../libinterp/parse-tree/lex.ll"
3214 #line 1662 "../libinterp/parse-tree/lex.ll"
3219 #line 1663 "../libinterp/parse-tree/lex.ll"
3224 #line 1664 "../libinterp/parse-tree/lex.ll"
3229 #line 1665 "../libinterp/parse-tree/lex.ll"
3234 #line 1666 "../libinterp/parse-tree/lex.ll"
3239 #line 1667 "../libinterp/parse-tree/lex.ll"
3247 #line 1673 "../libinterp/parse-tree/lex.ll"
3256 #line 1679 "../libinterp/parse-tree/lex.ll"
3261 #line 1680 "../libinterp/parse-tree/lex.ll"
3266 #line 1681 "../libinterp/parse-tree/lex.ll"
3271 #line 1682 "../libinterp/parse-tree/lex.ll"
3276 #line 1684 "../libinterp/parse-tree/lex.ll"
3280 bool at_beginning_of_statement
3281 = (! (
curr_lexer->whitespace_is_significant ()
3282 ||
curr_lexer->m_looking_at_object_index.front ()));
3284 return curr_lexer->handle_op (
';', at_beginning_of_statement);
3289 #line 1694 "../libinterp/parse-tree/lex.ll"
3294 #line 1695 "../libinterp/parse-tree/lex.ll"
3299 #line 1697 "../libinterp/parse-tree/lex.ll"
3304 #line 1698 "../libinterp/parse-tree/lex.ll"
3309 #line 1700 "../libinterp/parse-tree/lex.ll"
3313 bool at_beginning_of_statement
3314 = (! (
curr_lexer->whitespace_is_significant ()
3315 ||
curr_lexer->m_looking_at_object_index.front ()));
3317 return curr_lexer->handle_op (
',', at_beginning_of_statement);
3322 #line 1710 "../libinterp/parse-tree/lex.ll"
3331 #line 1716 "../libinterp/parse-tree/lex.ll"
3336 #line 1717 "../libinterp/parse-tree/lex.ll"
3341 #line 1719 "../libinterp/parse-tree/lex.ll"
3345 bool unput_comma =
false;
3348 &&
curr_lexer->space_follows_previous_token ())
3350 int tok =
curr_lexer->previous_token_value ();
3352 if (! (tok ==
'[' || tok ==
'{'
3371 curr_lexer->m_looking_at_object_index.push_front
3374 curr_lexer->m_looking_at_indirect_ref =
false;
3375 curr_lexer->m_looking_for_object_index =
false;
3376 curr_lexer->m_at_beginning_of_statement =
false;
3386 #line 1761 "../libinterp/parse-tree/lex.ll"
3394 curr_lexer->m_looking_at_object_index.pop_front ();
3396 curr_lexer->m_looking_for_object_index =
true;
3397 curr_lexer->m_at_beginning_of_statement =
false;
3401 curr_lexer->m_looking_at_anon_fcn_args =
false;
3402 curr_lexer->m_nesting_level.anon_fcn_body ();
3410 #line 1782 "../libinterp/parse-tree/lex.ll"
3414 if (
curr_lexer->previous_token_may_be_command ()
3415 &&
curr_lexer->space_follows_previous_token ())
3424 curr_lexer->m_looking_for_object_index =
false;
3425 curr_lexer->m_at_beginning_of_statement =
false;
3436 #line 1806 "../libinterp/parse-tree/lex.ll"
3440 curr_lexer->maybe_mark_previous_token_as_variable ();
3447 #line 1814 "../libinterp/parse-tree/lex.ll"
3452 #line 1815 "../libinterp/parse-tree/lex.ll"
3457 #line 1816 "../libinterp/parse-tree/lex.ll"
3462 #line 1817 "../libinterp/parse-tree/lex.ll"
3467 #line 1818 "../libinterp/parse-tree/lex.ll"
3472 #line 1819 "../libinterp/parse-tree/lex.ll"
3477 #line 1820 "../libinterp/parse-tree/lex.ll"
3482 #line 1821 "../libinterp/parse-tree/lex.ll"
3487 #line 1822 "../libinterp/parse-tree/lex.ll"
3492 #line 1823 "../libinterp/parse-tree/lex.ll"
3497 #line 1824 "../libinterp/parse-tree/lex.ll"
3502 #line 1825 "../libinterp/parse-tree/lex.ll"
3507 #line 1826 "../libinterp/parse-tree/lex.ll"
3512 #line 1827 "../libinterp/parse-tree/lex.ll"
3517 #line 1828 "../libinterp/parse-tree/lex.ll"
3522 #line 1829 "../libinterp/parse-tree/lex.ll"
3530 #line 1835 "../libinterp/parse-tree/lex.ll"
3534 bool unput_comma =
false;
3537 &&
curr_lexer->space_follows_previous_token ())
3539 int tok =
curr_lexer->previous_token_value ();
3541 if (! (tok ==
'[' || tok ==
'{'
3555 curr_lexer->m_looking_at_object_index.push_front
3559 curr_lexer->m_looking_for_object_index =
false;
3560 curr_lexer->m_at_beginning_of_statement =
false;
3572 #line 1874 "../libinterp/parse-tree/lex.ll"
3578 curr_lexer->m_looking_at_object_index.pop_front ();
3580 curr_lexer->m_looking_for_object_index =
true;
3581 curr_lexer->m_at_beginning_of_statement =
false;
3593 #line 1893 "../libinterp/parse-tree/lex.ll"
3607 std::ostringstream buf;
3609 buf <<
"invalid character '"
3611 <<
"' (ASCII " << c <<
")";
3627 #if defined (HAVE_PRAGMA_GCC_DIAGNOSTIC)
3629 # pragma GCC diagnostic ignored "-Wold-style-cast"
3630 # pragma GCC diagnostic ignored "-Wunused-parameter"
3635 #line 1933 "../libinterp/parse-tree/lex.ll"
3638 #line 3639 "libinterp/parse-tree/lex.cc"
3643 int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
3676 yyg->
yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
3693 if ( yy_next_state )
3697 yy_current_state = yy_next_state;
3704 goto yy_find_action;
3714 if (
yywrap( yyscanner ) )
3741 yyg->yytext_ptr + yy_amount_of_matched_text;
3757 goto yy_find_action;
3764 "fatal flex scanner internal error--no action found" );
3781 char *source = yyg->yytext_ptr;
3782 int number_to_move, i;
3787 "fatal flex scanner internal error--end of buffer missed" );
3811 number_to_move = (int) (yyg->
yy_c_buf_p - yyg->yytext_ptr - 1);
3813 for ( i = 0; i < number_to_move; ++i )
3814 *(dest++) = *(source++);
3827 while ( num_to_read <= 0 )
3833 int yy_c_buf_p_offset =
3840 if ( new_size <= 0 )
3856 "fatal error - scanner input buffer overflow" );
3900 YY_FATAL_ERROR(
"out of dynamic memory in yy_get_next_buffer()" );
3933 while (
yy_chk[
yy_base[yy_current_state] + yy_c] != yy_current_state )
3935 yy_current_state = (int)
yy_def[yy_current_state];
3936 if ( yy_current_state >= 308 )
3939 yy_current_state =
yy_nxt[
yy_base[yy_current_state] + yy_c];
3942 return yy_current_state;
3962 while (
yy_chk[
yy_base[yy_current_state] + yy_c] != yy_current_state )
3964 yy_current_state = (int)
yy_def[yy_current_state];
3965 if ( yy_current_state >= 308 )
3968 yy_current_state =
yy_nxt[
yy_base[yy_current_state] + yy_c];
3969 yy_is_jam = (yy_current_state == 307);
3972 return yy_is_jam ? 0 : yy_current_state;
3987 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
3997 *--dest = *--source;
3999 yy_cp += (int) (dest - source);
4000 yy_bp += (int) (dest - source);
4004 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
4008 *--yy_cp = (char) c;
4010 yyg->yytext_ptr = yy_bp;
4019 static int yyinput (
yyscan_t yyscanner)
4042 int offset = (int) (yyg->
yy_c_buf_p - yyg->yytext_ptr);
4065 if (
yywrap( yyscanner ) )
4071 return yyinput(yyscanner);
4073 return input(yyscanner);
4205 yyfree( (
void *) b , yyscanner );
4274 if (new_buffer == NULL)
4338 YY_FATAL_ERROR(
"out of dynamic memory in yyensure_buffer_stack()" );
4358 YY_FATAL_ERROR(
"out of dynamic memory in yyensure_buffer_stack()" );
4431 buf = (
char *)
yyalloc(
n , yyscanner );
4435 for ( i = 0; i < _yybytes_len; ++i )
4436 buf[i] = yybytes[i];
4452 #ifndef YY_EXIT_FAILURE
4453 #define YY_EXIT_FAILURE 2
4460 fprintf( stderr,
"%s\n", msg );
4471 int yyless_macro_arg = (n); \
4472 YY_LESS_LINENO(yyless_macro_arg);\
4473 yytext[yyleng] = yyg->yy_hold_char; \
4474 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
4475 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
4476 *yyg->yy_c_buf_p = '\0'; \
4477 yyleng = yyless_macro_arg; \
4647 if (ptr_yy_globals == NULL){
4654 if (*ptr_yy_globals == NULL){
4660 memset(*ptr_yy_globals,0x00,
sizeof(
struct yyguts_t));
4678 if (ptr_yy_globals == NULL){
4685 if (*ptr_yy_globals == NULL){
4692 memset(*ptr_yy_globals,0x00,
sizeof(
struct yyguts_t));
4757 yyfree ( yyscanner , yyscanner );
4767 static void yy_flex_strncpy (
char* s1,
const char * s2,
int n ,
yyscan_t yyscanner)
4773 for ( i = 0; i <
n; ++i )
4778 #ifdef YY_NEED_STRLEN
4779 static int yy_flex_strlen (
const char * s ,
yyscan_t yyscanner)
4782 for (
n = 0; s[
n]; ++
n )
4789 #define YYTABLES_NAME "yytables"
4791 #line 1933 "../libinterp/parse-tree/lex.ll"
4794 #if defined (HAVE_PRAGMA_GCC_DIAGNOSTIC)
4796 # pragma GCC diagnostic pop
4808 return std::realloc (ptr, size);
4954 std::cerr <<
"SPACE";
4975 int nargin = args.length ();
4993 if (! (kword ==
"set" || kword ==
"get"
4994 || kword ==
"enumeration" || kword ==
"events"
4995 || kword ==
"methods" || kword ==
"properties"))
5005 std::string
name = args(0).xstring_value (
"iskeyword: NAME must be a string");
5040 m_frame_stack.pop_front ();
5049 return m_frame_stack.front ();
5055 size_t sz = size ();
5169 return (tok ==
'+' || tok ==
'-' || tok ==
'@'
5170 || tok ==
',' || tok ==
';' || tok ==
'*' || tok ==
'/'
5171 || tok ==
':' || tok ==
'=' || tok ==
ADD_EQ
5213 for (
const auto& var : lst)
5227 size_t offset = s.find_first_not_of (
" \t\n\r");
5229 return (offset != std::string::npos
5230 && (s.substr (offset, 9) ==
"Copyright"
5231 || s.substr (offset, 6) ==
"Author"
5232 || s.substr (offset, 23) ==
"SPDX-License-Identifier"));
5238 return ((! s.empty ()) && (s[0] ==
'!'));
5257 static const char *
const eol =
"\n";
5262 size_t newline_pos = m_buffer.find (
'\n', m_offset);
5263 len = (newline_pos != std::string::npos
5264 ? newline_pos - m_offset + 1
5265 : (max_size > m_chars_left ? m_chars_left : max_size));
5268 len = max_size > m_chars_left ? m_chars_left : max_size;
5271 memcpy (buf, m_buffer.c_str () + m_offset,
len);
5273 m_chars_left -=
len;
5279 if (m_chars_left == 0 && buf[
len-1] !=
'\n')
5330 #define OCTAVE_YYG \
5331 struct yyguts_t *yyg = static_cast<struct yyguts_t*> (m_scanner)
5382 warning (
"block comment open at end of input");
5386 warning (
"near line %d of file '%s.m'",
5418 std::cerr << std::endl;
5431 std::cerr << std::endl;
5453 std::cerr << std::endl;
5521 int slen = s.length ();
5533 token *tok_val =
nullptr;
5770 p2 = s.find (
'.', p1);
5772 if (p2 != std::string::npos)
5774 s_part = s.substr (p1, p2 - p1);
5778 s_part = s.substr (p1);
5783 while (p2 != std::string::npos);
5800 return (
len > 2 && s[0] ==
'0' && (s[1] ==
'b' || s[1] ==
'B'));
5806 return (
len > 2 && s[0] ==
'0' && (s[1] ==
'x' || s[1] ==
'X'));
5820 char *tmptxt =
strsave (yytxt);
5821 char *rptr = tmptxt;
5822 char *wptr = tmptxt;
5826 wptr += (*wptr !=
'_');
5832 uintmax_t long_int_value;
5834 nread = sscanf (tmptxt,
"%jx", &long_int_value);
5836 value =
static_cast<double> (long_int_value);
5840 uintmax_t long_int_value = 0;
5842 for (
size_t i = 0; i <
strlen (tmptxt); i++)
5844 if (tmptxt[i] ==
'0')
5845 long_int_value <<= 1;
5846 else if (tmptxt[i] ==
'1')
5848 long_int_value <<= 1;
5849 long_int_value += 1;
5853 value =
static_cast<double> (long_int_value);
5859 char *idx = strpbrk (tmptxt,
"Dd");
5864 nread = sscanf (tmptxt,
"%lf", &value);
5871 assert (nread == 1);
5888 if (yytxt[0] ==
'\\')
5893 bool have_space =
false;
5894 while (offset < yylng)
5896 char c = yytxt[offset];
5909 bool have_comment =
false;
5910 while (offset < yylng)
5912 char c = yytxt[offset];
5913 if (c ==
'#' || c ==
'%')
5915 have_comment =
true;
5971 if (bracket_type ==
']')
5973 else if (bracket_type ==
'}')
5993 return (space_before && ! space_after
6004 txt.erase (std::remove_if (txt.begin (), txt.end (),
is_space_or_tab),
6007 size_t pos = txt.find (
"@");
6009 std::string meth = txt.substr (0, pos);
6010 std::string cls = txt.substr (pos + 1);
6016 "method, class, and package names may not be keywords",
6036 txt.erase (std::remove_if (txt.begin (), txt.end (),
is_space_or_tab),
6040 std::string cls = txt.substr (1);
6048 "class and package names may not be keywords",
6067 txt.erase (std::remove_if (txt.begin (), txt.end (),
is_space_or_tab),
6077 "function, method, class, and package names may not be keywords",
6152 || ident ==
"e" || ident ==
"pi"
6153 || ident ==
"I" || ident ==
"i"
6154 || ident ==
"J" || ident ==
"j"
6155 || ident ==
"Inf" || ident ==
"inf"
6156 || ident ==
"NaN" || ident ==
"nan"))
6178 "potential auto-insertion of '%c' near line %d",
6182 "potential auto-insertion of '%c' near line %d of file %s",
6193 "single quote delimited string near line %d",
6197 "single quote delimited string near line %d of file %s",
6208 "Octave language extension used: %s",
6212 "Octave language extension used: %s near line %d offile %s",
6233 int n = t.length ();
6243 lval->tok_val = tok;
6251 return lval->tok_val;
6265 case '=': std::cerr <<
"'='\n";
break;
6266 case ':': std::cerr <<
"':'\n";
break;
6267 case '-': std::cerr <<
"'-'\n";
break;
6268 case '+': std::cerr <<
"'+'\n";
break;
6269 case '*': std::cerr <<
"'*'\n";
break;
6270 case '/': std::cerr <<
"'/'\n";
break;
6271 case ADD_EQ: std::cerr <<
"ADD_EQ\n";
break;
6272 case SUB_EQ: std::cerr <<
"SUB_EQ\n";
break;
6273 case MUL_EQ: std::cerr <<
"MUL_EQ\n";
break;
6274 case DIV_EQ: std::cerr <<
"DIV_EQ\n";
break;
6275 case LEFTDIV_EQ: std::cerr <<
"LEFTDIV_EQ\n";
break;
6276 case POW_EQ: std::cerr <<
"POW_EQ\n";
break;
6277 case EMUL_EQ: std::cerr <<
"EMUL_EQ\n";
break;
6278 case EDIV_EQ: std::cerr <<
"EDIV_EQ\n";
break;
6279 case ELEFTDIV_EQ: std::cerr <<
"ELEFTDIV_EQ\n";
break;
6280 case EPOW_EQ: std::cerr <<
"EPOW_EQ\n";
break;
6281 case AND_EQ: std::cerr <<
"AND_EQ\n";
break;
6282 case OR_EQ: std::cerr <<
"OR_EQ\n";
break;
6283 case EXPR_AND_AND: std::cerr <<
"EXPR_AND_AND\n";
break;
6284 case EXPR_OR_OR: std::cerr <<
"EXPR_OR_OR\n";
break;
6285 case EXPR_AND: std::cerr <<
"EXPR_AND\n";
break;
6286 case EXPR_OR: std::cerr <<
"EXPR_OR\n";
break;
6287 case EXPR_NOT: std::cerr <<
"EXPR_NOT\n";
break;
6288 case EXPR_LT: std::cerr <<
"EXPR_LT\n";
break;
6289 case EXPR_LE: std::cerr <<
"EXPR_LE\n";
break;
6290 case EXPR_EQ: std::cerr <<
"EXPR_EQ\n";
break;
6291 case EXPR_NE: std::cerr <<
"EXPR_NE\n";
break;
6292 case EXPR_GE: std::cerr <<
"EXPR_GE\n";
break;
6293 case EXPR_GT: std::cerr <<
"EXPR_GT\n";
break;
6294 case LEFTDIV: std::cerr <<
"LEFTDIV\n";
break;
6295 case EMUL: std::cerr <<
"EMUL\n";
break;
6296 case EDIV: std::cerr <<
"EDIV\n";
break;
6297 case ELEFTDIV: std::cerr <<
"ELEFTDIV\n";
break;
6298 case EPLUS: std::cerr <<
"EPLUS\n";
break;
6299 case EMINUS: std::cerr <<
"EMINUS\n";
break;
6300 case HERMITIAN: std::cerr <<
"HERMITIAN\n";
break;
6301 case TRANSPOSE: std::cerr <<
"TRANSPOSE\n";
break;
6302 case PLUS_PLUS: std::cerr <<
"PLUS_PLUS\n";
break;
6303 case MINUS_MINUS: std::cerr <<
"MINUS_MINUS\n";
break;
6304 case POW: std::cerr <<
"POW\n";
break;
6305 case EPOW: std::cerr <<
"EPOW\n";
break;
6311 std::cerr << (tok ==
NUM ?
"NUM" :
"IMAG_NUM")
6312 <<
" [" << tok_val->
number () <<
"]\n";
6319 std::cerr <<
"STRUCT_ELT [" << tok_val->
text () <<
"]\n";
6327 std::cerr <<
"NAME [" << sr.
name () <<
"]\n";
6331 case END: std::cerr <<
"END\n";
break;
6338 std::cerr << (tok ==
DQ_STRING ?
"DQ_STRING" :
"SQ_STRING")
6339 <<
" [" << tok_val->
text () <<
"]\n";
6343 case FOR: std::cerr <<
"FOR\n";
break;
6344 case WHILE: std::cerr <<
"WHILE\n";
break;
6345 case DO: std::cerr <<
"DO\n";
break;
6346 case UNTIL: std::cerr <<
"UNTIL\n";
break;
6347 case IF: std::cerr <<
"IF\n";
break;
6348 case ELSEIF: std::cerr <<
"ELSEIF\n";
break;
6349 case ELSE: std::cerr <<
"ELSE\n";
break;
6350 case SWITCH: std::cerr <<
"SWITCH\n";
break;
6351 case CASE: std::cerr <<
"CASE\n";
break;
6352 case OTHERWISE: std::cerr <<
"OTHERWISE\n";
break;
6353 case BREAK: std::cerr <<
"BREAK\n";
break;
6354 case CONTINUE: std::cerr <<
"CONTINUE\n";
break;
6355 case FUNC_RET: std::cerr <<
"FUNC_RET\n";
break;
6356 case UNWIND: std::cerr <<
"UNWIND\n";
break;
6357 case CLEANUP: std::cerr <<
"CLEANUP\n";
break;
6358 case TRY: std::cerr <<
"TRY\n";
break;
6359 case CATCH: std::cerr <<
"CATCH\n";
break;
6360 case GLOBAL: std::cerr <<
"GLOBAL\n";
break;
6361 case PERSISTENT: std::cerr <<
"PERSISTENT\n";
break;
6362 case FCN_HANDLE: std::cerr <<
"FCN_HANDLE\n";
break;
6363 case END_OF_INPUT: std::cerr <<
"END_OF_INPUT\n\n";
break;
6364 case LEXICAL_ERROR: std::cerr <<
"LEXICAL_ERROR\n\n";
break;
6365 case FCN: std::cerr <<
"FCN\n";
break;
6366 case INPUT_FILE: std::cerr <<
"INPUT_FILE\n";
break;
6368 case METAQUERY: std::cerr <<
"METAQUERY\n";
break;
6369 case GET: std::cerr <<
"GET\n";
break;
6370 case SET: std::cerr <<
"SET\n";
break;
6371 case PROPERTIES: std::cerr <<
"PROPERTIES\n";
break;
6372 case METHODS: std::cerr <<
"METHODS\n";
break;
6373 case EVENTS: std::cerr <<
"EVENTS\n";
break;
6374 case CLASSDEF: std::cerr <<
"CLASSDEF\n";
break;
6375 case '\n': std::cerr <<
"\\n\n";
break;
6376 case '\r': std::cerr <<
"\\r\n";
break;
6377 case '\t': std::cerr <<
"TAB\n";
break;
6380 if (tok < 256 && tok > 31)
6381 std::cerr << static_cast<char> (tok) <<
"\n";
6383 std::cerr <<
"UNKNOWN(" << tok <<
")\n";
6392 error (
"fatal lexer error: %s", msg);
6423 std::cerr << std::endl;
6427 std::cerr <<
"P: " << pattern << std::endl;
6428 std::cerr <<
"T: " <<
flex_yytext () << std::endl;
6477 std::cerr <<
"INITIAL" << std::endl;
6481 std::cerr <<
"COMMAND_START" << std::endl;
6485 std::cerr <<
"MATRIX_START" << std::endl;
6489 std::cerr <<
"INPUT_FILE_START" << std::endl;
6493 std::cerr <<
"BLOCK_COMMENT_START" << std::endl;
6497 std::cerr <<
"LINE_COMMENT_START" << std::endl;
6501 std::cerr <<
"DQ_STRING_START" << std::endl;
6505 std::cerr <<
"SQ_STRING_START" << std::endl;
6509 std::cerr <<
"FQ_IDENT_START" << std::endl;
6513 std::cerr <<
"UNKNOWN START STATE!" << std::endl;
6523 bool unput_comma =
false;
6532 if (! (prev_tok ==
'[' || prev_tok ==
'{'
6534 || ((tok ==
'+' || tok ==
'-') && space_after)))
6634 std::cerr << std::endl;
6724 assert (max_size > 0);
6726 buf[0] =
static_cast<char> (1);
void warn_language_extension_operator(const std::string &op)
virtual bool input_from_eval_string(void) const
int handle_token(int tok, token *tok_val=nullptr)
void lexer_debug(const char *pattern)
bool display_tokens(void) const
int handle_superclass_identifier(void)
bool whitespace_is_significant(void)
void maybe_warn_separator_insert(char sep)
void update_token_positions(int tok_len)
int handle_end_of_input(void)
void display_start_state(void) const
void begin_string(int state)
int handle_op(int tok, bool bos=false, bool compat=true)
int start_state(void) const
bool is_variable(const std::string &name, const symbol_scope &scope)
comment_buffer m_comment_buf
std::stack< int > start_state_stack
int make_keyword_token(const std::string &s)
bool fq_identifier_contains_keyword(const std::string &s)
token * current_token(void)
void clear_start_state(void)
int handle_meta_identifier(void)
void xunput(char c, char *buf)
void pop_start_state(void)
void handle_continuation(void)
size_t pending_token_count(void) const
void fatal_error(const char *msg)
int count_token_internal(int tok)
int handle_close_bracket(int bracket_type)
virtual ~base_lexer(void)
int finish_command_arg(void)
bool inside_any_object_index(void)
void maybe_warn_language_extension_comment(char c)
int handle_fq_identifier(void)
void increment_token_count(void)
void warn_single_quote_string(void)
virtual bool input_from_file(void) const
bool maybe_unput_comma_before_unary_op(int tok)
bool debug_flag(void) const
void warn_language_extension(const std::string &msg)
void finish_comment(comment_elt::comment_type typ)
bool looks_like_command_arg(void)
void display_token(int tok)
void warn_language_extension_continuation(void)
int handle_identifier(void)
bool looking_at_space(void)
void push_start_state(int state)
bool input_from_tmp_history_file(void)
static std::string decode_prompt_string(const std::string &s)
void increment_column(int val=1)
octave_value input_from_tmp_file(const octave_value_list &args, int nargout)
bool is_variable(const std::string &name) const
settings & get_settings(void)
input_system & get_input_system(void)
bool at_top_level(void) const
history_system & get_history_system(void)
bool interactive(void) const
symbol_scope get_current_scope(void) const
int fill_flex_buffer(char *buf, unsigned int max_size)
symbol_scope parent_scope(void) const
symbol_scope curr_scope(void) const
std::deque< symbol_scope > m_frame_stack
std::string m_comment_text
bool m_looking_at_matrix_or_assign_lhs
std::stack< bool > m_parsed_function_name
int m_command_arg_paren_count
std::string m_current_input_line
bbp_nesting_level m_nesting_level
bool space_follows_previous_token(void) const
bool m_looking_at_return_list
int m_block_comment_nesting_level
bool m_looking_at_decl_list
bool m_looking_at_anon_fcn_args
int previous_token_value(void) const
bool m_reading_classdef_file
bool previous_token_value_is(int tok_val) const
bool m_parsing_classdef_superclass
bool m_parsing_classdef_decl
void maybe_mark_previous_token_as_variable(void)
interpreter & m_interpreter
bool m_allow_command_syntax
bool m_looking_at_parameter_list
bool previous_token_is_binop(void) const
bool m_parsing_anon_fcn_body
bool m_parsing_classdef_get_method
bool m_parsing_classdef_set_method
bool m_reading_script_file
symbol_table_context m_symtab_context
std::string m_string_text
bool m_buffer_function_text
bool m_looking_at_initializer_expression
std::string m_fcn_file_full_name
bool m_maybe_classdef_get_set_method
std::list< bool > m_looking_at_object_index
std::string m_package_name
bool m_quote_is_transpose
bool previous_token_is_keyword(void) const
int m_looking_at_function_handle
bool m_parsing_class_method
void mark_previous_token_trailing_space(void)
bool previous_token_may_be_command(void) const
std::set< std::string > m_pending_local_variables
bool m_looking_for_object_index
bool m_looking_at_indirect_ref
void mark_as_variables(const std::list< std::string > &lst)
bool m_at_beginning_of_statement
std::string m_function_text
std::string m_fcn_file_name
void append_input(const std::string &input, bool eof)
int fill_flex_buffer(char *buf, unsigned int max_size)
octave_value display_tokens(const octave_value_list &args, int nargout)
octave_value lexer_debug_flag(const octave_value_list &args, int nargout)
void increment_token_count(void)
std::string name(void) const
symbol_record insert(const std::string &name)
bool token_value_is(int tv) const
void mark_trailing_space(void)
bool space_follows_token(void) const
std::string text(void) const
bool iskeyword(void) const
bool is_symbol(void) const
double number(void) const
void mark_may_be_command(void)
bool may_be_command(void) const
int token_value(void) const
std::string symbol_name(void) const
symbol_record sym_rec(void) const
static const struct octave_kw * in_word_set(const char *str, size_t len)
string_vector & sort(bool make_uniq=false)
void resize(octave_idx_type n, const std::string &rfv="")
OCTINTERP_API void print_usage(void)
#define DEFUN(name, args_name, nargout_name, doc)
Macro to define a builtin function.
void warning(const char *fmt,...)
void warning_with_id(const char *id, const char *fmt,...)
void error(const char *fmt,...)
#define panic_impossible()
#define yy_load_buffer_state
#define CMD_OR_COMPUTED_ASSIGN_OP(PATTERN, TOK)
static const flex_int16_t yy_def[348]
unsigned char flex_uint8_t
static bool looks_like_bin(const char *s, int len)
static int yy_init_globals(yyscan_t yyscanner)
static const flex_int16_t yy_nxt[1105]
static int yy_get_next_buffer(yyscan_t yyscanner)
unsigned int flex_uint32_t
static yy_state_type yy_try_NUL_trans(yy_state_type current_state, yyscan_t yyscanner)
void * octave_alloc(yy_size_t, yyscan_t yyscanner)
static void display_character(char c)
#define yypush_buffer_state
struct yy_buffer_state * YY_BUFFER_STATE
static bool is_space_or_tab_or_eol(char c)
#define CMD_OR_UNARY_OP(PATTERN, TOK, COMPAT)
#define YY_RESTORE_YY_MORE_OFFSET
static int input(yyscan_t yyscanner)
static const YY_CHAR yy_meta[55]
#define HANDLE_EOB_OR_EOF(STATUS)
static bool looks_like_shebang(const std::string &s)
#define yyensure_buffer_stack
void octave_free(void *, yyscan_t yyscanner)
#define EOB_ACT_END_OF_FILE
static void yyunput(int c, char *buf_ptr, yyscan_t yyscanner)
#define yypop_buffer_state
#define YY_CURRENT_BUFFER_LVALUE
#define HANDLE_IDENTIFIER(pattern, get_set)
static bool looks_like_hex(const char *s, int len)
#define yy_switch_to_buffer
static void yy_fatal_error(const char *msg, yyscan_t yyscanner)
static bool is_space_or_tab(char c)
#define YY_CURRENT_BUFFER
#define LINE_COMMENT_START
#define YY_INPUT(buf, result, max_size)
#define YY_STATE_EOF(state)
#define YY_END_OF_BUFFER_CHAR
#define YY_FATAL_ERROR(msg)
unsigned short int flex_uint16_t
#define YY_DO_BEFORE_ACTION
static bool looks_like_copyright(const std::string &s)
static const flex_int16_t yy_accept[308]
#define EOB_ACT_LAST_MATCH
#define YY_BUFFER_EOF_PENDING
static const YY_CHAR yy_ec[256]
#define EOB_ACT_CONTINUE_SCAN
#define HANDLE_STRING_CONTINUATION
static const flex_int16_t yy_chk[1105]
#define CMD_OR_OP(PATTERN, TOK, COMPAT)
void * octave_realloc(void *, yy_size_t, yyscan_t yyscanner)
static yy_state_type yy_get_previous_state(yyscan_t yyscanner)
#define BLOCK_COMMENT_START
static const flex_int16_t yy_base[348]
static char * strsave(const char *s)
static uint32_t state[624]
bool iskeyword(const std::string &s)
const char * undo_string_escape(char c)
@ unwind_protect_cleanup_kw
static const struct octave_kw wordlist[]
T::size_type strlen(const typename T::value_type *str)
unsigned char flex_uint8_t
octave_value::octave_value(const Array< char > &chm, char type) return retval
int yy_bs_column
The column count.
int yy_bs_lineno
The line count.
int yy_did_buffer_switch_on_eof
size_t yy_buffer_stack_max
capacity of stack.
char * yy_last_accepting_cpos
yy_state_type yy_last_accepting_state
YY_BUFFER_STATE * yy_buffer_stack
Stack as an array.
octave::base_lexer * yyextra_r
size_t yy_buffer_stack_top
index of top of stack.