1 #line 2 "input_lexer.cc"
2
3 #line 4 "input_lexer.cc"
4
5 #define YY_INT_ALIGNED short int
6
7 /* A lexical scanner generated by flex */
8
9 #define FLEX_SCANNER
10 #define YY_FLEX_MAJOR_VERSION 2
11 #define YY_FLEX_MINOR_VERSION 5
12 #define YY_FLEX_SUBMINOR_VERSION 35
13 #if YY_FLEX_SUBMINOR_VERSION > 0
14 #define FLEX_BETA
15 #endif
16
17 /* First, we deal with platform-specific or compiler-specific issues. */
18
19 /* begin standard C headers. */
20 #include <stdio.h>
21 #include <string.h>
22 #include <errno.h>
23 #include <stdlib.h>
24
25 /* end standard C headers. */
26
27 /* flex integer type definitions */
28
29 #ifndef FLEXINT_H
30 #define FLEXINT_H
31
32 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
33
34 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
35
36 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
37 * if you want the limit (max/min) macros for int types.
38 */
39 #ifndef __STDC_LIMIT_MACROS
40 #define __STDC_LIMIT_MACROS 1
41 #endif
42
43 #include <inttypes.h>
44 typedef int8_t flex_int8_t;
45 typedef uint8_t flex_uint8_t;
46 typedef int16_t flex_int16_t;
47 typedef uint16_t flex_uint16_t;
48 typedef int32_t flex_int32_t;
49 typedef uint32_t flex_uint32_t;
50 #else
51 typedef signed char flex_int8_t;
52 typedef short int flex_int16_t;
53 typedef int flex_int32_t;
54 typedef unsigned char flex_uint8_t;
55 typedef unsigned short int flex_uint16_t;
56 typedef unsigned int flex_uint32_t;
57
58 /* Limits of integral types. */
59 #ifndef INT8_MIN
60 #define INT8_MIN (-128)
61 #endif
62 #ifndef INT16_MIN
63 #define INT16_MIN (-32767-1)
64 #endif
65 #ifndef INT32_MIN
66 #define INT32_MIN (-2147483647-1)
67 #endif
68 #ifndef INT8_MAX
69 #define INT8_MAX (127)
70 #endif
71 #ifndef INT16_MAX
72 #define INT16_MAX (32767)
73 #endif
74 #ifndef INT32_MAX
75 #define INT32_MAX (2147483647)
76 #endif
77 #ifndef UINT8_MAX
78 #define UINT8_MAX (255U)
79 #endif
80 #ifndef UINT16_MAX
81 #define UINT16_MAX (65535U)
82 #endif
83 #ifndef UINT32_MAX
84 #define UINT32_MAX (4294967295U)
85 #endif
86
87 #endif /* ! C99 */
88
89 #endif /* ! FLEXINT_H */
90
91 #ifdef __cplusplus
92
93 /* The "const" storage-class-modifier is valid. */
94 #define YY_USE_CONST
95
96 #else /* ! __cplusplus */
97
98 /* C99 requires __STDC__ to be defined as 1. */
99 #if defined (__STDC__)
100
101 #define YY_USE_CONST
102
103 #endif /* defined (__STDC__) */
104 #endif /* ! __cplusplus */
105
106 #ifdef YY_USE_CONST
107 #define yyconst const
108 #else
109 #define yyconst
110 #endif
111
112 /* Returned upon end-of-file. */
113 #define YY_NULL 0
114
115 /* Promotes a possibly negative, possibly signed char to an unsigned
116 * integer for use as an array index. If the signed char is negative,
117 * we want to instead treat it as an 8-bit unsigned char, hence the
118 * double cast.
119 */
120 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
121
122 /* An opaque pointer. */
123 #ifndef YY_TYPEDEF_YY_SCANNER_T
124 #define YY_TYPEDEF_YY_SCANNER_T
125 typedef void* yyscan_t;
126 #endif
127
128 /* For convenience, these vars (plus the bison vars far below)
129 are macros in the reentrant scanner. */
130 #define yyin yyg->yyin_r
131 #define yyout yyg->yyout_r
132 #define yyextra yyg->yyextra_r
133 #define yyleng yyg->yyleng_r
134 #define yytext yyg->yytext_r
135 #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
136 #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
137 #define yy_flex_debug yyg->yy_flex_debug_r
138
139 /* Enter a start condition. This macro really ought to take a parameter,
140 * but we do it the disgusting crufty way forced on us by the ()-less
141 * definition of BEGIN.
142 */
143 #define BEGIN yyg->yy_start = 1 + 2 *
144
145 /* Translate the current start state into a value that can be later handed
146 * to BEGIN to return to the state. The YYSTATE alias is for lex
147 * compatibility.
148 */
149 #define YY_START ((yyg->yy_start - 1) / 2)
150 #define YYSTATE YY_START
151
152 /* Action number for EOF rule of a given start state. */
153 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
154
155 /* Special action meaning "start processing a new file". */
156 #define YY_NEW_FILE giac_yyrestart(yyin ,yyscanner )
157
158 #define YY_END_OF_BUFFER_CHAR 0
159
160 /* Size of default input buffer. */
161 #ifndef YY_BUF_SIZE
162 #ifdef __ia64__
163 /* On IA-64, the buffer size is 16k, not 8k.
164 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
165 * Ditto for the __ia64__ case accordingly.
166 */
167 #define YY_BUF_SIZE 32768
168 #else
169 #define YY_BUF_SIZE 16384
170 #endif /* __ia64__ */
171 #endif
172
173 /* The state buf must be large enough to hold one state per character in the main buffer.
174 */
175 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
176
177 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
178 #define YY_TYPEDEF_YY_BUFFER_STATE
179 typedef struct yy_buffer_state *YY_BUFFER_STATE;
180 #endif
181
182 #define EOB_ACT_CONTINUE_SCAN 0
183 #define EOB_ACT_END_OF_FILE 1
184 #define EOB_ACT_LAST_MATCH 2
185
186 #define YY_LESS_LINENO(n)
187
188 /* Return all but the first "n" matched characters back to the input stream. */
189 #define yyless(n) \
190 do \
191 { \
192 /* Undo effects of setting up yytext. */ \
193 int yyless_macro_arg = (n); \
194 YY_LESS_LINENO(yyless_macro_arg);\
195 *yy_cp = yyg->yy_hold_char; \
196 YY_RESTORE_YY_MORE_OFFSET \
197 yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
198 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
199 } \
200 while ( 0 )
201
202 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
203
204 #ifndef YY_TYPEDEF_YY_SIZE_T
205 #define YY_TYPEDEF_YY_SIZE_T
206 typedef size_t yy_size_t;
207 #endif
208
209 #ifndef YY_STRUCT_YY_BUFFER_STATE
210 #define YY_STRUCT_YY_BUFFER_STATE
211 struct yy_buffer_state
212 {
213 FILE *yy_input_file;
214
215 char *yy_ch_buf; /* input buffer */
216 char *yy_buf_pos; /* current position in input buffer */
217
218 /* Size of input buffer in bytes, not including room for EOB
219 * characters.
220 */
221 yy_size_t yy_buf_size;
222
223 /* Number of characters read into yy_ch_buf, not including EOB
224 * characters.
225 */
226 int yy_n_chars;
227
228 /* Whether we "own" the buffer - i.e., we know we created it,
229 * and can realloc() it to grow it, and should free() it to
230 * delete it.
231 */
232 int yy_is_our_buffer;
233
234 /* Whether this is an "interactive" input source; if so, and
235 * if we're using stdio for input, then we want to use getc()
236 * instead of fread(), to make sure we stop fetching input after
237 * each newline.
238 */
239 int yy_is_interactive;
240
241 /* Whether we're considered to be at the beginning of a line.
242 * If so, '^' rules will be active on the next match, otherwise
243 * not.
244 */
245 int yy_at_bol;
246
247 int yy_bs_lineno; /**< The line count. */
248 int yy_bs_column; /**< The column count. */
249
250 /* Whether to try to fill the input buffer when we reach the
251 * end of it.
252 */
253 int yy_fill_buffer;
254
255 int yy_buffer_status;
256
257 #define YY_BUFFER_NEW 0
258 #define YY_BUFFER_NORMAL 1
259 /* When an EOF's been seen but there's still some text to process
260 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
261 * shouldn't try reading from the input source any more. We might
262 * still have a bunch of tokens to match, though, because of
263 * possible backing-up.
264 *
265 * When we actually see the EOF, we change the status to "new"
266 * (via giac_yyrestart()), so that the user can continue scanning by
267 * just pointing yyin at a new input file.
268 */
269 #define YY_BUFFER_EOF_PENDING 2
270
271 };
272 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
273
274 /* We provide macros for accessing buffer states in case in the
275 * future we want to put the buffer states in a more general
276 * "scanner state".
277 *
278 * Returns the top of the stack, or NULL.
279 */
280 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
281 ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
282 : NULL)
283
284 /* Same as previous macro, but useful when we know that the buffer stack is not
285 * NULL or when we need an lvalue. For internal use only.
286 */
287 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
288
289 void giac_yyrestart (FILE *input_file ,yyscan_t yyscanner );
290 void giac_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
291 YY_BUFFER_STATE giac_yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
292 void giac_yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
293 void giac_yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
294 void giac_yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
295 void giac_yypop_buffer_state (yyscan_t yyscanner );
296
297 static void giac_yyensure_buffer_stack (yyscan_t yyscanner );
298 static void giac_yy_load_buffer_state (yyscan_t yyscanner );
299 static void giac_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
300
301 #define YY_FLUSH_BUFFER giac_yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
302
303 YY_BUFFER_STATE giac_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
304 YY_BUFFER_STATE giac_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
305 YY_BUFFER_STATE giac_yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
306
307 void *giac_yyalloc (yy_size_t ,yyscan_t yyscanner );
308 void *giac_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
309 void giac_yyfree (void * ,yyscan_t yyscanner );
310
311 #define yy_new_buffer giac_yy_create_buffer
312
313 #define yy_set_interactive(is_interactive) \
314 { \
315 if ( ! YY_CURRENT_BUFFER ){ \
316 giac_yyensure_buffer_stack (yyscanner); \
317 YY_CURRENT_BUFFER_LVALUE = \
318 giac_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
319 } \
320 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
321 }
322
323 #define yy_set_bol(at_bol) \
324 { \
325 if ( ! YY_CURRENT_BUFFER ){\
326 giac_yyensure_buffer_stack (yyscanner); \
327 YY_CURRENT_BUFFER_LVALUE = \
328 giac_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
329 } \
330 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
331 }
332
333 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
334
335 /* Begin user sect3 */
336
337 #define giac_yywrap(n) 1
338 #define YY_SKIP_YYWRAP
339
340 typedef unsigned char YY_CHAR;
341
342 typedef int yy_state_type;
343
344 #define yytext_ptr yytext_r
345
346 static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
347 static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner);
348 static int yy_get_next_buffer (yyscan_t yyscanner );
349 static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
350
351 /* Done after the current pattern has been matched and before the
352 * corresponding action - sets up yytext.
353 */
354 #define YY_DO_BEFORE_ACTION \
355 yyg->yytext_ptr = yy_bp; \
356 yyleng = (size_t) (yy_cp - yy_bp); \
357 yyg->yy_hold_char = *yy_cp; \
358 *yy_cp = '\0'; \
359 yyg->yy_c_buf_p = yy_cp;
360
361 #define YY_NUM_RULES 439
362 #define YY_END_OF_BUFFER 440
363 /* This struct is not used in this scanner,
364 but its presence is necessary. */
365 struct yy_trans_info
366 {
367 flex_int32_t yy_verify;
368 flex_int32_t yy_nxt;
369 };
370 static yyconst flex_int16_t yy_accept[1387] =
371 { 0,
372 0, 0, 23, 23, 0, 0, 0, 0, 0, 0,
373 440, 438, 1, 2, 195, 3, 436, 152, 253, 207,
374 31, 98, 99, 228, 197, 96, 223, 232, 238, 409,
375 409, 34, 32, 90, 149, 91, 29, 167, 434, 434,
376 434, 304, 434, 434, 434, 434, 44, 434, 434, 434,
377 434, 434, 434, 434, 434, 434, 434, 434, 434, 100,
378 101, 261, 30, 16, 434, 434, 434, 434, 305, 434,
379 434, 434, 38, 434, 434, 434, 434, 434, 434, 434,
380 434, 434, 434, 434, 434, 434, 119, 179, 120, 208,
381 42, 434, 434, 434, 434, 434, 438, 434, 434, 23,
382
383 25, 24, 439, 437, 439, 15, 6, 5, 439, 18,
384 17, 19, 1, 136, 0, 0, 0, 0, 0, 0,
385 0, 0, 153, 254, 240, 150, 435, 103, 104, 0,
386 46, 45, 435, 121, 122, 173, 233, 243, 234, 0,
387 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
388 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
389 0, 0, 0, 0, 0, 0, 264, 230, 198, 199,
390 97, 102, 203, 0, 130, 204, 129, 235, 206, 225,
391 189, 250, 430, 265, 239, 22, 0, 248, 118, 428,
392 409, 410, 0, 0, 0, 0, 0, 0, 36, 35,
393
394 156, 0, 0, 0, 127, 143, 138, 163, 0, 164,
395 131, 162, 147, 128, 166, 168, 434, 434, 434, 434,
396 434, 434, 434, 434, 434, 434, 375, 434, 434, 434,
397 434, 434, 434, 434, 434, 434, 434, 434, 434, 322,
398 385, 434, 434, 434, 434, 184, 51, 434, 434, 50,
399 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
400 434, 434, 262, 245, 0, 0, 0, 0, 0, 0,
401 0, 0, 0, 0, 0, 0, 0, 0, 434, 434,
402 434, 434, 434, 294, 434, 434, 434, 434, 434, 434,
403 434, 376, 434, 434, 434, 434, 434, 434, 434, 434,
404
405 434, 434, 434, 434, 434, 67, 321, 434, 434, 434,
406 434, 434, 434, 434, 434, 434, 434, 57, 346, 434,
407 48, 434, 434, 434, 434, 434, 434, 434, 434, 434,
408 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
409 434, 434, 434, 434, 434, 434, 434, 434, 117, 244,
410 180, 33, 434, 211, 212, 434, 62, 39, 37, 49,
411 434, 434, 434, 434, 434, 434, 434, 0, 434, 434,
412 23, 24, 24, 26, 0, 437, 15, 4, 14, 7,
413 8, 12, 13, 9, 11, 10, 18, 0, 0, 420,
414 421, 419, 423, 422, 424, 255, 111, 112, 105, 106,
415
416 123, 124, 242, 435, 109, 110, 47, 0, 0, 0,
417 0, 154, 256, 0, 0, 236, 221, 226, 0, 251,
418 0, 144, 0, 0, 151, 0, 146, 0, 171, 0,
419 266, 0, 0, 0, 0, 0, 0, 0, 0, 0,
420 0, 0, 0, 0, 201, 133, 192, 431, 0, 241,
421 0, 21, 428, 429, 0, 0, 0, 432, 0, 426,
422 425, 427, 411, 0, 0, 0, 0, 247, 0, 132,
423 246, 175, 196, 434, 434, 434, 398, 434, 434, 434,
424 434, 434, 434, 434, 434, 434, 434, 316, 389, 434,
425 434, 434, 434, 434, 434, 434, 434, 434, 394, 434,
426
427 339, 434, 434, 434, 434, 434, 434, 434, 434, 397,
428 434, 365, 434, 434, 434, 434, 434, 188, 0, 0,
429 0, 0, 0, 0, 327, 0, 0, 0, 0, 0,
430 0, 183, 0, 0, 0, 0, 0, 0, 0, 434,
431 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
432 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
433 434, 434, 434, 315, 434, 434, 434, 434, 434, 434,
434 56, 434, 434, 434, 434, 332, 434, 434, 258, 341,
435 434, 338, 434, 434, 434, 434, 434, 434, 434, 434,
436 434, 263, 434, 434, 434, 434, 434, 434, 434, 434,
437
438 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
439 434, 434, 434, 434, 434, 434, 434, 434, 434, 185,
440 0, 434, 43, 220, 213, 214, 215, 216, 217, 218,
441 306, 161, 403, 408, 224, 209, 54, 210, 404, 406,
442 405, 407, 229, 160, 159, 219, 41, 307, 434, 7,
443 8, 0, 0, 0, 0, 0, 113, 114, 107, 108,
444 125, 126, 0, 94, 92, 137, 257, 176, 193, 157,
445 141, 139, 134, 148, 169, 0, 0, 326, 0, 0,
446 0, 0, 0, 345, 182, 0, 0, 0, 181, 0,
447 0, 430, 0, 429, 0, 0, 0, 428, 0, 0,
448
449 433, 0, 412, 0, 20, 0, 0, 0, 0, 434,
450 300, 301, 434, 434, 434, 434, 434, 434, 392, 434,
451 434, 387, 395, 317, 434, 434, 434, 434, 434, 324,
452 331, 388, 434, 434, 434, 434, 434, 434, 434, 434,
453 434, 434, 377, 434, 372, 434, 434, 178, 0, 0,
454 0, 0, 0, 0, 0, 0, 0, 260, 0, 343,
455 0, 0, 0, 0, 0, 0, 0, 186, 434, 434,
456 434, 434, 434, 434, 434, 434, 434, 298, 434, 434,
457 434, 434, 434, 0, 434, 434, 434, 434, 434, 434,
458 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
459
460 323, 434, 434, 434, 434, 434, 64, 434, 434, 434,
461 434, 0, 434, 434, 434, 434, 434, 434, 74, 434,
462 434, 434, 434, 434, 434, 434, 434, 434, 363, 434,
463 364, 434, 65, 66, 434, 434, 434, 367, 434, 434,
464 434, 434, 434, 434, 434, 434, 434, 434, 434, 0,
465 434, 40, 7, 0, 0, 115, 116, 0, 95, 93,
466 177, 0, 0, 0, 0, 259, 342, 0, 0, 187,
467 0, 431, 0, 0, 0, 428, 0, 0, 429, 0,
468 0, 383, 382, 384, 165, 299, 391, 302, 434, 434,
469 434, 434, 434, 311, 434, 434, 434, 434, 434, 434,
470
471 354, 393, 379, 434, 434, 434, 434, 401, 434, 381,
472 374, 390, 0, 0, 0, 0, 0, 0, 0, 145,
473 0, 237, 222, 0, 0, 0, 0, 0, 0, 434,
474 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
475 434, 434, 434, 0, 0, 0, 434, 308, 310, 309,
476 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
477 434, 434, 434, 434, 434, 434, 434, 434, 71, 68,
478 83, 434, 434, 434, 0, 434, 434, 434, 349, 434,
479 434, 434, 434, 434, 434, 352, 434, 434, 434, 434,
480 434, 434, 87, 434, 434, 434, 434, 434, 434, 434,
481
482 434, 191, 434, 434, 61, 434, 434, 434, 434, 373,
483 0, 434, 27, 28, 0, 291, 325, 0, 0, 0,
484 0, 0, 429, 0, 0, 434, 274, 396, 268, 434,
485 270, 434, 434, 434, 434, 400, 358, 361, 434, 386,
486 434, 366, 0, 0, 135, 0, 170, 0, 0, 337,
487 267, 194, 0, 0, 0, 370, 434, 434, 434, 288,
488 292, 295, 434, 434, 434, 434, 334, 79, 303, 434,
489 319, 318, 0, 434, 434, 434, 434, 434, 312, 313,
490 434, 434, 434, 434, 434, 70, 434, 434, 434, 434,
491 434, 434, 434, 434, 434, 340, 281, 434, 348, 434,
492
493 434, 77, 81, 434, 434, 434, 434, 356, 434, 434,
494 359, 434, 434, 333, 434, 434, 368, 335, 434, 78,
495 434, 434, 434, 434, 434, 55, 88, 89, 0, 0,
496 336, 0, 369, 413, 434, 434, 434, 269, 271, 434,
497 380, 434, 158, 252, 0, 0, 0, 155, 0, 0,
498 434, 434, 434, 290, 293, 296, 82, 434, 434, 434,
499 434, 0, 286, 434, 434, 434, 434, 434, 347, 85,
500 75, 434, 434, 434, 434, 434, 434, 434, 73, 434,
501 344, 434, 434, 434, 434, 434, 434, 434, 357, 434,
502 434, 434, 434, 434, 275, 434, 434, 434, 72, 371,
503
504 0, 0, 362, 414, 434, 378, 272, 434, 434, 172,
505 0, 142, 0, 140, 434, 434, 434, 434, 434, 434,
506 434, 320, 434, 434, 434, 434, 314, 76, 434, 328,
507 434, 53, 190, 434, 434, 63, 434, 59, 434, 434,
508 289, 355, 360, 434, 434, 434, 434, 353, 434, 434,
509 0, 0, 0, 0, 399, 273, 402, 0, 227, 434,
510 434, 434, 434, 297, 434, 434, 434, 434, 434, 434,
511 434, 80, 434, 434, 60, 434, 86, 434, 69, 434,
512 434, 434, 434, 434, 174, 0, 417, 0, 330, 434,
513 434, 434, 434, 434, 434, 205, 434, 434, 434, 434,
514
515 434, 434, 350, 434, 434, 434, 434, 434, 434, 329,
516 0, 415, 434, 434, 278, 200, 434, 434, 434, 434,
517 434, 52, 434, 284, 434, 434, 434, 434, 434, 434,
518 0, 416, 434, 277, 282, 434, 434, 434, 434, 434,
519 434, 434, 84, 434, 58, 434, 418, 434, 434, 434,
520 434, 434, 434, 287, 434, 434, 351, 434, 434, 249,
521 434, 434, 434, 434, 283, 434, 434, 434, 434, 434,
522 434, 434, 434, 434, 434, 280, 434, 434, 285, 434,
523 231, 276, 279, 434, 202, 0
524 } ;
525
526 static yyconst flex_int32_t yy_ec[256] =
527 { 0,
528 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
529 1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
530 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
531 1, 4, 5, 6, 7, 8, 9, 10, 11, 12,
532 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
533 23, 23, 23, 23, 23, 24, 24, 25, 26, 27,
534 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
535 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
536 41, 48, 49, 50, 51, 52, 53, 54, 41, 41,
537 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
538
539 65, 66, 67, 68, 69, 41, 70, 71, 72, 73,
540 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
541 84, 41, 85, 86, 87, 88, 1, 89, 90, 91,
542 92, 93, 94, 95, 41, 96, 97, 98, 41, 41,
543 41, 41, 99, 100, 41, 101, 41, 41, 41, 102,
544 103, 41, 41, 104, 41, 41, 105, 106, 41, 107,
545 108, 109, 41, 110, 111, 112, 113, 41, 41, 41,
546 114, 41, 41, 41, 115, 116, 117, 118, 119, 120,
547 121, 122, 123, 124, 125, 126, 41, 41, 41, 41,
548 127, 41, 41, 128, 129, 41, 41, 41, 41, 41,
549
550 41, 41, 41, 41, 41, 130, 131, 41, 41, 41,
551 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
552 41, 41, 41, 41, 41, 132, 41, 41, 41, 41,
553 41, 41, 41, 41, 41, 41, 41, 133, 134, 135,
554 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
555 41, 41, 41, 41, 1
556 } ;
557
558 static yyconst flex_int32_t yy_meta[136] =
559 { 0,
560 1, 1, 2, 1, 1, 3, 1, 4, 4, 1,
561 1, 1, 1, 5, 1, 1, 1, 1, 4, 6,
562 6, 6, 6, 6, 1, 1, 1, 4, 1, 6,
563 1, 7, 7, 7, 7, 7, 7, 7, 7, 7,
564 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
565 7, 7, 7, 7, 4, 3, 4, 1, 7, 8,
566 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
567 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
568 7, 7, 7, 7, 4, 1, 4, 6, 7, 7,
569 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
570
571 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
572 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
573 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
574 7, 7, 1, 7, 7
575 } ;
576
577 static yyconst flex_int16_t yy_base[1404] =
578 { 0,
579 0, 0, 133, 134, 135, 136, 137, 138, 139, 142,
580 2046, 2047, 149, 2047, 2017, 2047, 191, 2047, 176, 149,
581 270, 2047, 2047, 132, 137, 139, 139, 288, 155, 296,
582 342, 153, 2047, 159, 220, 133, 2047, 246, 109, 1996,
583 212, 305, 109, 124, 1969, 290, 143, 0, 2002, 127,
584 1995, 1992, 329, 185, 194, 106, 2007, 164, 1992, 2047,
585 2047, 208, 322, 2047, 333, 201, 117, 283, 342, 217,
586 206, 1976, 361, 1971, 202, 260, 275, 143, 366, 310,
587 384, 353, 257, 195, 1967, 1960, 2014, 218, 2047, 2047,
588 0, 337, 228, 244, 1943, 376, 1942, 1941, 1924, 0,
589
590 2047, 362, 2025, 2047, 2047, 0, 2047, 2021, 459, 0,
591 2047, 2047, 236, 2047, 2011, 2008, 465, 483, 532, 550,
592 470, 599, 2047, 590, 1996, 2047, 0, 2047, 2047, 281,
593 0, 0, 1954, 2047, 2047, 2047, 2047, 2047, 2047, 1950,
594 1942, 1941, 1991, 2007, 381, 2007, 2005, 2004, 2003, 1995,
595 2001, 1983, 433, 420, 430, 421, 1999, 365, 394, 354,
596 1935, 391, 1943, 1934, 1932, 1919, 1976, 2047, 2047, 2047,
597 2047, 2047, 2047, 1986, 2047, 2047, 2047, 2047, 2047, 2047,
598 1984, 2047, 618, 2047, 1973, 2047, 1997, 2047, 2047, 646,
599 666, 302, 635, 455, 488, 671, 1883, 1979, 2047, 2047,
600
601 2047, 1917, 1919, 1915, 1966, 2047, 2047, 2047, 1922, 2047,
602 1964, 2047, 2047, 1963, 538, 2047, 0, 1955, 1911, 1952,
603 1938, 1941, 1914, 1921, 257, 1945, 0, 514, 1908, 1933,
604 1911, 1931, 1901, 1898, 422, 1902, 1906, 1900, 1912, 1922,
605 0, 1928, 1899, 1895, 1918, 0, 1924, 1918, 1885, 0,
606 1889, 126, 458, 1881, 1924, 1911, 1877, 1880, 1910, 1917,
607 1887, 1907, 2047, 2047, 462, 1885, 1877, 250, 411, 1887,
608 605, 1877, 1873, 505, 1888, 371, 1875, 1873, 1875, 1878,
609 1869, 1880, 1864, 0, 1874, 1877, 1865, 529, 1861, 1860,
610 1864, 0, 1871, 1856, 1853, 312, 1853, 1860, 1855, 1860,
611
612 1848, 533, 1865, 1852, 1854, 2047, 433, 564, 1859, 551,
613 1856, 1843, 1848, 1856, 1852, 160, 1847, 0, 498, 1843,
614 0, 598, 1837, 509, 1841, 1837, 1840, 530, 1850, 1837,
615 1837, 1837, 1839, 549, 1834, 1829, 1840, 1842, 1830, 1825,
616 1832, 1825, 637, 1834, 1835, 1820, 1827, 1818, 2047, 2047,
617 2047, 0, 1890, 0, 0, 1765, 0, 0, 0, 0,
618 596, 1777, 1790, 639, 615, 1787, 527, 1796, 582, 1788,
619 0, 632, 709, 2047, 1884, 2047, 0, 2047, 2047, 728,
620 734, 2047, 2047, 2047, 2047, 2047, 0, 1871, 1868, 739,
621 2047, 2047, 788, 744, 806, 776, 2047, 2047, 2047, 2047,
622
623 2047, 2047, 2047, 0, 2047, 2047, 0, 1809, 1857, 1856,
624 1870, 2047, 2047, 1869, 1868, 2047, 2047, 2047, 1867, 2047,
625 1866, 2047, 1865, 1864, 2047, 1863, 2047, 1862, 2047, 1861,
626 2047, 1807, 1803, 511, 1790, 1795, 1803, 1787, 1854, 1853,
627 1784, 1793, 1784, 1849, 2047, 2047, 2047, 477, 858, 2047,
628 1856, 2047, 863, 478, 880, 890, 757, 775, 910, 503,
629 770, 915, 793, 1855, 1784, 1789, 1782, 2047, 1775, 2047,
630 2047, 0, 0, 1821, 1816, 1801, 0, 1779, 1798, 1798,
631 1807, 1775, 1776, 1769, 1768, 1796, 1762, 0, 0, 1766,
632 1789, 1771, 1765, 1769, 1758, 1761, 1797, 1789, 0, 1756,
633
634 0, 1790, 1791, 1750, 1747, 1790, 1774, 1744, 1743, 0,
635 1778, 1762, 1741, 1748, 1769, 1774, 1745, 0, 1751, 1736,
636 1732, 1732, 1737, 1745, 2047, 1730, 634, 1735, 1743, 1735,
637 1726, 2047, 1724, 1721, 1729, 1725, 1738, 677, 1722, 1739,
638 1726, 1719, 705, 1715, 1722, 1723, 1729, 1716, 1656, 1708,
639 1719, 1718, 1782, 1716, 1723, 1705, 1708, 1722, 1715, 708,
640 1701, 1709, 1713, 0, 783, 1696, 1709, 1711, 1708, 1695,
641 1702, 1705, 1694, 1703, 1688, 1692, 1688, 1684, 0, 0,
642 1691, 1758, 1702, 1683, 1690, 1693, 1678, 1678, 1700, 1681,
643 1669, 0, 1690, 1684, 1686, 1684, 785, 1687, 1668, 1687,
644
645 1680, 1679, 1688, 1687, 1607, 1675, 1664, 1660, 1603, 1671,
646 1670, 1663, 1655, 1667, 1662, 1653, 1650, 1661, 1656, 0,
647 1594, 1613, 0, 0, 0, 0, 0, 0, 0, 0,
648 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
649 0, 0, 0, 0, 0, 2047, 0, 0, 1615, 824,
650 868, 1708, 1707, 1704, 1703, 576, 2047, 2047, 2047, 2047,
651 2047, 2047, 1693, 1690, 1689, 2047, 2047, 2047, 2047, 2047,
652 2047, 2047, 2047, 2047, 2047, 1705, 1637, 2047, 1649, 1648,
653 1632, 1700, 1699, 2047, 2047, 1629, 1634, 1696, 2047, 939,
654 897, 920, 949, 572, 967, 977, 985, 994, 1004, 1013,
655
656 1023, 1033, 1038, 1703, 2047, 1642, 1632, 1640, 1676, 1659,
657 0, 0, 1635, 1661, 1666, 1647, 1622, 1616, 0, 1659,
658 1645, 0, 0, 0, 1621, 1616, 1621, 1617, 1621, 0,
659 0, 0, 1638, 1650, 1620, 1609, 1651, 1634, 1616, 1603,
660 1647, 1638, 0, 1612, 0, 1640, 1610, 2047, 1605, 1604,
661 1611, 1598, 1592, 1604, 1592, 1589, 1586, 2047, 1586, 2047,
662 1586, 1598, 1595, 1594, 1581, 1583, 1584, 2047, 1578, 1591,
663 1581, 1580, 1584, 1591, 1579, 1585, 1573, 0, 1577, 1558,
664 1581, 1564, 1571, 791, 1572, 1571, 1576, 1563, 893, 1562,
665 1565, 1560, 1557, 1564, 1569, 1560, 1567, 1556, 1559, 1550,
666
667 0, 1563, 1554, 1549, 1566, 1569, 1568, 1567, 1552, 1542,
668 1558, 1549, 1543, 1555, 1541, 1548, 1547, 1553, 2047, 1532,
669 659, 1549, 1544, 666, 565, 1528, 1530, 1551, 0, 1539,
670 0, 1531, 2047, 2047, 1514, 1541, 1542, 1526, 1510, 1537,
671 1520, 1531, 1517, 1528, 1526, 1533, 1517, 1510, 1524, 1492,
672 1459, 0, 1043, 666, 889, 2047, 2047, 1576, 2047, 2047,
673 2047, 1574, 1573, 1506, 1504, 2047, 2047, 1493, 1489, 2047,
674 1048, 1053, 1063, 1073, 1078, 1083, 1093, 1098, 1103, 1113,
675 1453, 2047, 2047, 2047, 2047, 0, 0, 0, 1484, 1477,
676 1454, 1432, 1431, 0, 1437, 1426, 1417, 1400, 1380, 1409,
677
678 0, 0, 0, 1408, 1412, 1378, 1382, 1411, 1408, 0,
679 0, 0, 1385, 1387, 1379, 1386, 1369, 1370, 1366, 2047,
680 1367, 2047, 2047, 1367, 1378, 1377, 1364, 1360, 1366, 238,
681 277, 318, 348, 423, 468, 485, 533, 537, 645, 633,
682 674, 676, 690, 712, 721, 729, 744, 0, 0, 0,
683 750, 761, 754, 776, 772, 758, 780, 791, 797, 797,
684 814, 843, 839, 835, 854, 853, 843, 868, 2047, 2047,
685 2047, 863, 894, 896, 895, 901, 904, 912, 0, 906,
686 924, 940, 941, 938, 951, 0, 937, 947, 941, 957,
687 946, 956, 2047, 950, 952, 944, 975, 971, 966, 955,
688
689 987, 0, 997, 1010, 0, 1008, 1008, 1012, 1020, 0,
690 986, 1019, 1114, 1114, 1071, 2047, 2047, 1061, 1129, 1068,
691 1131, 1123, 1128, 1138, 1036, 1116, 0, 0, 0, 1075,
692 0, 1098, 1086, 1086, 1105, 0, 0, 0, 1088, 0,
693 1128, 0, 1096, 1106, 2047, 1111, 2047, 1095, 1113, 2047,
694 2047, 2047, 1102, 1115, 1116, 2047, 1109, 1102, 1121, 1113,
695 1114, 1115, 1129, 1106, 1112, 1104, 0, 2047, 0, 1123,
696 2047, 2047, 1115, 1117, 1110, 1127, 1122, 1127, 0, 0,
697 1126, 1131, 1142, 1143, 1120, 2047, 1127, 1124, 1124, 1124,
698 1143, 1134, 1151, 1138, 1142, 2047, 0, 1135, 0, 1137,
699
700 1138, 2047, 2047, 1135, 1148, 1137, 1150, 0, 1139, 1144,
701 0, 1145, 1150, 0, 1142, 1148, 0, 0, 1144, 2047,
702 1156, 1159, 1150, 1171, 1162, 2047, 0, 0, 1156, 1164,
703 2047, 1219, 2047, 1211, 1187, 1164, 1155, 0, 0, 1172,
704 0, 1191, 2047, 2047, 1162, 1177, 1172, 2047, 1181, 1174,
705 1179, 1186, 1176, 0, 0, 0, 2047, 1184, 1171, 1192,
706 1193, 1190, 0, 1185, 1174, 1177, 1196, 1196, 0, 2047,
707 2047, 1204, 1195, 1183, 1193, 1179, 1193, 1198, 2047, 1193,
708 0, 1190, 1205, 1203, 1205, 1196, 1200, 1209, 0, 1209,
709 1212, 1210, 1209, 1212, 0, 1206, 1216, 1216, 2047, 0,
710
711 1207, 1220, 2047, 1266, 1235, 0, 0, 1226, 1242, 2047,
712 1230, 2047, 1215, 2047, 1236, 1232, 1223, 1239, 1234, 1228,
713 1237, 2047, 1224, 1238, 1235, 1233, 0, 2047, 1251, 0,
714 1234, 0, 0, 1243, 1244, 0, 1289, 0, 1257, 1235,
715 0, 0, 0, 1259, 1246, 1251, 1243, 0, 1259, 1242,
716 1294, 1242, 1302, 1238, 0, 0, 0, 1249, 2047, 1251,
717 1261, 1267, 1268, 0, 1259, 1273, 1270, 1271, 1278, 1263,
718 1267, 2047, 1273, 1258, 0, 1278, 2047, 1274, 2047, 1281,
719 1280, 1275, 1278, 1287, 2047, 1338, 1330, 1236, 2047, 1282,
720 1296, 1293, 1294, 1296, 1284, 0, 1303, 1288, 1293, 1304,
721
722 1307, 1288, 0, 1297, 1310, 1291, 1306, 1299, 1294, 2047,
723 1285, 1355, 1309, 1308, 0, 0, 1317, 1314, 1309, 1305,
724 1317, 0, 1312, 0, 1314, 1323, 1335, 1310, 1326, 1319,
725 1275, 1379, 1315, 0, 0, 1335, 1336, 1335, 1340, 1332,
726 1334, 1334, 2047, 1344, 0, 1333, 2047, 1332, 1350, 1336,
727 1336, 1356, 1334, 0, 1340, 1347, 0, 1350, 1349, 0,
728 1343, 1347, 1358, 1352, 0, 1351, 1361, 1366, 1367, 1352,
729 1369, 1358, 1354, 1360, 1357, 0, 1356, 1358, 0, 1374,
730 0, 0, 0, 1373, 0, 2047, 1462, 1470, 1478, 1486,
731 1491, 1493, 1500, 1508, 1516, 1524, 1532, 1540, 1542, 1549,
732
733 1557, 1565, 1573
734 } ;
735
736 static yyconst flex_int16_t yy_def[1404] =
737 { 0,
738 1386, 1, 1387, 1387, 1388, 1388, 1389, 1389, 1390, 1390,
739 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1391, 1386,
740 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
741 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1392, 1392,
742 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
743 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1386,
744 1386, 1386, 1386, 1386, 1392, 1392, 1392, 1392, 1392, 1392,
745 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
746 1392, 1392, 1392, 1392, 1392, 1392, 1386, 1386, 1386, 1386,
747 1392, 1392, 1392, 1392, 1392, 1392, 1386, 1392, 1392, 1393,
748
749 1386, 1394, 1395, 1386, 1386, 1396, 1386, 1386, 1397, 1398,
750 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
751 1386, 1386, 1386, 1386, 1386, 1386, 1399, 1386, 1386, 1386,
752 1399, 1399, 1399, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
753 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
754 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
755 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
756 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
757 1386, 1386, 1386, 1386, 1386, 1386, 1400, 1386, 1386, 1386,
758 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
759
760 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
761 1386, 1386, 1386, 1386, 1386, 1386, 1392, 1392, 1392, 1392,
762 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
763 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
764 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
765 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
766 1392, 1392, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
767 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1392, 1392,
768 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
769 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
770
771 1392, 1392, 1392, 1392, 1392, 1386, 1392, 1392, 1392, 1392,
772 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
773 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
774 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
775 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1386, 1386,
776 1386, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
777 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1386, 1392, 1392,
778 1393, 1394, 1394, 1386, 1395, 1386, 1396, 1386, 1386, 1386,
779 1386, 1386, 1386, 1386, 1386, 1386, 1398, 1401, 1402, 1386,
780 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
781
782 1386, 1386, 1386, 1399, 1386, 1386, 1399, 1386, 1386, 1386,
783 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
784 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
785 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
786 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
787 1400, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
788 1386, 1386, 1386, 1403, 1386, 1386, 1386, 1386, 1386, 1386,
789 1386, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
790 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
791 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
792
793 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
794 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1386, 1386,
795 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
796 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1392,
797 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
798 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
799 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
800 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
801 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
802 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
803
804 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
805 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
806 1386, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
807 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
808 1392, 1392, 1392, 1392, 1392, 1386, 1392, 1392, 1392, 1386,
809 1386, 1401, 1401, 1402, 1402, 1386, 1386, 1386, 1386, 1386,
810 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
811 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
812 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
813 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
814
815 1386, 1386, 1386, 1403, 1386, 1386, 1386, 1386, 1386, 1392,
816 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
817 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
818 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
819 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1386, 1386, 1386,
820 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
821 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1392, 1392,
822 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
823 1392, 1392, 1392, 1386, 1392, 1392, 1392, 1392, 1392, 1392,
824 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
825
826 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
827 1392, 1386, 1392, 1392, 1392, 1392, 1392, 1392, 1386, 1392,
828 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
829 1392, 1392, 1386, 1386, 1392, 1392, 1392, 1392, 1392, 1392,
830 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1386,
831 1392, 1392, 1386, 1401, 1402, 1386, 1386, 1386, 1386, 1386,
832 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
833 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
834 1386, 1386, 1386, 1386, 1386, 1392, 1392, 1392, 1392, 1392,
835 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
836
837 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
838 1392, 1392, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
839 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1392,
840 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
841 1392, 1392, 1392, 1386, 1386, 1386, 1392, 1392, 1392, 1392,
842 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
843 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1386, 1386,
844 1386, 1392, 1392, 1392, 1386, 1392, 1392, 1392, 1392, 1392,
845 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
846 1392, 1392, 1386, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
847
848 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
849 1386, 1392, 1401, 1402, 1386, 1386, 1386, 1386, 1386, 1386,
850 1386, 1386, 1386, 1386, 1386, 1392, 1392, 1392, 1392, 1392,
851 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
852 1392, 1392, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
853 1386, 1386, 1386, 1386, 1386, 1386, 1392, 1392, 1392, 1392,
854 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1386, 1392, 1392,
855 1386, 1386, 1386, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
856 1392, 1392, 1392, 1392, 1392, 1386, 1392, 1392, 1392, 1392,
857 1392, 1392, 1392, 1392, 1392, 1386, 1392, 1392, 1392, 1392,
858
859 1392, 1386, 1386, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
860 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1386,
861 1392, 1392, 1392, 1392, 1392, 1386, 1392, 1392, 1386, 1386,
862 1386, 1386, 1386, 1386, 1392, 1392, 1392, 1392, 1392, 1392,
863 1392, 1392, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
864 1392, 1392, 1392, 1392, 1392, 1392, 1386, 1392, 1392, 1392,
865 1392, 1386, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1386,
866 1386, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1386, 1392,
867 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
868 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1386, 1392,
869
870 1386, 1386, 1386, 1386, 1392, 1392, 1392, 1392, 1392, 1386,
871 1386, 1386, 1386, 1386, 1392, 1392, 1392, 1392, 1392, 1392,
872 1392, 1386, 1392, 1392, 1392, 1392, 1392, 1386, 1392, 1392,
873 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
874 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
875 1386, 1386, 1386, 1386, 1392, 1392, 1392, 1386, 1386, 1392,
876 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
877 1392, 1386, 1392, 1392, 1392, 1392, 1386, 1392, 1386, 1392,
878 1392, 1392, 1392, 1392, 1386, 1386, 1386, 1386, 1386, 1392,
879 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
880
881 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1386,
882 1386, 1386, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
883 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
884 1386, 1386, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
885 1392, 1392, 1386, 1392, 1392, 1392, 1386, 1392, 1392, 1392,
886 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
887 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
888 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
889 1392, 1392, 1392, 1392, 1392, 0, 1386, 1386, 1386, 1386,
890 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
891
892 1386, 1386, 1386
893 } ;
894
895 static yyconst flex_int16_t yy_nxt[2183] =
896 { 0,
897 12, 13, 14, 13, 15, 16, 17, 18, 19, 20,
898 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
899 31, 31, 31, 31, 32, 33, 34, 35, 36, 37,
900 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
901 48, 49, 50, 48, 51, 52, 53, 54, 55, 56,
902 48, 57, 58, 59, 60, 13, 61, 62, 63, 64,
903 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
904 75, 76, 77, 78, 79, 48, 80, 81, 82, 83,
905 84, 85, 86, 48, 87, 88, 89, 90, 48, 48,
906 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
907
908 48, 48, 48, 48, 48, 48, 48, 91, 48, 48,
909 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
910 48, 48, 48, 48, 48, 48, 48, 92, 93, 94,
911 95, 96, 97, 98, 99, 101, 101, 104, 104, 107,
912 107, 111, 108, 108, 111, 167, 102, 102, 105, 105,
913 113, 169, 113, 218, 171, 173, 230, 174, 136, 168,
914 213, 214, 137, 185, 170, 175, 176, 177, 186, 232,
915 257, 198, 506, 187, 258, 507, 138, 199, 200, 240,
916 201, 219, 188, 123, 124, 205, 206, 207, 243, 202,
917 288, 231, 109, 109, 125, 172, 289, 233, 112, 203,
918
919 244, 112, 260, 126, 113, 115, 139, 116, 241, 140,
920 117, 117, 118, 118, 119, 141, 318, 319, 204, 142,
921 252, 263, 119, 119, 119, 119, 119, 119, 208, 209,
922 128, 261, 129, 255, 130, 264, 581, 113, 582, 113,
923 131, 189, 256, 221, 132, 350, 210, 211, 212, 253,
924 133, 119, 120, 119, 119, 119, 119, 222, 254, 345,
925 134, 286, 135, 346, 121, 215, 215, 215, 215, 215,
926 310, 287, 303, 122, 143, 311, 216, 144, 145, 146,
927 300, 301, 304, 147, 148, 223, 149, 150, 151, 479,
928 302, 113, 405, 406, 152, 224, 153, 154, 155, 480,
929
930 156, 178, 179, 351, 180, 181, 182, 183, 183, 183,
931 183, 183, 523, 190, 1057, 191, 191, 191, 191, 191,
932 312, 235, 524, 236, 237, 192, 238, 157, 313, 343,
933 158, 193, 239, 314, 344, 1058, 356, 456, 159, 315,
934 225, 160, 161, 162, 226, 184, 163, 290, 316, 164,
935 227, 291, 165, 317, 357, 166, 292, 194, 358, 190,
936 193, 191, 191, 191, 191, 191, 456, 359, 247, 195,
937 327, 192, 556, 228, 328, 373, 329, 193, 196, 248,
938 374, 229, 265, 330, 331, 266, 267, 268, 557, 249,
939 269, 413, 270, 271, 272, 273, 274, 250, 275, 276,
940
941 1059, 277, 251, 279, 278, 280, 193, 281, 414, 282,
942 283, 284, 285, 339, 293, 306, 294, 295, 296, 297,
943 340, 298, 436, 197, 299, 1060, 307, 437, 320, 341,
944 425, 429, 342, 308, 321, 536, 322, 432, 323, 324,
945 427, 433, 325, 422, 332, 326, 333, 426, 334, 352,
946 537, 430, 335, 353, 354, 355, 439, 428, 336, 434,
947 423, 424, 337, 338, 491, 361, 435, 440, 362, 197,
948 363, 364, 365, 366, 460, 460, 525, 367, 380, 380,
949 380, 380, 381, 526, 117, 117, 118, 118, 119, 394,
950 394, 394, 394, 568, 492, 1061, 119, 119, 119, 119,
951
952 119, 119, 118, 118, 118, 118, 119, 461, 461, 461,
953 461, 569, 690, 696, 119, 119, 119, 119, 119, 119,
954 382, 678, 460, 460, 383, 119, 390, 119, 119, 119,
955 119, 384, 391, 508, 519, 385, 509, 386, 392, 520,
956 1062, 690, 696, 119, 119, 119, 119, 119, 119, 1063,
957 391, 119, 119, 119, 119, 119, 392, 215, 215, 215,
958 215, 215, 584, 119, 119, 119, 119, 119, 119, 393,
959 393, 119, 119, 119, 482, 533, 585, 590, 534, 591,
960 483, 119, 119, 119, 119, 119, 119, 856, 857, 679,
961 592, 484, 119, 119, 119, 119, 119, 119, 396, 391,
962
963 548, 397, 398, 563, 596, 1064, 549, 874, 597, 564,
964 119, 119, 119, 119, 119, 119, 1065, 391, 395, 395,
965 395, 395, 395, 574, 603, 989, 570, 604, 575, 571,
966 395, 395, 395, 395, 395, 395, 874, 183, 183, 183,
967 183, 183, 572, 990, 399, 1386, 400, 448, 644, 457,
968 1386, 457, 645, 449, 458, 458, 458, 458, 458, 395,
969 395, 395, 395, 395, 395, 453, 453, 453, 453, 453,
970 459, 587, 1013, 528, 401, 454, 402, 588, 529, 983,
971 854, 455, 449, 190, 530, 191, 191, 191, 191, 191,
972 462, 462, 462, 462, 462, 192, 647, 613, 755, 459,
973
974 614, 193, 462, 462, 462, 462, 462, 462, 648, 1066,
975 455, 756, 623, 624, 615, 625, 626, 627, 628, 629,
976 630, 640, 373, 984, 641, 642, 1067, 374, 1068, 633,
977 193, 462, 462, 462, 462, 462, 462, 634, 987, 635,
978 1069, 766, 636, 988, 637, 767, 638, 650, 650, 650,
979 650, 651, 639, 651, 651, 651, 651, 651, 119, 119,
980 119, 119, 119, 394, 394, 394, 394, 772, 791, 1070,
981 119, 119, 119, 119, 119, 119, 458, 458, 458, 458,
982 458, 792, 773, 774, 656, 1071, 1072, 657, 658, 461,
983 461, 461, 461, 197, 458, 458, 458, 458, 458, 119,
984
985 119, 119, 119, 119, 119, 1073, 391, 393, 393, 119,
986 119, 119, 703, 703, 703, 703, 703, 1074, 1075, 119,
987 119, 119, 119, 119, 119, 395, 395, 395, 395, 395,
988 659, 1076, 660, 1077, 1078, 1079, 1080, 395, 395, 395,
989 395, 395, 395, 853, 853, 853, 853, 651, 119, 119,
990 119, 119, 119, 119, 944, 391, 1081, 796, 826, 945,
991 661, 1082, 662, 797, 827, 946, 395, 395, 395, 395,
992 395, 395, 691, 1083, 691, 1084, 1085, 692, 692, 692,
993 692, 692, 453, 453, 453, 453, 453, 651, 651, 651,
994 651, 651, 694, 693, 697, 1014, 697, 1086, 695, 698,
995
996 698, 698, 698, 698, 700, 855, 700, 1087, 1088, 701,
997 701, 701, 701, 701, 1089, 699, 692, 692, 692, 692,
998 692, 1090, 693, 1091, 457, 702, 457, 695, 1092, 458,
999 458, 458, 458, 458, 462, 462, 462, 462, 462, 692,
1000 692, 692, 692, 692, 699, 1093, 462, 462, 462, 462,
1001 462, 462, 1094, 871, 702, 871, 951, 952, 872, 872,
1002 872, 872, 872, 691, 953, 691, 1095, 1096, 692, 692,
1003 692, 692, 692, 1097, 873, 462, 462, 462, 462, 462,
1004 462, 875, 1098, 875, 1099, 1100, 876, 876, 876, 876,
1005 876, 878, 1101, 878, 1102, 1103, 879, 879, 879, 879,
1006
1007 879, 1104, 877, 873, 698, 698, 698, 698, 698, 1105,
1008 1106, 1107, 880, 698, 698, 698, 698, 698, 697, 1108,
1009 697, 1109, 1110, 698, 698, 698, 698, 698, 1111, 1112,
1010 1113, 877, 701, 701, 701, 701, 701, 1114, 1115, 1116,
1011 1117, 880, 701, 701, 701, 701, 701, 700, 1118, 700,
1012 1119, 1120, 701, 701, 701, 701, 701, 703, 703, 703,
1013 703, 703, 651, 651, 651, 651, 651, 872, 872, 872,
1014 872, 872, 872, 872, 872, 872, 872, 871, 1121, 871,
1015 1122, 1123, 872, 872, 872, 872, 872, 1022, 1124, 1022,
1016 1125, 1126, 1023, 1023, 1023, 1023, 1023, 876, 876, 876,
1017
1018 876, 876, 876, 876, 876, 876, 876, 875, 1024, 875,
1019 1127, 1128, 876, 876, 876, 876, 876, 879, 879, 879,
1020 879, 879, 879, 879, 879, 879, 879, 878, 653, 878,
1021 655, 1129, 879, 879, 879, 879, 879, 1024, 1130, 1131,
1022 1132, 1133, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023,
1023 1023, 1023, 1022, 1134, 1022, 1135, 1136, 1023, 1023, 1023,
1024 1023, 1023, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 881,
1025 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153,
1026 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163,
1027 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173,
1028
1029 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
1030 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193,
1031 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203,
1032 1204, 1204, 1204, 1204, 1204, 1205, 1206, 1207, 1208, 1209,
1033 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219,
1034 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229,
1035 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239,
1036 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249,
1037 1250, 1251, 1252, 1253, 1255, 1204, 1204, 1204, 1204, 1204,
1038 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265,
1039
1040 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1266, 1275,
1041 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285,
1042 1286, 1287, 1287, 1287, 1287, 1287, 1288, 1289, 1290, 1291,
1043 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301,
1044 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1287,
1045 1287, 1287, 1287, 1287, 1312, 1313, 1314, 1315, 1316, 1317,
1046 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327,
1047 1328, 1329, 1330, 1331, 1332, 1332, 1332, 1332, 1332, 1333,
1048 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343,
1049 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1254, 1332, 1332,
1050
1051 1332, 1332, 1332, 1351, 1352, 1353, 1354, 1355, 1356, 1357,
1052 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367,
1053 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377,
1054 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1056, 1055,
1055 1054, 1053, 1052, 1051, 1050, 1049, 1048, 1047, 1046, 1045,
1056 1044, 1043, 1042, 1041, 1040, 1039, 1038, 1037, 1036, 1035,
1057 1034, 1311, 100, 100, 100, 100, 100, 100, 100, 100,
1058 103, 103, 103, 103, 103, 103, 103, 103, 106, 106,
1059 106, 106, 106, 106, 106, 106, 110, 110, 110, 110,
1060 110, 110, 110, 110, 127, 1033, 1032, 127, 217, 217,
1061
1062 371, 1031, 371, 371, 1030, 371, 371, 371, 372, 1029,
1063 372, 372, 372, 372, 372, 372, 375, 375, 375, 375,
1064 1028, 375, 375, 375, 377, 1027, 1026, 377, 377, 377,
1065 377, 377, 379, 379, 379, 379, 379, 379, 379, 379,
1066 387, 1025, 387, 387, 387, 387, 387, 404, 404, 451,
1067 451, 451, 451, 451, 451, 451, 451, 652, 652, 652,
1068 652, 1021, 652, 652, 652, 654, 654, 654, 654, 1020,
1069 654, 654, 654, 704, 704, 704, 704, 704, 704, 704,
1070 704, 1019, 1018, 1017, 1016, 1015, 1012, 1011, 1010, 1009,
1071 1008, 1007, 1006, 1005, 1004, 1003, 1002, 1001, 1000, 999,
1072
1073 998, 997, 996, 995, 994, 993, 992, 991, 986, 985,
1074 982, 981, 980, 979, 978, 977, 976, 975, 974, 973,
1075 972, 971, 970, 969, 968, 967, 966, 965, 964, 963,
1076 962, 961, 960, 959, 958, 957, 956, 955, 954, 950,
1077 949, 948, 947, 943, 942, 941, 940, 939, 938, 937,
1078 936, 935, 934, 933, 932, 931, 930, 929, 928, 927,
1079 926, 925, 924, 923, 922, 921, 920, 919, 918, 917,
1080 916, 915, 914, 913, 912, 911, 910, 909, 908, 907,
1081 906, 905, 904, 903, 902, 901, 900, 899, 898, 897,
1082 896, 895, 894, 893, 892, 891, 890, 889, 888, 887,
1083
1084 886, 885, 884, 883, 882, 705, 870, 869, 868, 867,
1085 866, 865, 864, 863, 862, 861, 860, 859, 858, 855,
1086 655, 854, 653, 852, 851, 850, 849, 848, 847, 846,
1087 845, 844, 843, 842, 841, 840, 839, 838, 837, 836,
1088 835, 834, 833, 832, 831, 830, 829, 828, 825, 824,
1089 823, 822, 821, 820, 819, 818, 817, 816, 815, 814,
1090 813, 812, 811, 810, 809, 808, 807, 806, 805, 804,
1091 803, 802, 801, 800, 799, 798, 795, 794, 793, 790,
1092 789, 788, 787, 786, 785, 784, 783, 782, 781, 780,
1093 779, 778, 777, 776, 775, 771, 770, 769, 768, 765,
1094
1095 764, 763, 762, 761, 760, 759, 758, 757, 754, 753,
1096 752, 751, 750, 749, 748, 747, 746, 745, 744, 743,
1097 742, 741, 740, 739, 738, 737, 736, 735, 734, 733,
1098 732, 731, 730, 729, 728, 727, 726, 725, 724, 723,
1099 722, 721, 720, 719, 718, 717, 716, 715, 714, 713,
1100 712, 711, 710, 709, 708, 707, 706, 705, 452, 689,
1101 688, 687, 686, 685, 684, 683, 682, 681, 680, 677,
1102 676, 675, 674, 673, 672, 671, 670, 669, 668, 667,
1103 666, 665, 664, 663, 655, 653, 376, 649, 646, 643,
1104 632, 631, 622, 621, 620, 619, 618, 617, 616, 612,
1105
1106 611, 610, 609, 608, 607, 606, 605, 602, 601, 600,
1107 599, 598, 595, 594, 593, 589, 586, 583, 580, 579,
1108 578, 577, 576, 573, 567, 566, 565, 562, 561, 560,
1109 559, 558, 555, 554, 553, 552, 551, 550, 547, 546,
1110 545, 544, 543, 542, 541, 540, 539, 538, 535, 532,
1111 531, 527, 522, 521, 518, 517, 516, 515, 514, 513,
1112 512, 511, 510, 505, 504, 503, 502, 501, 500, 499,
1113 498, 497, 496, 495, 494, 493, 490, 489, 488, 487,
1114 486, 485, 481, 478, 477, 476, 475, 474, 473, 472,
1115 471, 470, 469, 468, 467, 466, 465, 464, 463, 452,
1116
1117 450, 447, 446, 445, 444, 443, 442, 441, 438, 431,
1118 421, 420, 419, 418, 417, 416, 415, 412, 411, 410,
1119 409, 408, 407, 403, 389, 388, 378, 376, 370, 369,
1120 368, 360, 349, 348, 347, 309, 305, 262, 259, 246,
1121 245, 242, 234, 220, 114, 1386, 11, 1386, 1386, 1386,
1122 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1123 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1124 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1125 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1126 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1127
1128 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1129 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1130 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1131 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1132 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1133 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1134 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1135 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1136 1386, 1386
1137 } ;
1138
1139 static yyconst flex_int16_t yy_chk[2183] =
1140 { 0,
1141 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1142 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1143 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1144 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1145 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1146 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1147 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1148 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1149 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1150 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1151
1152 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1153 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1154 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1155 1, 1, 1, 1, 1, 3, 4, 5, 6, 7,
1156 8, 9, 7, 8, 10, 24, 3, 4, 5, 6,
1157 13, 25, 13, 39, 26, 27, 43, 27, 20, 24,
1158 36, 36, 20, 29, 25, 27, 27, 27, 29, 44,
1159 56, 32, 252, 29, 56, 252, 20, 32, 32, 47,
1160 32, 39, 29, 19, 19, 34, 34, 34, 50, 32,
1161 67, 43, 7, 8, 19, 26, 67, 44, 9, 32,
1162
1163 50, 10, 58, 19, 13, 17, 20, 17, 47, 20,
1164 17, 17, 17, 17, 17, 20, 78, 78, 32, 20,
1165 54, 62, 17, 17, 17, 17, 17, 17, 35, 35,
1166 19, 58, 19, 55, 19, 62, 316, 113, 316, 113,
1167 19, 29, 55, 41, 19, 88, 35, 35, 35, 54,
1168 19, 17, 17, 17, 17, 17, 17, 41, 54, 84,
1169 19, 66, 19, 84, 17, 38, 38, 38, 38, 38,
1170 75, 66, 71, 17, 21, 75, 38, 21, 21, 21,
1171 70, 70, 71, 21, 21, 41, 21, 21, 21, 225,
1172 70, 113, 130, 130, 21, 41, 21, 21, 21, 225,
1173
1174 21, 28, 28, 88, 28, 28, 28, 28, 28, 28,
1175 28, 28, 268, 30, 930, 30, 30, 30, 30, 30,
1176 76, 46, 268, 46, 46, 30, 46, 21, 76, 83,
1177 21, 30, 46, 76, 83, 931, 93, 192, 21, 77,
1178 42, 21, 21, 21, 42, 28, 21, 68, 77, 21,
1179 42, 68, 21, 77, 93, 21, 68, 30, 94, 31,
1180 30, 31, 31, 31, 31, 31, 192, 94, 53, 30,
1181 80, 31, 296, 42, 80, 102, 80, 31, 30, 53,
1182 102, 42, 63, 80, 80, 63, 63, 63, 296, 53,
1183 63, 145, 63, 63, 63, 63, 63, 53, 63, 63,
1184
1185 932, 63, 53, 65, 63, 65, 31, 65, 145, 65,
1186 65, 65, 65, 82, 69, 73, 69, 69, 69, 69,
1187 82, 69, 160, 30, 69, 933, 73, 160, 79, 82,
1188 154, 156, 82, 73, 79, 276, 79, 158, 79, 79,
1189 155, 158, 79, 153, 81, 79, 81, 154, 81, 92,
1190 276, 156, 81, 92, 92, 92, 162, 155, 81, 159,
1191 153, 153, 81, 81, 235, 96, 159, 162, 96, 31,
1192 96, 96, 96, 96, 194, 194, 269, 96, 109, 109,
1193 109, 109, 109, 269, 117, 117, 117, 117, 117, 121,
1194 121, 121, 121, 307, 235, 934, 117, 117, 117, 117,
1195
1196 117, 117, 118, 118, 118, 118, 118, 195, 195, 195,
1197 195, 307, 448, 454, 118, 118, 118, 118, 118, 118,
1198 109, 434, 460, 460, 109, 117, 117, 117, 117, 117,
1199 117, 109, 117, 253, 265, 109, 253, 109, 117, 265,
1200 935, 448, 454, 118, 118, 118, 118, 118, 118, 936,
1201 118, 119, 119, 119, 119, 119, 118, 215, 215, 215,
1202 215, 215, 319, 119, 119, 119, 119, 119, 119, 120,
1203 120, 120, 120, 120, 228, 274, 319, 324, 274, 324,
1204 228, 120, 120, 120, 120, 120, 120, 656, 656, 434,
1205 324, 228, 119, 119, 119, 119, 119, 119, 124, 119,
1206
1207 288, 124, 124, 302, 328, 937, 288, 694, 328, 302,
1208 120, 120, 120, 120, 120, 120, 938, 120, 122, 122,
1209 122, 122, 122, 310, 334, 825, 308, 334, 310, 308,
1210 122, 122, 122, 122, 122, 122, 694, 183, 183, 183,
1211 183, 183, 308, 825, 124, 372, 124, 183, 367, 193,
1212 372, 193, 367, 183, 193, 193, 193, 193, 193, 122,
1213 122, 122, 122, 122, 122, 190, 190, 190, 190, 190,
1214 193, 322, 854, 271, 124, 190, 124, 322, 271, 821,
1215 854, 190, 183, 191, 271, 191, 191, 191, 191, 191,
1216 196, 196, 196, 196, 196, 191, 369, 343, 527, 193,
1217
1218 343, 191, 196, 196, 196, 196, 196, 196, 369, 939,
1219 190, 527, 361, 361, 343, 361, 361, 361, 361, 361,
1220 361, 365, 373, 821, 365, 365, 940, 373, 941, 364,
1221 191, 196, 196, 196, 196, 196, 196, 364, 824, 364,
1222 942, 538, 364, 824, 364, 538, 364, 380, 380, 380,
1223 380, 380, 364, 381, 381, 381, 381, 381, 390, 390,
1224 390, 390, 390, 394, 394, 394, 394, 543, 560, 943,
1225 390, 390, 390, 390, 390, 390, 457, 457, 457, 457,
1226 457, 560, 543, 543, 396, 944, 945, 396, 396, 461,
1227 461, 461, 461, 191, 458, 458, 458, 458, 458, 390,
1228
1229 390, 390, 390, 390, 390, 946, 390, 393, 393, 393,
1230 393, 393, 463, 463, 463, 463, 463, 947, 951, 393,
1231 393, 393, 393, 393, 393, 395, 395, 395, 395, 395,
1232 396, 952, 396, 953, 954, 955, 956, 395, 395, 395,
1233 395, 395, 395, 650, 650, 650, 650, 650, 393, 393,
1234 393, 393, 393, 393, 784, 393, 957, 565, 597, 784,
1235 396, 958, 396, 565, 597, 784, 395, 395, 395, 395,
1236 395, 395, 449, 959, 449, 960, 961, 449, 449, 449,
1237 449, 449, 453, 453, 453, 453, 453, 651, 651, 651,
1238 651, 651, 453, 449, 455, 855, 455, 962, 453, 455,
1239
1240 455, 455, 455, 455, 456, 855, 456, 963, 964, 456,
1241 456, 456, 456, 456, 965, 455, 691, 691, 691, 691,
1242 691, 966, 449, 967, 459, 456, 459, 453, 968, 459,
1243 459, 459, 459, 459, 462, 462, 462, 462, 462, 692,
1244 692, 692, 692, 692, 455, 972, 462, 462, 462, 462,
1245 462, 462, 973, 690, 456, 690, 789, 789, 690, 690,
1246 690, 690, 690, 693, 789, 693, 974, 975, 693, 693,
1247 693, 693, 693, 976, 690, 462, 462, 462, 462, 462,
1248 462, 695, 977, 695, 978, 980, 695, 695, 695, 695,
1249 695, 696, 981, 696, 982, 983, 696, 696, 696, 696,
1250
1251 696, 984, 695, 690, 697, 697, 697, 697, 697, 985,
1252 987, 988, 696, 698, 698, 698, 698, 698, 699, 989,
1253 699, 990, 991, 699, 699, 699, 699, 699, 992, 994,
1254 995, 695, 700, 700, 700, 700, 700, 996, 997, 998,
1255 999, 696, 701, 701, 701, 701, 701, 702, 1000, 702,
1256 1001, 1003, 702, 702, 702, 702, 702, 703, 703, 703,
1257 703, 703, 853, 853, 853, 853, 853, 871, 871, 871,
1258 871, 871, 872, 872, 872, 872, 872, 873, 1004, 873,
1259 1006, 1007, 873, 873, 873, 873, 873, 874, 1008, 874,
1260 1009, 1011, 874, 874, 874, 874, 874, 875, 875, 875,
1261
1262 875, 875, 876, 876, 876, 876, 876, 877, 874, 877,
1263 1012, 1012, 877, 877, 877, 877, 877, 878, 878, 878,
1264 878, 878, 879, 879, 879, 879, 879, 880, 1013, 880,
1265 1014, 1015, 880, 880, 880, 880, 880, 874, 1018, 1019,
1266 1020, 1021, 1022, 1022, 1022, 1022, 1022, 1023, 1023, 1023,
1267 1023, 1023, 1024, 1025, 1024, 1026, 1030, 1024, 1024, 1024,
1268 1024, 1024, 1032, 1033, 1034, 1035, 1039, 1041, 1043, 703,
1269 1044, 1046, 1048, 1049, 1053, 1054, 1055, 1057, 1058, 1059,
1270 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1070, 1073, 1074,
1271 1075, 1076, 1077, 1078, 1081, 1082, 1083, 1084, 1085, 1087,
1272
1273 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1098, 1100,
1274 1101, 1104, 1105, 1106, 1107, 1109, 1110, 1112, 1113, 1115,
1275 1116, 1119, 1121, 1122, 1123, 1124, 1125, 1129, 1130, 1132,
1276 1134, 1134, 1134, 1134, 1134, 1135, 1136, 1137, 1140, 1142,
1277 1145, 1146, 1147, 1149, 1150, 1151, 1152, 1153, 1158, 1159,
1278 1160, 1161, 1162, 1164, 1165, 1166, 1167, 1168, 1172, 1173,
1279 1174, 1175, 1176, 1177, 1178, 1180, 1182, 1183, 1184, 1185,
1280 1186, 1187, 1188, 1190, 1191, 1192, 1193, 1194, 1196, 1197,
1281 1198, 1201, 1202, 1204, 1205, 1204, 1204, 1204, 1204, 1204,
1282 1208, 1209, 1211, 1213, 1215, 1216, 1217, 1218, 1219, 1220,
1283
1284 1221, 1223, 1224, 1225, 1226, 1229, 1231, 1234, 1220, 1235,
1285 1237, 1239, 1240, 1244, 1245, 1246, 1247, 1249, 1250, 1251,
1286 1252, 1253, 1253, 1253, 1253, 1253, 1254, 1258, 1260, 1261,
1287 1262, 1263, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1273,
1288 1274, 1276, 1278, 1280, 1281, 1282, 1283, 1284, 1286, 1287,
1289 1287, 1287, 1287, 1287, 1288, 1290, 1291, 1292, 1293, 1294,
1290 1295, 1297, 1298, 1299, 1300, 1301, 1302, 1304, 1305, 1306,
1291 1307, 1308, 1309, 1311, 1312, 1312, 1312, 1312, 1312, 1313,
1292 1314, 1317, 1318, 1319, 1320, 1321, 1323, 1325, 1326, 1327,
1293 1328, 1329, 1330, 1331, 1333, 1336, 1337, 1204, 1332, 1332,
1294
1295 1332, 1332, 1332, 1338, 1339, 1340, 1341, 1342, 1344, 1346,
1296 1348, 1349, 1350, 1351, 1352, 1353, 1355, 1356, 1358, 1359,
1297 1361, 1362, 1363, 1364, 1366, 1367, 1368, 1369, 1370, 1371,
1298 1372, 1373, 1374, 1375, 1377, 1378, 1380, 1384, 929, 928,
1299 927, 926, 925, 924, 921, 919, 918, 917, 916, 915,
1300 914, 913, 909, 908, 907, 906, 905, 904, 900, 899,
1301 898, 1287, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387,
1302 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1389, 1389,
1303 1389, 1389, 1389, 1389, 1389, 1389, 1390, 1390, 1390, 1390,
1304 1390, 1390, 1390, 1390, 1391, 897, 896, 1391, 1392, 1392,
1305
1306 1393, 895, 1393, 1393, 893, 1393, 1393, 1393, 1394, 892,
1307 1394, 1394, 1394, 1394, 1394, 1394, 1395, 1395, 1395, 1395,
1308 891, 1395, 1395, 1395, 1396, 890, 889, 1396, 1396, 1396,
1309 1396, 1396, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397,
1310 1398, 881, 1398, 1398, 1398, 1398, 1398, 1399, 1399, 1400,
1311 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1401, 1401, 1401,
1312 1401, 869, 1401, 1401, 1401, 1402, 1402, 1402, 1402, 868,
1313 1402, 1402, 1402, 1403, 1403, 1403, 1403, 1403, 1403, 1403,
1314 1403, 865, 864, 863, 862, 858, 851, 850, 849, 848,
1315 847, 846, 845, 844, 843, 842, 841, 840, 839, 838,
1316
1317 837, 836, 835, 832, 830, 828, 827, 826, 823, 822,
1318 820, 818, 817, 816, 815, 814, 813, 812, 811, 810,
1319 809, 808, 807, 806, 805, 804, 803, 802, 800, 799,
1320 798, 797, 796, 795, 794, 793, 792, 791, 790, 788,
1321 787, 786, 785, 783, 782, 781, 780, 779, 777, 776,
1322 775, 774, 773, 772, 771, 770, 769, 767, 766, 765,
1323 764, 763, 762, 761, 759, 757, 756, 755, 754, 753,
1324 752, 751, 750, 749, 747, 746, 744, 742, 741, 740,
1325 739, 738, 737, 736, 735, 734, 733, 729, 728, 727,
1326 726, 725, 721, 720, 718, 717, 716, 715, 714, 713,
1327
1328 710, 709, 708, 707, 706, 704, 688, 687, 686, 683,
1329 682, 681, 680, 679, 677, 676, 665, 664, 663, 655,
1330 654, 653, 652, 649, 622, 621, 619, 618, 617, 616,
1331 615, 614, 613, 612, 611, 610, 609, 608, 607, 606,
1332 605, 604, 603, 602, 601, 600, 599, 598, 596, 595,
1333 594, 593, 591, 590, 589, 588, 587, 586, 585, 584,
1334 583, 582, 581, 578, 577, 576, 575, 574, 573, 572,
1335 571, 570, 569, 568, 567, 566, 563, 562, 561, 559,
1336 558, 557, 556, 555, 554, 553, 552, 551, 550, 549,
1337 548, 547, 546, 545, 544, 542, 541, 540, 539, 537,
1338
1339 536, 535, 534, 533, 531, 530, 529, 528, 526, 524,
1340 523, 522, 521, 520, 519, 517, 516, 515, 514, 513,
1341 512, 511, 509, 508, 507, 506, 505, 504, 503, 502,
1342 500, 498, 497, 496, 495, 494, 493, 492, 491, 490,
1343 487, 486, 485, 484, 483, 482, 481, 480, 479, 478,
1344 476, 475, 474, 469, 467, 466, 465, 464, 451, 444,
1345 443, 442, 441, 440, 439, 438, 437, 436, 435, 433,
1346 432, 430, 428, 426, 424, 423, 421, 419, 415, 414,
1347 411, 410, 409, 408, 389, 388, 375, 370, 368, 366,
1348 363, 362, 356, 353, 348, 347, 346, 345, 344, 342,
1349
1350 341, 340, 339, 338, 337, 336, 335, 333, 332, 331,
1351 330, 329, 327, 326, 325, 323, 320, 317, 315, 314,
1352 313, 312, 311, 309, 305, 304, 303, 301, 300, 299,
1353 298, 297, 295, 294, 293, 291, 290, 289, 287, 286,
1354 285, 283, 282, 281, 280, 279, 278, 277, 275, 273,
1355 272, 270, 267, 266, 262, 261, 260, 259, 258, 257,
1356 256, 255, 254, 251, 249, 248, 247, 245, 244, 243,
1357 242, 240, 239, 238, 237, 236, 234, 233, 232, 231,
1358 230, 229, 226, 224, 223, 222, 221, 220, 219, 218,
1359 214, 211, 209, 205, 204, 203, 202, 198, 197, 187,
1360
1361 185, 181, 174, 167, 166, 165, 164, 163, 161, 157,
1362 152, 151, 150, 149, 148, 147, 146, 144, 143, 142,
1363 141, 140, 133, 125, 116, 115, 108, 103, 99, 98,
1364 97, 95, 87, 86, 85, 74, 72, 59, 57, 52,
1365 51, 49, 45, 40, 15, 11, 1386, 1386, 1386, 1386,
1366 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1367 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1368 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1369 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1370 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1371
1372 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1373 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1374 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1375 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1376 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1377 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1378 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1379 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386,
1380 1386, 1386
1381 } ;
1382
1383 /* The intent behind this definition is that it'll catch
1384 * any uses of REJECT which flex missed.
1385 */
1386 #define REJECT reject_used_but_not_detected
1387 #define yymore() yymore_used_but_not_detected
1388 #define YY_MORE_ADJ 0
1389 #define YY_RESTORE_YY_MORE_OFFSET
1390 #line 1 "input_lexer.ll"
1391 /* -*- mode: C++; compile-command: "flex input_lexer.ll && make input_lexer.o " -*- */
1392 /* Note: for the nspire port, after flex, move from #ifdef HAVE_CONFIG_H
1393 to #include "first.h" before #include<stdio.h>
1394 and map "log" to log10 instead of ln
1395 */
1396 /** @file input_lexer.ll
1397 *
1398 * Lexical analyzer definition for reading expressions.
1399 * Note Maple input should be processed replacing # with // and { } for set
1400 * This file must be processed with flex. */
1401 /*
1402 * Copyright (C) 2001,14 B. Parisse, Institut Fourier, 38402 St Martin d'Heres
1403 * The very first version was inspired by GiNaC lexer
1404 *
1405 * This program is free software; you can redistribute it and/or modify
1406 * it under the terms of the GNU General Public License as published by
1407 * the Free Software Foundation; either version 3 of the License, or
1408 * (at your option) any later version.
1409 *
1410 * This program is distributed in the hope that it will be useful,
1411 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1412 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1413 * GNU General Public License for more details.
1414 *
1415 * You should have received a copy of the GNU General Public License
1416 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1417 */
1418 /*
1419 * The lexer will first check for static patterns and strings (defined below)
1420 * If a match is not found, it calls find_or_make_symbol
1421 * This function looks first if the string should be translated
1422 * (e.g. add a prefix from the export table)
1423 * then look in lexer_functions for a match, then look in sym_tab
1424 * if not found in sym_tab, a new identificateur is created & added in sym_tab
1425 * Functions in lexer_functions are added during the construction
1426 * of the corresponding unary_functions using lexer_functions_register
1427 */
1428 /*
1429 * Definitions
1430 */
1431 #line 48 "input_lexer.ll"
1432 #ifdef NUMWORKS
1433 #define at_log at_logb
1434 #else
1435 #define at_log at_ln
1436 #endif
1437 #include "giacPCH.h"
1438 #ifdef HAVE_CONFIG_H
1439 #include "config.h"
1440 #endif
1441 #include <iostream>
1442 #include <stdexcept>
1443 #if !defined RTOS_THREADX && !defined NSPIRE && !defined FXCG && !defined GIAC_HAS_STO_38
1444 #include <fstream>
1445 #endif
1446
1447 #include "gen.h"
1448 #include "input_lexer.h"
1449 #include "help.h"
1450 #include "identificateur.h"
1451 #include "usual.h"
1452 #include "derive.h"
1453 #include "series.h"
1454 #include "intg.h"
1455 #include "sym2poly.h"
1456 #include "moyal.h"
1457 #include "subst.h"
1458 #include "vecteur.h"
1459 #include "modpoly.h"
1460 #include "lin.h"
1461 #include "solve.h"
1462 #include "ifactor.h"
1463 #include "alg_ext.h"
1464 #include "gauss.h"
1465 #include "isom.h"
1466 #include "plot.h"
1467 #include "ti89.h"
1468
1469 #include "prog.h"
1470 #include "rpn.h"
1471 #include "ezgcd.h"
1472 #include "tex.h"
1473 #include "risch.h"
1474 #include "permu.h"
1475 #include "input_parser.h"
1476
1477 #if defined(RTOS_THREADX) || defined(__MINGW_H) || defined NSPIRE || defined MS_SMART || defined(FREERTOS)
isatty(int)1478 int isatty (int ){ return 0; }
1479 #endif
1480
1481 #if defined BESTA_OS || defined(FREERTOS)
1482 #define EINTR 4
1483 #endif
1484
1485 #ifdef NSPIRE
1486 // after flex, move #include "config.h" and first.h before all includes
1487 // include "static.h" then giacPCH.h
1488 // then edit input_lexer.cc and search for isatty, replace by 0 for interactive
clearerr(FILE *)1489 void clearerr(FILE *){}
1490 #endif
1491
1492 using namespace std;
1493 using namespace giac;
1494 void giac_yyset_column (int column_no , yyscan_t yyscanner);
1495 int giac_yyget_column (yyscan_t yyscanner);
1496 #define YY_USER_ACTION giac_yyset_column(giac_yyget_column(yyscanner)+yyleng,yyscanner);
1497 #define YY_USER_INIT giac_yyset_column(1,yyscanner);
1498
1499 #ifndef NO_NAMESPACE_GIAC
1500 namespace giac {
1501 #endif // ndef NO_NAMESPACE_GIAC
1502
increment_lexer_line_number_setcol(yyscan_t yyscanner,GIAC_CONTEXT)1503 void increment_lexer_line_number_setcol(yyscan_t yyscanner,GIAC_CONTEXT){
1504 giac_yyset_column(1,yyscanner);
1505 increment_lexer_line_number(contextptr);
1506 }
1507 bool doing_insmod = false;
1508
1509 #ifdef HAVE_LIBPTHREAD
1510 static pthread_mutex_t * syms_mutex_ptr = 0;
1511
lock_syms_mutex()1512 int lock_syms_mutex(){
1513 if (!syms_mutex_ptr){
1514 pthread_mutex_t tmp=PTHREAD_MUTEX_INITIALIZER;
1515 syms_mutex_ptr=new pthread_mutex_t(tmp);
1516 }
1517 return pthread_mutex_lock(syms_mutex_ptr);
1518 }
1519
unlock_syms_mutex()1520 void unlock_syms_mutex(){
1521 if (syms_mutex_ptr)
1522 pthread_mutex_unlock(syms_mutex_ptr);
1523 }
1524
1525 #else
lock_syms_mutex()1526 int lock_syms_mutex(){ return 0; }
unlock_syms_mutex()1527 void unlock_syms_mutex(){}
1528 #endif
1529
syms()1530 sym_string_tab & syms(){
1531 static sym_string_tab * ans=0;
1532 if (!ans) ans=new sym_string_tab;
1533 return * ans;
1534 }
1535
1536
lexer_localization_vector()1537 std::vector<int> & lexer_localization_vector(){
1538 static std::vector<int> * ans=0;
1539 if (!ans) ans=new std::vector<int>;
1540 return *ans;
1541 }
1542
1543 #ifdef USTL
lexer_localization_map()1544 ustl::map<std::string,std::string> & lexer_localization_map(){
1545 static ustl::map<std::string,std::string> * ans = 0;
1546 if (!ans) ans=new ustl::map<std::string,std::string>;
1547 return * ans;
1548 }
back_lexer_localization_map()1549 ustl::multimap<std::string,localized_string> & back_lexer_localization_map(){
1550 static ustl::multimap<std::string,localized_string> * ans= 0;
1551 if (!ans) ans=new ustl::multimap<std::string,localized_string>;
1552 return * ans;
1553 }
1554
1555 // lexer_localization_vector() is the list of languages currently translated
1556 // lexer_localization_map translates keywords from the locale to giac
1557 // back_lexer_localization_map() lists for a giac keyword the translations
1558
lexer_translator()1559 ustl::map<std::string,std::vector<std::string> > & lexer_translator (){
1560 static ustl::map<std::string,std::vector<std::string> > * ans = 0;
1561 if (!ans) ans=new ustl::map<std::string,std::vector<std::string> >;
1562 return * ans;
1563 }
1564 // lexer_translator will be updated when export/with is called
1565 // To each string (w/o ::) in a given library,
1566 // If it exists, we push_back the full string (with ::)
1567 // If not we create a vector with the full string
1568 // If a library is unexported we remove the corresponding entry in the
1569 // vector and remove the entry if the vector is empty
library_functions()1570 ustl::map<std::string,std::vector<std::string> > & library_functions (){
1571 static ustl::map<std::string,std::vector<std::string> > * ans=0;
1572 if (!ans) ans=new ustl::map<std::string,std::vector<std::string> >;
1573 return *ans;
1574 }
1575
1576 #else
lexer_localization_map()1577 std::map<std::string,std::string> & lexer_localization_map(){
1578 static std::map<std::string,std::string> * ans = 0;
1579 if (!ans) ans=new std::map<std::string,std::string>;
1580 return * ans;
1581 }
back_lexer_localization_map()1582 std::multimap<std::string,localized_string> & back_lexer_localization_map(){
1583 static std::multimap<std::string,localized_string> * ans= 0;
1584 if (!ans) ans=new std::multimap<std::string,localized_string>;
1585 return * ans;
1586 }
1587 // lexer_localization_vector() is the list of languages currently translated
1588 // lexer_localization_map translates keywords from the locale to giac
1589 // back_lexer_localization_map() lists for a giac keyword the translations
1590
lexer_translator()1591 std::map<std::string,std::vector<std::string> > & lexer_translator (){
1592 static std::map<std::string,std::vector<std::string> > * ans = 0;
1593 if (!ans) ans=new std::map<std::string,std::vector<std::string> >;
1594 return * ans;
1595 }
1596 // lexer_translator will be updated when export/with is called
1597 // To each string (w/o ::) in a given library,
1598 // If it exists, we push_back the full string (with ::)
1599 // If not we create a vector with the full string
1600 // If a library is unexported we remove the corresponding entry in the
1601 // vector and remove the entry if the vector is empty
library_functions()1602 std::map<std::string,std::vector<std::string> > & library_functions (){
1603 static std::map<std::string,std::vector<std::string> > * ans=0;
1604 if (!ans) ans=new std::map<std::string,std::vector<std::string> >;
1605 return *ans;
1606 }
1607
1608 #endif
1609
1610 // First string is the library name, second is the vector of function names
1611 // User defined relations
registered_lexer_functions()1612 vector<user_function> & registered_lexer_functions(){
1613 static vector<user_function> * ans = 0;
1614 if (!ans){
1615 ans = new vector<user_function>;
1616 // ans->reserve(50);
1617 }
1618 return * ans;
1619 }
1620
tri1(const lexer_tab_int_type & a,const lexer_tab_int_type & b)1621 bool tri1(const lexer_tab_int_type & a,const lexer_tab_int_type & b){
1622 int res= strcmp(a.keyword,b.keyword);
1623 return res<0;
1624 }
1625
tri2(const char * a,const char * b)1626 bool tri2(const char * a,const char * b){
1627 return strcmp(a,b)<0;
1628 }
1629
1630 const lexer_tab_int_type lexer_tab_int_values []={
1631 #ifdef GIAC_HAS_STO_38
1632 #include "lexer_tab38_int.h"
1633 #else
1634 #include "lexer_tab_int.h"
1635 #endif
1636 };
1637
1638 const lexer_tab_int_type * const lexer_tab_int_values_begin = lexer_tab_int_values;
1639 const unsigned lexer_tab_int_values_n=sizeof(lexer_tab_int_values)/sizeof(lexer_tab_int_type);
1640 const lexer_tab_int_type * const lexer_tab_int_values_end = lexer_tab_int_values+lexer_tab_int_values_n;
1641 #ifndef NO_NAMESPACE_GIAC
1642 } // namespace giac
1643 #endif // ndef NO_NAMESPACE_GIAC
1644
1645 /* Abbreviations */
1646 /* If changed, modify isalphan in help.cc FIXME is . allowed inside alphanumeric ? answer NO */
1647
1648
1649
1650
1651 /*
1652 * Lexical rules
1653 */
1654 #line 1655 "input_lexer.cc"
1655
1656 #define INITIAL 0
1657 #define comment 1
1658 #define comment_hash 2
1659 #define str 3
1660 #define backquote 4
1661
1662 #ifndef YY_NO_UNISTD_H
1663 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1664 * down here because we want the user's section 1 to have been scanned first.
1665 * The user has a chance to override it with an option.
1666 */
1667 #include <unistd.h>
1668 #endif
1669
1670 #ifndef YY_EXTRA_TYPE
1671 #define YY_EXTRA_TYPE void *
1672 #endif
1673
1674 /* Holds the entire state of the reentrant scanner. */
1675 struct yyguts_t
1676 {
1677
1678 /* User-defined. Not touched by flex. */
1679 YY_EXTRA_TYPE yyextra_r;
1680
1681 /* The rest are the same as the globals declared in the non-reentrant scanner. */
1682 FILE *yyin_r, *yyout_r;
1683 size_t yy_buffer_stack_top; /**< index of top of stack. */
1684 size_t yy_buffer_stack_max; /**< capacity of stack. */
1685 YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
1686 char yy_hold_char;
1687 int yy_n_chars;
1688 int yyleng_r;
1689 char *yy_c_buf_p;
1690 int yy_init;
1691 int yy_start;
1692 int yy_did_buffer_switch_on_eof;
1693 int yy_start_stack_ptr;
1694 int yy_start_stack_depth;
1695 int *yy_start_stack;
1696 yy_state_type yy_last_accepting_state;
1697 char* yy_last_accepting_cpos;
1698
1699 int yylineno_r;
1700 int yy_flex_debug_r;
1701
1702 char *yytext_r;
1703 int yy_more_flag;
1704 int yy_more_len;
1705
1706 YYSTYPE * yylval_r;
1707
1708 }; /* end struct yyguts_t */
1709
1710 static int yy_init_globals (yyscan_t yyscanner );
1711
1712 /* This must go here because YYSTYPE and YYLTYPE are included
1713 * from bison output in section 1.*/
1714 # define yylval yyg->yylval_r
1715
1716 int giac_yylex_init (yyscan_t* scanner);
1717
1718 int giac_yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
1719
1720 /* Accessor methods to globals.
1721 These are made visible to non-reentrant scanners for convenience. */
1722
1723 int giac_yylex_destroy (yyscan_t yyscanner );
1724
1725 int giac_yyget_debug (yyscan_t yyscanner );
1726
1727 void giac_yyset_debug (int debug_flag ,yyscan_t yyscanner );
1728
1729 YY_EXTRA_TYPE giac_yyget_extra (yyscan_t yyscanner );
1730
1731 void giac_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
1732
1733 FILE *giac_yyget_in (yyscan_t yyscanner );
1734
1735 void giac_yyset_in (FILE * in_str ,yyscan_t yyscanner );
1736
1737 FILE *giac_yyget_out (yyscan_t yyscanner );
1738
1739 void giac_yyset_out (FILE * out_str ,yyscan_t yyscanner );
1740
1741 int giac_yyget_leng (yyscan_t yyscanner );
1742
1743 char *giac_yyget_text (yyscan_t yyscanner );
1744
1745 int giac_yyget_lineno (yyscan_t yyscanner );
1746
1747 void giac_yyset_lineno (int line_number ,yyscan_t yyscanner );
1748
1749 int giac_yyget_column (yyscan_t yyscanner );
1750
1751 void giac_yyset_column (int column_no ,yyscan_t yyscanner );
1752
1753 YYSTYPE * giac_yyget_lval (yyscan_t yyscanner );
1754
1755 void giac_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
1756
1757 /* Macros after this point can all be overridden by user definitions in
1758 * section 1.
1759 */
1760
1761 #ifndef YY_SKIP_YYWRAP
1762 #ifdef __cplusplus
1763 extern "C" int giac_yywrap (yyscan_t yyscanner );
1764 #else
1765 extern int giac_yywrap (yyscan_t yyscanner );
1766 #endif
1767 #endif
1768
1769 static void yyunput (int c,char *buf_ptr ,yyscan_t yyscanner);
1770
1771 #ifndef yytext_ptr
1772 static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
1773 #endif
1774
1775 #ifdef YY_NEED_STRLEN
1776 static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
1777 #endif
1778
1779 #ifndef YY_NO_INPUT
1780
1781 #ifdef __cplusplus
1782 static int yyinput (yyscan_t yyscanner );
1783 #else
1784 static int input (yyscan_t yyscanner );
1785 #endif
1786
1787 #endif
1788
1789 /* Amount of stuff to slurp up with each read. */
1790 #ifndef YY_READ_BUF_SIZE
1791 #ifdef __ia64__
1792 /* On IA-64, the buffer size is 16k, not 8k */
1793 #define YY_READ_BUF_SIZE 16384
1794 #else
1795 #define YY_READ_BUF_SIZE 8192
1796 #endif /* __ia64__ */
1797 #endif
1798
1799 /* Copy whatever the last rule matched to the standard output. */
1800 #ifndef ECHO
1801 /* This used to be an fputs(), but since the string might contain NUL's,
1802 * we now use fwrite().
1803 */
1804 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
1805 #endif
1806
1807 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1808 * is returned in "result".
1809 */
1810 #ifndef YY_INPUT
1811 #define YY_INPUT(buf,result,max_size) \
1812 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1813 { \
1814 int c = '*'; \
1815 size_t n; \
1816 for ( n = 0; n < max_size && \
1817 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1818 buf[n] = (char) c; \
1819 if ( c == '\n' ) \
1820 buf[n++] = (char) c; \
1821 if ( c == EOF && ferror( yyin ) ) \
1822 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1823 result = n; \
1824 } \
1825 else \
1826 { \
1827 errno=0; \
1828 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
1829 { \
1830 if( errno != EINTR) \
1831 { \
1832 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1833 break; \
1834 } \
1835 errno=0; \
1836 clearerr(yyin); \
1837 } \
1838 }\
1839 \
1840
1841 #endif
1842
1843 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1844 * we don't want an extra ';' after the "return" because that will cause
1845 * some compilers to complain about unreachable statements.
1846 */
1847 #ifndef yyterminate
1848 #define yyterminate() return YY_NULL
1849 #endif
1850
1851 /* Number of entries by which start-condition stack grows. */
1852 #ifndef YY_START_STACK_INCR
1853 #define YY_START_STACK_INCR 25
1854 #endif
1855
1856 /* Report a fatal error. */
1857 #ifndef YY_FATAL_ERROR
1858 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1859 #endif
1860
1861 /* end tables serialization structures and prototypes */
1862
1863 /* Default declaration of generated scanner - a define so the user can
1864 * easily add parameters.
1865 */
1866 #ifndef YY_DECL
1867 #define YY_DECL_IS_OURS 1
1868
1869 extern int giac_yylex \
1870 (YYSTYPE * yylval_param ,yyscan_t yyscanner);
1871
1872 #define YY_DECL int giac_yylex \
1873 (YYSTYPE * yylval_param , yyscan_t yyscanner)
1874 #endif /* !YY_DECL */
1875
1876 /* Code executed at the beginning of each rule, after yytext and yyleng
1877 * have been set up.
1878 */
1879 #ifndef YY_USER_ACTION
1880 #define YY_USER_ACTION
1881 #endif
1882
1883 /* Code executed at the end of each rule. */
1884 #ifndef YY_BREAK
1885 #define YY_BREAK break;
1886 #endif
1887
1888 #define YY_RULE_SETUP \
1889 YY_USER_ACTION
1890
1891 /** The main scanner function which does all the work.
1892 */
1893 YY_DECL
1894 {
1895 register yy_state_type yy_current_state;
1896 register char *yy_cp, *yy_bp;
1897 register int yy_act;
1898 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1899
1900 #line 283 "input_lexer.ll"
1901
1902
1903 #line 1904 "input_lexer.cc"
1904
1905 yylval = yylval_param;
1906
1907 if ( !yyg->yy_init )
1908 {
1909 yyg->yy_init = 1;
1910
1911 #ifdef YY_USER_INIT
1912 YY_USER_INIT;
1913 #endif
1914
1915 if ( ! yyg->yy_start )
1916 yyg->yy_start = 1; /* first start state */
1917
1918 if ( ! yyin )
1919 yyin = stdin;
1920
1921 if ( ! yyout )
1922 yyout = stdout;
1923
1924 if ( ! YY_CURRENT_BUFFER ) {
1925 giac_yyensure_buffer_stack (yyscanner);
1926 YY_CURRENT_BUFFER_LVALUE =
1927 giac_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
1928 }
1929
1930 giac_yy_load_buffer_state(yyscanner );
1931 }
1932
1933 while ( 1 ) /* loops until end-of-file is reached */
1934 {
1935 yy_cp = yyg->yy_c_buf_p;
1936
1937 /* Support of yytext. */
1938 *yy_cp = yyg->yy_hold_char;
1939
1940 /* yy_bp points to the position in yy_ch_buf of the start of
1941 * the current run.
1942 */
1943 yy_bp = yy_cp;
1944
1945 yy_current_state = yyg->yy_start;
1946 yy_match:
1947 do
1948 {
1949 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1950 if ( yy_accept[yy_current_state] )
1951 {
1952 yyg->yy_last_accepting_state = yy_current_state;
1953 yyg->yy_last_accepting_cpos = yy_cp;
1954 }
1955 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1956 {
1957 yy_current_state = (int) yy_def[yy_current_state];
1958 if ( yy_current_state >= 1387 )
1959 yy_c = yy_meta[(unsigned int) yy_c];
1960 }
1961 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1962 ++yy_cp;
1963 }
1964 while ( yy_base[yy_current_state] != 2047 );
1965
1966 yy_find_action:
1967 yy_act = yy_accept[yy_current_state];
1968 if ( yy_act == 0 )
1969 { /* have to back up */
1970 yy_cp = yyg->yy_last_accepting_cpos;
1971 yy_current_state = yyg->yy_last_accepting_state;
1972 yy_act = yy_accept[yy_current_state];
1973 }
1974
1975 YY_DO_BEFORE_ACTION;
1976
1977 do_action: /* This label is used only to access EOF actions. */
1978
1979 switch ( yy_act )
1980 { /* beginning of action switch */
1981 case 0: /* must back up */
1982 /* undo the effects of YY_DO_BEFORE_ACTION */
1983 *yy_cp = yyg->yy_hold_char;
1984 yy_cp = yyg->yy_last_accepting_cpos;
1985 yy_current_state = yyg->yy_last_accepting_state;
1986 goto yy_find_action;
1987
1988 case 1:
1989 YY_RULE_SETUP
1990 #line 285 "input_lexer.ll"
1991 /* skip whitespace */
1992 YY_BREAK
1993 case 2:
1994 /* rule 2 can match eol */
1995 YY_RULE_SETUP
1996 #line 286 "input_lexer.ll"
1997 increment_lexer_line_number_setcol(yyscanner,yyextra); //CERR << "Scanning line " << lexer_line_number(yyextra) << '\n';
1998 YY_BREAK
1999 /* Strings */
2000 /* \"[^\"]*\" yylval = string2gen( giac_yytext); return T_STRING; */
2001 case 3:
2002 YY_RULE_SETUP
2003 #line 289 "input_lexer.ll"
2004 BEGIN(str); comment_s("",yyextra);
2005 YY_BREAK
2006 case 4:
2007 YY_RULE_SETUP
2008 #line 290 "input_lexer.ll"
2009 increment_comment_s('"',yyextra);
2010 YY_BREAK
2011 case 5:
2012 YY_RULE_SETUP
2013 #line 291 "input_lexer.ll"
2014 { index_status(yyextra)=1; BEGIN(INITIAL);
2015 (*yylval)=string2gen(comment_s(yyextra),false);
2016 return T_STRING; }
2017 YY_BREAK
2018 case 6:
2019 /* rule 6 can match eol */
2020 YY_RULE_SETUP
2021 #line 294 "input_lexer.ll"
2022 increment_comment_s('\n',yyextra); increment_lexer_line_number_setcol(yyscanner,yyextra);
2023 YY_BREAK
2024 case 7:
2025 YY_RULE_SETUP
2026 #line 295 "input_lexer.ll"
2027 {
2028 /* octal escape sequence */
2029 int result=0;
2030 (void) sscanf( yytext + 1, "%o", &result ); // not supported on FXCG
2031 increment_comment_s(char(result & 0xff),yyextra);
2032 }
2033 YY_BREAK
2034 case 8:
2035 YY_RULE_SETUP
2036 #line 301 "input_lexer.ll"
2037 {
2038 /* generate error - bad escape sequence; something
2039 * like '\48' or '\0777777'
2040 */
2041 }
2042 YY_BREAK
2043 case 9:
2044 YY_RULE_SETUP
2045 #line 306 "input_lexer.ll"
2046 increment_comment_s('\n',yyextra);
2047 YY_BREAK
2048 case 10:
2049 YY_RULE_SETUP
2050 #line 307 "input_lexer.ll"
2051 increment_comment_s('\t',yyextra);
2052 YY_BREAK
2053 case 11:
2054 YY_RULE_SETUP
2055 #line 308 "input_lexer.ll"
2056 increment_comment_s('\r',yyextra);
2057 YY_BREAK
2058 case 12:
2059 YY_RULE_SETUP
2060 #line 309 "input_lexer.ll"
2061 increment_comment_s('\b',yyextra);
2062 YY_BREAK
2063 case 13:
2064 YY_RULE_SETUP
2065 #line 310 "input_lexer.ll"
2066 increment_comment_s('\f',yyextra);
2067 YY_BREAK
2068 case 14:
2069 /* rule 14 can match eol */
2070 YY_RULE_SETUP
2071 #line 311 "input_lexer.ll"
2072 increment_comment_s(yytext[1],yyextra);
2073 YY_BREAK
2074 case 15:
2075 YY_RULE_SETUP
2076 #line 312 "input_lexer.ll"
2077 increment_comment_s(yytext,yyextra);
2078 YY_BREAK
2079 case 16:
2080 YY_RULE_SETUP
2081 #line 313 "input_lexer.ll"
2082 if (rpn_mode(yyextra)){ index_status(yyextra)=0; return T_ACCENTGRAVE; } else { BEGIN(backquote); comment_s("",yyextra); }
2083 YY_BREAK
2084 case 17:
2085 /* rule 17 can match eol */
2086 YY_RULE_SETUP
2087 #line 314 "input_lexer.ll"
2088 increment_comment_s('\n',yyextra); increment_lexer_line_number_setcol(yyscanner,yyextra);
2089 YY_BREAK
2090 case 18:
2091 YY_RULE_SETUP
2092 #line 315 "input_lexer.ll"
2093 increment_comment_s(yytext,yyextra);
2094 YY_BREAK
2095 case 19:
2096 YY_RULE_SETUP
2097 #line 316 "input_lexer.ll"
2098 { index_status(yyextra)=1; BEGIN(INITIAL);
2099 return find_or_make_symbol(comment_s(yyextra),(*yylval),yyscanner,true,yyextra); }
2100 YY_BREAK
2101 case 20:
2102 /* rule 20 can match eol */
2103 YY_RULE_SETUP
2104 #line 319 "input_lexer.ll"
2105 index_status(yyextra)=0; increment_lexer_line_number_setcol(yyscanner,yyextra);
2106 YY_BREAK
2107 case 21:
2108 /* rule 21 can match eol */
2109 YY_RULE_SETUP
2110 #line 320 "input_lexer.ll"
2111 index_status(yyextra)=0; increment_lexer_line_number_setcol(yyscanner,yyextra);/* (*yylval) = string2gen('"'+string(giac_yytext).substr(2,string(giac_yytext).size()-3)+'"'); return T_COMMENT; */
2112 YY_BREAK
2113 case 22:
2114 YY_RULE_SETUP
2115 #line 321 "input_lexer.ll"
2116 BEGIN(comment); comment_s(yyextra)="";
2117 YY_BREAK
2118 case 23:
2119 YY_RULE_SETUP
2120 #line 323 "input_lexer.ll"
2121 comment_s(yyextra)+=yytext; /* eat anything that's not a '*' */
2122 YY_BREAK
2123 case 24:
2124 YY_RULE_SETUP
2125 #line 324 "input_lexer.ll"
2126 comment_s(yyextra)+=yytext; /* eat up '*'s not followed by '/'s */
2127 YY_BREAK
2128 case 25:
2129 /* rule 25 can match eol */
2130 YY_RULE_SETUP
2131 #line 325 "input_lexer.ll"
2132 comment_s(yyextra) += '\n'; increment_lexer_line_number_setcol(yyscanner,yyextra); CERR << "(Comment) scanning line " << lexer_line_number(yyextra) << '\n';
2133 YY_BREAK
2134 case 26:
2135 YY_RULE_SETUP
2136 #line 326 "input_lexer.ll"
2137 BEGIN(INITIAL); index_status(yyextra)=0; /* (*yylval) = string2gen(comment_s(yyextra),false); return T_COMMENT; */
2138 YY_BREAK
2139 case 27:
2140 /* rule 27 can match eol */
2141 YY_RULE_SETUP
2142 #line 327 "input_lexer.ll"
2143 index_status(yyextra)=0; /* (*yylval) = string2gen('"'+string(yytext).substr(3,string(yytext).size()-6)+'"'); return T_COMMENT; */
2144 YY_BREAK
2145 case 28:
2146 /* rule 28 can match eol */
2147 YY_RULE_SETUP
2148 #line 328 "input_lexer.ll"
2149 index_status(yyextra)=0; /* (*yylval) = string2gen('"'+string(yytext).substr(3,string(yytext).size()-6)+'"'); return T_COMMENT; */
2150 YY_BREAK
2151 case 29:
2152 YY_RULE_SETUP
2153 #line 330 "input_lexer.ll"
2154 if (index_status(yyextra)) return T_INTERROGATION; if (calc_mode(yyextra)==1){ *yylval=undef; return T_SYMBOL;} return T_HELP;
2155 YY_BREAK
2156 case 30:
2157 YY_RULE_SETUP
2158 #line 331 "input_lexer.ll"
2159 opened_quote(yyextra) |= 2; return T_UNIT;
2160 YY_BREAK
2161 case 31:
2162 YY_RULE_SETUP
2163 #line 332 "input_lexer.ll"
2164 if (opened_quote(yyextra) & 1) { opened_quote(yyextra) &= 0x7ffffffe; return T_QUOTE; } if (index_status(yyextra) && !in_rpn(yyextra) && xcas_mode(yyextra)!= 1) return T_PRIME; opened_quote(yyextra) |= 1; return T_QUOTE;
2165 YY_BREAK
2166 case 32:
2167 YY_RULE_SETUP
2168 #line 333 "input_lexer.ll"
2169 index_status(yyextra)=0; if (xcas_mode(yyextra)==3) return TI_SEMI; (*yylval)=0; return T_SEMI;
2170 YY_BREAK
2171 /* commented otherwise for(;;) will not work ";;" index_status(yyextra)=0; if (xcas_mode(yyextra)==3) return TI_SEMI; (*yylval)=0; return T_SEMI; */
2172 case 33:
2173 YY_RULE_SETUP
2174 #line 335 "input_lexer.ll"
2175 index_status(yyextra)=0; if (xcas_mode(yyextra)==3) return T_SEMI; return TI_SEMI;
2176 YY_BREAK
2177 case 34:
2178 YY_RULE_SETUP
2179 #line 336 "input_lexer.ll"
2180 if (spread_formula(yyextra)) return T_DEUXPOINTS; if ( xcas_mode(yyextra)==3 ) { index_status(yyextra)=0; return TI_DEUXPOINTS; } index_status(yyextra)=0; if (xcas_mode(yyextra)>0) { (*yylval)=1; return T_SEMI; } else return T_DEUXPOINTS;
2181 YY_BREAK
2182 case 35:
2183 YY_RULE_SETUP
2184 #line 337 "input_lexer.ll"
2185 index_status(yyextra)=0; (*yylval)=1; return T_SEMI;
2186 YY_BREAK
2187 case 36:
2188 YY_RULE_SETUP
2189 #line 338 "input_lexer.ll"
2190 index_status(yyextra)=0;return T_DOUBLE_DEUX_POINTS;
2191 YY_BREAK
2192 /* special values */
2193 case 37:
2194 YY_RULE_SETUP
2195 #line 342 "input_lexer.ll"
2196 index_status(yyextra)=1; (*yylval)=theta__IDNT_e; return T_SYMBOL;
2197 YY_BREAK
2198 case 38:
2199 YY_RULE_SETUP
2200 #line 343 "input_lexer.ll"
2201 index_status(yyextra)=1; if (xcas_mode(yyextra) > 0 || !i_sqrt_minus1(yyextra)) { (*yylval)=i__IDNT_e; return T_SYMBOL; } else { (*yylval) = cst_i; return T_LITERAL;};
2202 YY_BREAK
2203 case 39:
2204 YY_RULE_SETUP
2205 #line 344 "input_lexer.ll"
2206 index_status(yyextra)=1; (*yylval) = cst_i; return T_LITERAL;
2207 YY_BREAK
2208 case 40:
2209 YY_RULE_SETUP
2210 #line 345 "input_lexer.ll"
2211 index_status(yyextra)=1; (*yylval) = cst_i; return T_LITERAL;
2212 YY_BREAK
2213 case 41:
2214 YY_RULE_SETUP
2215 #line 346 "input_lexer.ll"
2216 index_status(yyextra)=1; (*yylval) = cst_i; return T_LITERAL;
2217 YY_BREAK
2218 case 42:
2219 YY_RULE_SETUP
2220 #line 347 "input_lexer.ll"
2221 index_status(yyextra)=1; (*yylval) = cst_i; return T_LITERAL;
2222 YY_BREAK
2223 /* \xef\xbd\x89 index_status(yyextra)=1; (*yylval) = cst_i; return T_LITERAL; */
2224 case 43:
2225 YY_RULE_SETUP
2226 #line 349 "input_lexer.ll"
2227 index_status(yyextra)=1; (*yylval) = cst_i; return T_LITERAL;
2228 YY_BREAK
2229 case 44:
2230 YY_RULE_SETUP
2231 #line 350 "input_lexer.ll"
2232 index_status(yyextra)=1; if (xcas_mode(yyextra)==0 || xcas_mode(yyextra)==3 || rpn_mode(yyextra)) { return find_or_make_symbol(yytext,(*yylval),yyscanner,true,yyextra); } else { (*yylval) = cst_i; return T_LITERAL; };
2233 YY_BREAK
2234 case 45:
2235 YY_RULE_SETUP
2236 #line 351 "input_lexer.ll"
2237 index_status(yyextra)=1; (*yylval) = cst_i; return T_LITERAL;
2238 YY_BREAK
2239 case 46:
2240 YY_RULE_SETUP
2241 #line 352 "input_lexer.ll"
2242 index_status(yyextra)=1; (*yylval) = symbolic(at_exp,1); return T_LITERAL;
2243 YY_BREAK
2244 case 47:
2245 YY_RULE_SETUP
2246 #line 353 "input_lexer.ll"
2247 index_status(yyextra)=1; (*yylval) = cst_pi; return T_LITERAL;
2248 YY_BREAK
2249 case 48:
2250 YY_RULE_SETUP
2251 #line 354 "input_lexer.ll"
2252 index_status(yyextra)=1; (*yylval) = cst_pi; return T_LITERAL;
2253 YY_BREAK
2254 case 49:
2255 YY_RULE_SETUP
2256 #line 355 "input_lexer.ll"
2257 index_status(yyextra)=1; (*yylval) = cst_pi; return T_LITERAL;
2258 YY_BREAK
2259 case 50:
2260 YY_RULE_SETUP
2261 #line 356 "input_lexer.ll"
2262 index_status(yyextra)=1; (*yylval) = cst_pi; return T_LITERAL;
2263 YY_BREAK
2264 case 51:
2265 YY_RULE_SETUP
2266 #line 357 "input_lexer.ll"
2267 index_status(yyextra)=1; (*yylval) = cst_pi; return T_LITERAL;
2268 YY_BREAK
2269 case 52:
2270 YY_RULE_SETUP
2271 #line 358 "input_lexer.ll"
2272 index_status(yyextra)=1; (*yylval) = cst_euler_gamma; return T_LITERAL;
2273 YY_BREAK
2274 case 53:
2275 YY_RULE_SETUP
2276 #line 359 "input_lexer.ll"
2277 index_status(yyextra)=1; (*yylval) = unsigned_inf; return T_LITERAL;
2278 YY_BREAK
2279 case 54:
2280 YY_RULE_SETUP
2281 #line 360 "input_lexer.ll"
2282 index_status(yyextra)=1; (*yylval) = plus_inf; return T_LITERAL;
2283 YY_BREAK
2284 case 55:
2285 YY_RULE_SETUP
2286 #line 361 "input_lexer.ll"
2287 index_status(yyextra)=1; (*yylval) = unsigned_inf; return T_LITERAL;
2288 YY_BREAK
2289 case 56:
2290 YY_RULE_SETUP
2291 #line 362 "input_lexer.ll"
2292 index_status(yyextra)=1; (*yylval) = plus_inf; return T_LITERAL;
2293 YY_BREAK
2294 case 57:
2295 YY_RULE_SETUP
2296 #line 363 "input_lexer.ll"
2297 index_status(yyextra)=1; (*yylval) = plus_inf; return T_LITERAL;
2298 YY_BREAK
2299 case 58:
2300 YY_RULE_SETUP
2301 #line 364 "input_lexer.ll"
2302 index_status(yyextra)=1; (*yylval) = unsigned_inf; return T_LITERAL;
2303 YY_BREAK
2304 case 59:
2305 YY_RULE_SETUP
2306 #line 365 "input_lexer.ll"
2307 index_status(yyextra)=1; (*yylval) = plus_inf; return T_LITERAL;
2308 YY_BREAK
2309 case 60:
2310 YY_RULE_SETUP
2311 #line 366 "input_lexer.ll"
2312 index_status(yyextra)=1; (*yylval) = minus_inf; return T_LITERAL;
2313 YY_BREAK
2314 case 61:
2315 YY_RULE_SETUP
2316 #line 367 "input_lexer.ll"
2317 index_status(yyextra)=1; (*yylval) = undef; return T_LITERAL;
2318 YY_BREAK
2319 case 62:
2320 YY_RULE_SETUP
2321 #line 368 "input_lexer.ll"
2322 return T_END_INPUT;
2323 YY_BREAK
2324 /* integer values */
2325 case 63:
2326 YY_RULE_SETUP
2327 #line 371 "input_lexer.ll"
2328 if (xcas_mode(yyextra)==2){ (*yylval) = gen(at_user_operator,6); index_status(yyextra)=0; return T_UNARY_OP; } index_status(yyextra)=0; (*yylval) = _FUNC; (*yylval).subtype=_INT_TYPE; return T_TYPE_ID;
2329 YY_BREAK
2330 case 64:
2331 YY_RULE_SETUP
2332 #line 372 "input_lexer.ll"
2333 if (python_compat(yyextra)){ *yylval=at_python_list; return T_UNARY_OP; } if (xcas_mode(yyextra)==3) { index_status(yyextra)=1; return find_or_make_symbol(yytext,(*yylval),yyscanner,true,yyextra); } index_status(yyextra)=0; (*yylval) = _MAPLE_LIST ; (*yylval).subtype=_INT_MAPLECONVERSION ;return T_TYPE_ID;
2334 YY_BREAK
2335 /* vector/polynom/matrice delimiters */
2336 case 65:
2337 YY_RULE_SETUP
2338 #line 376 "input_lexer.ll"
2339 (*yylval) = _SEQ__VECT; return T_VECT_DISPATCH;
2340 YY_BREAK
2341 case 66:
2342 YY_RULE_SETUP
2343 #line 377 "input_lexer.ll"
2344 (*yylval) = _SET__VECT; return T_VECT_DISPATCH;
2345 YY_BREAK
2346 case 67:
2347 YY_RULE_SETUP
2348 #line 378 "input_lexer.ll"
2349 (*yylval) = _INTERVAL__VECT; return T_VECT_DISPATCH;
2350 YY_BREAK
2351 case 68:
2352 YY_RULE_SETUP
2353 #line 379 "input_lexer.ll"
2354 index_status(yyextra)=0; (*yylval) = _LIST__VECT; return T_VECT_DISPATCH;
2355 YY_BREAK
2356 /* "list(" index_status(yyextra)=0; (*yylval) = _LIST__VECT; return T_BEGIN_PAR; */
2357 case 69:
2358 YY_RULE_SETUP
2359 #line 381 "input_lexer.ll"
2360 (*yylval) = _RPN_FUNC__VECT; return T_VECT_DISPATCH;
2361 YY_BREAK
2362 case 70:
2363 YY_RULE_SETUP
2364 #line 382 "input_lexer.ll"
2365 (*yylval) = _GROUP__VECT; return T_VECT_DISPATCH;
2366 YY_BREAK
2367 case 71:
2368 YY_RULE_SETUP
2369 #line 383 "input_lexer.ll"
2370 (*yylval) = _LINE__VECT; return T_VECT_DISPATCH;
2371 YY_BREAK
2372 case 72:
2373 YY_RULE_SETUP
2374 #line 384 "input_lexer.ll"
2375 (*yylval) = _VECTOR__VECT; return T_VECT_DISPATCH;
2376 YY_BREAK
2377 case 73:
2378 YY_RULE_SETUP
2379 #line 385 "input_lexer.ll"
2380 (*yylval) = _MATRIX__VECT; return T_VECT_DISPATCH;
2381 YY_BREAK
2382 case 74:
2383 YY_RULE_SETUP
2384 #line 386 "input_lexer.ll"
2385 (*yylval) = _PNT__VECT; return T_VECT_DISPATCH;
2386 YY_BREAK
2387 case 75:
2388 YY_RULE_SETUP
2389 #line 387 "input_lexer.ll"
2390 (*yylval) = _GGB__VECT; return T_VECT_DISPATCH;
2391 YY_BREAK
2392 case 76:
2393 YY_RULE_SETUP
2394 #line 388 "input_lexer.ll"
2395 (*yylval) = _GGBVECT; return T_VECT_DISPATCH;
2396 YY_BREAK
2397 case 77:
2398 YY_RULE_SETUP
2399 #line 389 "input_lexer.ll"
2400 (*yylval) = _POINT__VECT; return T_VECT_DISPATCH;
2401 YY_BREAK
2402 case 78:
2403 YY_RULE_SETUP
2404 #line 390 "input_lexer.ll"
2405 (*yylval) = _TUPLE__VECT; return T_VECT_DISPATCH;
2406 YY_BREAK
2407 case 79:
2408 YY_RULE_SETUP
2409 #line 391 "input_lexer.ll"
2410 (*yylval) = _CURVE__VECT; return T_VECT_DISPATCH;
2411 YY_BREAK
2412 case 80:
2413 YY_RULE_SETUP
2414 #line 392 "input_lexer.ll"
2415 (*yylval) = _HALFLINE__VECT; return T_VECT_DISPATCH;
2416 YY_BREAK
2417 case 81:
2418 YY_RULE_SETUP
2419 #line 393 "input_lexer.ll"
2420 (*yylval) = _POLY1__VECT; return T_VECT_DISPATCH;
2421 YY_BREAK
2422 case 82:
2423 YY_RULE_SETUP
2424 #line 394 "input_lexer.ll"
2425 (*yylval) = _ASSUME__VECT; return T_VECT_DISPATCH;
2426 YY_BREAK
2427 case 83:
2428 YY_RULE_SETUP
2429 #line 395 "input_lexer.ll"
2430 (*yylval) = _LOGO__VECT; return T_VECT_DISPATCH;
2431 YY_BREAK
2432 case 84:
2433 YY_RULE_SETUP
2434 #line 396 "input_lexer.ll"
2435 (*yylval) = _SPREAD__VECT; return T_VECT_DISPATCH;
2436 YY_BREAK
2437 case 85:
2438 YY_RULE_SETUP
2439 #line 397 "input_lexer.ll"
2440 (*yylval) = _FOLDER__VECT; return T_VECT_DISPATCH;
2441 YY_BREAK
2442 case 86:
2443 YY_RULE_SETUP
2444 #line 398 "input_lexer.ll"
2445 (*yylval) = _POLYEDRE__VECT; return T_VECT_DISPATCH;
2446 YY_BREAK
2447 case 87:
2448 YY_RULE_SETUP
2449 #line 399 "input_lexer.ll"
2450 (*yylval) = _RGBA__VECT; return T_VECT_DISPATCH;
2451 YY_BREAK
2452 case 88:
2453 YY_RULE_SETUP
2454 #line 400 "input_lexer.ll"
2455 index_status(yyextra)=0; (*yylval) = _LIST__VECT; return T_VECT_DISPATCH;
2456 YY_BREAK
2457 case 89:
2458 YY_RULE_SETUP
2459 #line 401 "input_lexer.ll"
2460 index_status(yyextra)=1; return T_VECT_END;
2461 YY_BREAK
2462 case 90:
2463 YY_RULE_SETUP
2464 #line 402 "input_lexer.ll"
2465 index_status(yyextra)=0; (*yylval)=gen(at_inferieur_strict,2); return T_TEST_EQUAL;
2466 YY_BREAK
2467 case 91:
2468 YY_RULE_SETUP
2469 #line 403 "input_lexer.ll"
2470 index_status(yyextra)=0; (*yylval)=gen(at_superieur_strict,2); return T_TEST_EQUAL;
2471 YY_BREAK
2472 case 92:
2473 YY_RULE_SETUP
2474 #line 404 "input_lexer.ll"
2475 index_status(yyextra)=0; (*yylval)=gen(at_inferieur_strict,2); return T_TEST_EQUAL;
2476 YY_BREAK
2477 case 93:
2478 YY_RULE_SETUP
2479 #line 405 "input_lexer.ll"
2480 index_status(yyextra)=0; (*yylval)=gen(at_inferieur_egal,2); return T_TEST_EQUAL;
2481 YY_BREAK
2482 case 94:
2483 YY_RULE_SETUP
2484 #line 406 "input_lexer.ll"
2485 index_status(yyextra)=0; (*yylval)=gen(at_superieur_strict,2); return T_TEST_EQUAL;
2486 YY_BREAK
2487 case 95:
2488 YY_RULE_SETUP
2489 #line 407 "input_lexer.ll"
2490 index_status(yyextra)=0; (*yylval)=gen(at_superieur_egal,2); return T_TEST_EQUAL;
2491 YY_BREAK
2492 case 96:
2493 YY_RULE_SETUP
2494 #line 408 "input_lexer.ll"
2495 index_status(yyextra)=0; return T_VIRGULE;
2496 YY_BREAK
2497 case 97:
2498 YY_RULE_SETUP
2499 #line 409 "input_lexer.ll"
2500 index_status(yyextra)=0; return T_VIRGULE;
2501 YY_BREAK
2502 case 98:
2503 YY_RULE_SETUP
2504 #line 410 "input_lexer.ll"
2505 index_status(yyextra)=0; *yylval = 0; return T_BEGIN_PAR;
2506 YY_BREAK
2507 case 99:
2508 YY_RULE_SETUP
2509 #line 411 "input_lexer.ll"
2510 index_status(yyextra)=1; return T_END_PAR;
2511 YY_BREAK
2512 case 100:
2513 YY_RULE_SETUP
2514 #line 412 "input_lexer.ll"
2515 if (index_status(yyextra)) { index_status(yyextra)=0; return T_INDEX_BEGIN; } else { (*yylval) = 0; return T_VECT_DISPATCH; } ;
2516 YY_BREAK
2517 case 101:
2518 YY_RULE_SETUP
2519 #line 413 "input_lexer.ll"
2520 index_status(yyextra)=1; return T_VECT_END;
2521 YY_BREAK
2522 case 102:
2523 YY_RULE_SETUP
2524 #line 414 "input_lexer.ll"
2525 index_status(yyextra)=1; return T_VECT_END;
2526 YY_BREAK
2527 case 103:
2528 YY_RULE_SETUP
2529 #line 415 "input_lexer.ll"
2530 index_status(yyextra)=0; (*yylval) = _POLY1__VECT; return T_VECT_DISPATCH;
2531 YY_BREAK
2532 case 104:
2533 YY_RULE_SETUP
2534 #line 416 "input_lexer.ll"
2535 index_status(yyextra)=1; return T_VECT_END;
2536 YY_BREAK
2537 case 105:
2538 YY_RULE_SETUP
2539 #line 417 "input_lexer.ll"
2540 index_status(yyextra)=0; (*yylval) = _MATRIX__VECT; return T_VECT_DISPATCH;
2541 YY_BREAK
2542 case 106:
2543 YY_RULE_SETUP
2544 #line 418 "input_lexer.ll"
2545 index_status(yyextra)=1; return T_VECT_END;
2546 YY_BREAK
2547 case 107:
2548 YY_RULE_SETUP
2549 #line 419 "input_lexer.ll"
2550 index_status(yyextra)=0; (*yylval) = _ASSUME__VECT; return T_VECT_DISPATCH;
2551 YY_BREAK
2552 case 108:
2553 YY_RULE_SETUP
2554 #line 420 "input_lexer.ll"
2555 index_status(yyextra)=1; return T_VECT_END;
2556 YY_BREAK
2557 /* geometric delimiters */
2558 case 109:
2559 YY_RULE_SETUP
2560 #line 422 "input_lexer.ll"
2561 index_status(yyextra)=0; (*yylval) = _GROUP__VECT; return T_VECT_DISPATCH;
2562 YY_BREAK
2563 case 110:
2564 YY_RULE_SETUP
2565 #line 423 "input_lexer.ll"
2566 index_status(yyextra)=1; return T_VECT_END;
2567 YY_BREAK
2568 case 111:
2569 YY_RULE_SETUP
2570 #line 424 "input_lexer.ll"
2571 index_status(yyextra)=0; (*yylval) = _LINE__VECT; return T_VECT_DISPATCH;
2572 YY_BREAK
2573 case 112:
2574 YY_RULE_SETUP
2575 #line 425 "input_lexer.ll"
2576 index_status(yyextra)=1; return T_VECT_END;
2577 YY_BREAK
2578 case 113:
2579 YY_RULE_SETUP
2580 #line 426 "input_lexer.ll"
2581 index_status(yyextra)=0; (*yylval) = _VECTOR__VECT; return T_VECT_DISPATCH;
2582 YY_BREAK
2583 case 114:
2584 YY_RULE_SETUP
2585 #line 427 "input_lexer.ll"
2586 index_status(yyextra)=1; return T_VECT_END;
2587 YY_BREAK
2588 case 115:
2589 YY_RULE_SETUP
2590 #line 428 "input_lexer.ll"
2591 index_status(yyextra)=0; (*yylval) = _CURVE__VECT; return T_VECT_DISPATCH;
2592 YY_BREAK
2593 case 116:
2594 YY_RULE_SETUP
2595 #line 429 "input_lexer.ll"
2596 index_status(yyextra)=1; return T_VECT_END;
2597 YY_BREAK
2598 /* gen delimiters */
2599 case 117:
2600 YY_RULE_SETUP
2601 #line 431 "input_lexer.ll"
2602 index_status(yyextra)=0; (*yylval)=_TABLE__VECT;return T_VECT_DISPATCH;
2603 YY_BREAK
2604 case 118:
2605 YY_RULE_SETUP
2606 #line 432 "input_lexer.ll"
2607 index_status(yyextra)=1; return T_VECT_END;
2608 YY_BREAK
2609 case 119:
2610 YY_RULE_SETUP
2611 #line 433 "input_lexer.ll"
2612 index_status(yyextra)=0; if (rpn_mode(yyextra)||calc_mode(yyextra)==1) { (*yylval)=0; return T_VECT_DISPATCH; } if (xcas_mode(yyextra)==3 || abs_calc_mode(yyextra)==38){ (*yylval) = _LIST__VECT; return T_VECT_DISPATCH; } if (xcas_mode(yyextra) > 0 ){ (*yylval)=_SET__VECT; return T_VECT_DISPATCH; } else return T_BLOC_BEGIN;
2613 YY_BREAK
2614 case 120:
2615 YY_RULE_SETUP
2616 #line 434 "input_lexer.ll"
2617 index_status(yyextra)=1; if (rpn_mode(yyextra) || calc_mode(yyextra)==1 || python_compat(yyextra)) return T_VECT_END; if (xcas_mode(yyextra)==3 || abs_calc_mode(yyextra)==38) return T_VECT_END; if (xcas_mode(yyextra) > 0) return T_VECT_END; else return T_BLOC_END;
2618 YY_BREAK
2619 case 121:
2620 YY_RULE_SETUP
2621 #line 435 "input_lexer.ll"
2622 index_status(yyextra)=0; (*yylval)=_SET__VECT; return T_VECT_DISPATCH;
2623 YY_BREAK
2624 case 122:
2625 YY_RULE_SETUP
2626 #line 436 "input_lexer.ll"
2627 index_status(yyextra)=1; return T_VECT_END;
2628 YY_BREAK
2629 case 123:
2630 YY_RULE_SETUP
2631 #line 437 "input_lexer.ll"
2632 index_status(yyextra)=0; return T_ROOTOF_BEGIN;
2633 YY_BREAK
2634 case 124:
2635 YY_RULE_SETUP
2636 #line 438 "input_lexer.ll"
2637 index_status(yyextra)=1; return T_ROOTOF_END;
2638 YY_BREAK
2639 case 125:
2640 YY_RULE_SETUP
2641 #line 439 "input_lexer.ll"
2642 index_status(yyextra)=0; return T_SPOLY1_BEGIN;
2643 YY_BREAK
2644 case 126:
2645 YY_RULE_SETUP
2646 #line 440 "input_lexer.ll"
2647 index_status(yyextra)=1; return T_SPOLY1_END;
2648 YY_BREAK
2649 case 127:
2650 YY_RULE_SETUP
2651 #line 441 "input_lexer.ll"
2652 index_status(yyextra)=0; if (abs_calc_mode(yyextra)!=38){ (*yylval)=gen(at_rotate,2); return T_UNION; } ++in_rpn(yyextra); return T_RPN_BEGIN;
2653 YY_BREAK
2654 case 128:
2655 YY_RULE_SETUP
2656 #line 442 "input_lexer.ll"
2657 index_status(yyextra)=0; if (abs_calc_mode(yyextra)!=38){ (*yylval)=gen(at_shift,2); return T_UNION; } --in_rpn(yyextra); return T_RPN_END;
2658 YY_BREAK
2659 /* binary operators */
2660 case 129:
2661 YY_RULE_SETUP
2662 #line 445 "input_lexer.ll"
2663 index_status(yyextra)=0; return T_MAPSTO;
2664 YY_BREAK
2665 case 130:
2666 YY_RULE_SETUP
2667 #line 446 "input_lexer.ll"
2668 (*yylval) = gen(at_couleur,2); index_status(yyextra)=0; return T_INTERVAL;
2669 YY_BREAK
2670 case 131:
2671 YY_RULE_SETUP
2672 #line 447 "input_lexer.ll"
2673 index_status(yyextra)=0; (*yylval)=gen(at_same,2); return T_TEST_EQUAL;
2674 YY_BREAK
2675 case 132:
2676 YY_RULE_SETUP
2677 #line 448 "input_lexer.ll"
2678 index_status(yyextra)=0; (*yylval)=gen(at_equal,2); return T_EQUAL;
2679 YY_BREAK
2680 case 133:
2681 YY_RULE_SETUP
2682 #line 449 "input_lexer.ll"
2683 index_status(yyextra)=0; (*yylval)=gen(at_deuxpoints,2); return T_DEUXPOINTS;
2684 YY_BREAK
2685 case 134:
2686 YY_RULE_SETUP
2687 #line 450 "input_lexer.ll"
2688 index_status(yyextra)=0; (*yylval)=gen(at_same,2); return T_QUOTED_BINARY;
2689 YY_BREAK
2690 case 135:
2691 YY_RULE_SETUP
2692 #line 451 "input_lexer.ll"
2693 index_status(yyextra)=0; (*yylval)=gen(at_same,2); return T_QUOTED_BINARY;
2694 YY_BREAK
2695 case 136:
2696 YY_RULE_SETUP
2697 #line 452 "input_lexer.ll"
2698 index_status(yyextra)=0; (*yylval)=gen(at_different,2); return T_TEST_EQUAL;
2699 YY_BREAK
2700 case 137:
2701 YY_RULE_SETUP
2702 #line 453 "input_lexer.ll"
2703 index_status(yyextra)=0; (*yylval)=gen(at_different,2); return T_QUOTED_BINARY;
2704 YY_BREAK
2705 case 138:
2706 YY_RULE_SETUP
2707 #line 454 "input_lexer.ll"
2708 index_status(yyextra)=0; (*yylval)=gen(at_different,2); return T_TEST_EQUAL;
2709 YY_BREAK
2710 case 139:
2711 YY_RULE_SETUP
2712 #line 455 "input_lexer.ll"
2713 index_status(yyextra)=0; (*yylval)=gen(at_different,2); return T_QUOTED_BINARY;
2714 YY_BREAK
2715 case 140:
2716 YY_RULE_SETUP
2717 #line 456 "input_lexer.ll"
2718 index_status(yyextra)=0; (*yylval)=gen(at_different,2); return T_QUOTED_BINARY;
2719 YY_BREAK
2720 case 141:
2721 YY_RULE_SETUP
2722 #line 457 "input_lexer.ll"
2723 index_status(yyextra)=0; (*yylval)=gen(at_inferieur_egal,2); return T_QUOTED_BINARY;
2724 YY_BREAK
2725 case 142:
2726 YY_RULE_SETUP
2727 #line 458 "input_lexer.ll"
2728 index_status(yyextra)=0; (*yylval)=gen(at_inferieur_egal,2); return T_QUOTED_BINARY;
2729 YY_BREAK
2730 case 143:
2731 YY_RULE_SETUP
2732 #line 459 "input_lexer.ll"
2733 index_status(yyextra)=0; (*yylval)=gen(at_inferieur_egal,2); return T_TEST_EQUAL;
2734 YY_BREAK
2735 case 144:
2736 YY_RULE_SETUP
2737 #line 460 "input_lexer.ll"
2738 index_status(yyextra)=0; (*yylval)=gen(at_inferieur_strict,2); return T_QUOTED_BINARY;
2739 YY_BREAK
2740 case 145:
2741 YY_RULE_SETUP
2742 #line 461 "input_lexer.ll"
2743 index_status(yyextra)=0; (*yylval)=gen(at_inferieur_strict,2); return T_QUOTED_BINARY;
2744 YY_BREAK
2745 case 146:
2746 YY_RULE_SETUP
2747 #line 462 "input_lexer.ll"
2748 index_status(yyextra)=0; (*yylval)=gen(at_superieur_strict,2); return T_QUOTED_BINARY;
2749 YY_BREAK
2750 case 147:
2751 YY_RULE_SETUP
2752 #line 463 "input_lexer.ll"
2753 index_status(yyextra)=0; (*yylval)=gen(at_superieur_egal,2); return T_TEST_EQUAL;
2754 YY_BREAK
2755 case 148:
2756 YY_RULE_SETUP
2757 #line 464 "input_lexer.ll"
2758 index_status(yyextra)=0; (*yylval)=gen(at_superieur_egal,2); return T_QUOTED_BINARY;
2759 YY_BREAK
2760 case 149:
2761 YY_RULE_SETUP
2762 #line 465 "input_lexer.ll"
2763 spread_formula(yyextra)=!index_status(yyextra); index_status(yyextra)=0; (*yylval)=gen(at_equal,2); return T_EQUAL;
2764 YY_BREAK
2765 case 150:
2766 YY_RULE_SETUP
2767 #line 466 "input_lexer.ll"
2768 spread_formula(yyextra)=!index_status(yyextra); index_status(yyextra)=0; (*yylval)=gen(at_equal2,2); return T_EQUAL;
2769 YY_BREAK
2770 case 151:
2771 YY_RULE_SETUP
2772 #line 467 "input_lexer.ll"
2773 index_status(yyextra)=0; (*yylval)=gen(at_equal,2); return T_QUOTED_BINARY;
2774 YY_BREAK
2775 case 152:
2776 YY_RULE_SETUP
2777 #line 468 "input_lexer.ll"
2778 index_status(yyextra)=0; (*yylval)=gen(at_dollar,2); if (xcas_mode(yyextra)>0) return T_DOLLAR_MAPLE; else return T_DOLLAR;
2779 YY_BREAK
2780 case 153:
2781 YY_RULE_SETUP
2782 #line 469 "input_lexer.ll"
2783 index_status(yyextra)=0; (*yylval)=gen(at_dollar,2); return T_DOLLAR_MAPLE;
2784 YY_BREAK
2785 case 154:
2786 YY_RULE_SETUP
2787 #line 470 "input_lexer.ll"
2788 index_status(yyextra)=0; (*yylval)=gen(at_dollar,2); return T_QUOTED_BINARY;
2789 YY_BREAK
2790 case 155:
2791 YY_RULE_SETUP
2792 #line 471 "input_lexer.ll"
2793 index_status(yyextra)=0; (*yylval)=gen(at_dollar,2); return T_QUOTED_BINARY;
2794 YY_BREAK
2795 case 156:
2796 YY_RULE_SETUP
2797 #line 472 "input_lexer.ll"
2798 index_status(yyextra)=0; (*yylval)=gen(at_sto,2); return T_AFFECT;
2799 YY_BREAK
2800 case 157:
2801 YY_RULE_SETUP
2802 #line 473 "input_lexer.ll"
2803 index_status(yyextra)=0; (*yylval)=gen(at_sto,2); return T_QUOTED_BINARY;
2804 YY_BREAK
2805 case 158:
2806 YY_RULE_SETUP
2807 #line 474 "input_lexer.ll"
2808 index_status(yyextra)=0; (*yylval)=gen(at_sto,2); return T_QUOTED_BINARY;
2809 YY_BREAK
2810 case 159:
2811 YY_RULE_SETUP
2812 #line 475 "input_lexer.ll"
2813 index_status(yyextra)=0; (*yylval)=gen(at_sto,2); return TI_STO;
2814 YY_BREAK
2815 case 160:
2816 YY_RULE_SETUP
2817 #line 476 "input_lexer.ll"
2818 index_status(yyextra)=0; (*yylval)=gen(at_sto,2); return TI_STO;
2819 YY_BREAK
2820 case 161:
2821 YY_RULE_SETUP
2822 #line 477 "input_lexer.ll"
2823 index_status(yyextra)=0; if (xcas_mode(yyextra)==3){ (*yylval)=gen(at_sto,2); return TI_STO; } else return T_MAPSTO;
2824 YY_BREAK
2825 case 162:
2826 YY_RULE_SETUP
2827 #line 478 "input_lexer.ll"
2828 index_status(yyextra)=0; (*yylval)=gen(at_sto,2); return TI_STO;
2829 YY_BREAK
2830 case 163:
2831 YY_RULE_SETUP
2832 #line 479 "input_lexer.ll"
2833 index_status(yyextra)=0; (*yylval)=gen(at_sto,2); return TI_STO;
2834 YY_BREAK
2835 case 164:
2836 YY_RULE_SETUP
2837 #line 480 "input_lexer.ll"
2838 index_status(yyextra)=0; (*yylval)=gen(at_array_sto,2); return T_AFFECT;
2839 YY_BREAK
2840 case 165:
2841 YY_RULE_SETUP
2842 #line 481 "input_lexer.ll"
2843 index_status(yyextra)=0; (*yylval)=gen(at_array_sto,2); return T_AFFECT;
2844 YY_BREAK
2845 case 166:
2846 YY_RULE_SETUP
2847 #line 482 "input_lexer.ll"
2848 index_status(yyextra)=1; yytext[0]='0'; (*yylval) = symb_double_deux_points(makevecteur(_IDNT_id_at,chartab2gen(yytext,yyextra))); return T_SYMBOL;
2849 YY_BREAK
2850 case 167:
2851 YY_RULE_SETUP
2852 #line 483 "input_lexer.ll"
2853 if (xcas_mode(yyextra)!=3) {index_status(yyextra)=0; (*yylval)=gen(at_compose,2); return T_COMPOSE; } BEGIN(comment_hash);
2854 YY_BREAK
2855 case 168:
2856 YY_RULE_SETUP
2857 #line 484 "input_lexer.ll"
2858 index_status(yyextra)=0; (*yylval)=gen(at_composepow,2); return T_POW;
2859 YY_BREAK
2860 case 169:
2861 YY_RULE_SETUP
2862 #line 485 "input_lexer.ll"
2863 index_status(yyextra)=0; (*yylval)=gen(at_composepow,2); return T_QUOTED_BINARY;
2864 YY_BREAK
2865 case 170:
2866 YY_RULE_SETUP
2867 #line 486 "input_lexer.ll"
2868 index_status(yyextra)=0; (*yylval)=gen(at_composepow,2); return T_QUOTED_BINARY;
2869 YY_BREAK
2870 case 171:
2871 YY_RULE_SETUP
2872 #line 487 "input_lexer.ll"
2873 index_status(yyextra)=0; (*yylval)=gen(at_compose,2); return T_QUOTED_BINARY;
2874 YY_BREAK
2875 case 172:
2876 YY_RULE_SETUP
2877 #line 488 "input_lexer.ll"
2878 index_status(yyextra)=0; (*yylval)=gen(at_compose,2); return T_QUOTED_BINARY;
2879 YY_BREAK
2880 case 173:
2881 YY_RULE_SETUP
2882 #line 489 "input_lexer.ll"
2883 index_status(yyextra)=0; (*yylval)=gen(at_and,2); return T_AND_OP;
2884 YY_BREAK
2885 case 174:
2886 YY_RULE_SETUP
2887 #line 490 "input_lexer.ll"
2888 index_status(yyextra)=0; (*yylval)=gen(at_and,2); return T_AND_OP;
2889 YY_BREAK
2890 case 175:
2891 YY_RULE_SETUP
2892 #line 491 "input_lexer.ll"
2893 index_status(yyextra)=0; (*yylval)=gen(at_and,2); return T_AND_OP;
2894 YY_BREAK
2895 case 176:
2896 YY_RULE_SETUP
2897 #line 492 "input_lexer.ll"
2898 index_status(yyextra)=0; (*yylval)=gen(at_and,2); return T_QUOTED_BINARY;
2899 YY_BREAK
2900 case 177:
2901 YY_RULE_SETUP
2902 #line 493 "input_lexer.ll"
2903 index_status(yyextra)=0; (*yylval)=gen(at_and,2); return T_QUOTED_BINARY;
2904 YY_BREAK
2905 case 178:
2906 YY_RULE_SETUP
2907 #line 494 "input_lexer.ll"
2908 index_status(yyextra)=0; (*yylval)=gen(at_and,2); return T_QUOTED_BINARY;
2909 YY_BREAK
2910 case 179:
2911 YY_RULE_SETUP
2912 #line 495 "input_lexer.ll"
2913 index_status(yyextra)=0; (*yylval)=gen(at_tilocal,2); return T_PIPE;
2914 YY_BREAK
2915 case 180:
2916 YY_RULE_SETUP
2917 #line 496 "input_lexer.ll"
2918 index_status(yyextra)=0; (*yylval)=gen(at_ou,2); return T_AND_OP;
2919 YY_BREAK
2920 case 181:
2921 YY_RULE_SETUP
2922 #line 497 "input_lexer.ll"
2923 index_status(yyextra)=0; (*yylval)=gen(at_ou,2); return T_QUOTED_BINARY;
2924 YY_BREAK
2925 case 182:
2926 YY_RULE_SETUP
2927 #line 498 "input_lexer.ll"
2928 index_status(yyextra)=0; (*yylval)=gen(at_ou,2); return T_QUOTED_BINARY;
2929 YY_BREAK
2930 case 183:
2931 YY_RULE_SETUP
2932 #line 499 "input_lexer.ll"
2933 index_status(yyextra)=0; (*yylval)=gen(at_ou,2); return T_QUOTED_BINARY;
2934 YY_BREAK
2935 case 184:
2936 YY_RULE_SETUP
2937 #line 500 "input_lexer.ll"
2938 index_status(yyextra)=0; (*yylval)=gen(at_ou,2); return T_AND_OP;
2939 YY_BREAK
2940 case 185:
2941 YY_RULE_SETUP
2942 #line 501 "input_lexer.ll"
2943 index_status(yyextra)=0; (*yylval)=gen(at_xor,2); return T_AND_OP;
2944 YY_BREAK
2945 case 186:
2946 YY_RULE_SETUP
2947 #line 502 "input_lexer.ll"
2948 index_status(yyextra)=0; (*yylval)=gen(at_xor,2); return T_QUOTED_BINARY;
2949 YY_BREAK
2950 case 187:
2951 YY_RULE_SETUP
2952 #line 503 "input_lexer.ll"
2953 index_status(yyextra)=0; (*yylval)=gen(at_xor,2); return T_QUOTED_BINARY;
2954 YY_BREAK
2955 case 188:
2956 YY_RULE_SETUP
2957 #line 504 "input_lexer.ll"
2958 index_status(yyextra)=0; (*yylval)=gen(at_xor,2); return T_AND_OP;
2959 YY_BREAK
2960 case 189:
2961 YY_RULE_SETUP
2962 #line 505 "input_lexer.ll"
2963 index_status(yyextra)=0; (*yylval)=gen(at_interval,2); return T_INTERVAL;
2964 YY_BREAK
2965 case 190:
2966 YY_RULE_SETUP
2967 #line 506 "input_lexer.ll"
2968 index_status(yyextra)=0; (*yylval)=gen(at_interval,2); return T_UNARY_OP;
2969 YY_BREAK
2970 case 191:
2971 YY_RULE_SETUP
2972 #line 507 "input_lexer.ll"
2973 index_status(yyextra)=0; (*yylval)=gen(at_sort,1); return T_UNARY_OP;
2974 YY_BREAK
2975 case 192:
2976 YY_RULE_SETUP
2977 #line 508 "input_lexer.ll"
2978 index_status(yyextra)=0; (*yylval)=gen(at_interval,2); return T_INTERVAL;
2979 YY_BREAK
2980 case 193:
2981 YY_RULE_SETUP
2982 #line 509 "input_lexer.ll"
2983 index_status(yyextra)=0; (*yylval)=gen(at_interval,2); return T_QUOTED_BINARY;
2984 YY_BREAK
2985 case 194:
2986 YY_RULE_SETUP
2987 #line 510 "input_lexer.ll"
2988 index_status(yyextra)=0; (*yylval)=gen(at_interval,2); return T_QUOTED_BINARY;
2989 YY_BREAK
2990 case 195:
2991 YY_RULE_SETUP
2992 #line 511 "input_lexer.ll"
2993 if (xcas_mode(yyextra) || index_status(yyextra)) { (*yylval)=gen(at_factorial); return T_FACTORIAL; } else { index_status(yyextra)=0; (*yylval)=gen(at_not,1); return T_NOT; }
2994 YY_BREAK
2995 /* standard functions */
2996 case 196:
2997 YY_RULE_SETUP
2998 #line 514 "input_lexer.ll"
2999 index_status(yyextra)=1; (*yylval)=symbolic(at_Ans,0); return T_LITERAL;
3000 YY_BREAK
3001 case 197:
3002 YY_RULE_SETUP
3003 #line 515 "input_lexer.ll"
3004 index_status(yyextra)=0; (*yylval)=gen(at_plus,2); return T_PLUS;
3005 YY_BREAK
3006 case 198:
3007 YY_RULE_SETUP
3008 #line 516 "input_lexer.ll"
3009 index_status(yyextra)=0; (*yylval)=gen(at_increment,1); return T_FACTORIAL;
3010 YY_BREAK
3011 case 199:
3012 YY_RULE_SETUP
3013 #line 517 "input_lexer.ll"
3014 index_status(yyextra)=0; (*yylval)=gen(at_increment,1); return T_UNION;
3015 YY_BREAK
3016 case 200:
3017 YY_RULE_SETUP
3018 #line 518 "input_lexer.ll"
3019 index_status(yyextra)=0; (*yylval)=gen(at_increment,1); return T_UNION;
3020 YY_BREAK
3021 case 201:
3022 YY_RULE_SETUP
3023 #line 519 "input_lexer.ll"
3024 index_status(yyextra)=0; (*yylval)=gen(at_powsto,1); return T_UNION;
3025 YY_BREAK
3026 case 202:
3027 YY_RULE_SETUP
3028 #line 520 "input_lexer.ll"
3029 index_status(yyextra)=0; (*yylval)=gen(at_powsto,1); return T_UNION;
3030 YY_BREAK
3031 case 203:
3032 YY_RULE_SETUP
3033 #line 521 "input_lexer.ll"
3034 index_status(yyextra)=0; (*yylval)=gen(at_decrement,1); return T_FACTORIAL;
3035 YY_BREAK
3036 case 204:
3037 YY_RULE_SETUP
3038 #line 522 "input_lexer.ll"
3039 index_status(yyextra)=0; (*yylval)=gen(at_decrement,1); return T_UNION;
3040 YY_BREAK
3041 case 205:
3042 YY_RULE_SETUP
3043 #line 523 "input_lexer.ll"
3044 index_status(yyextra)=0; (*yylval)=gen(at_decrement,1); return T_UNION;
3045 YY_BREAK
3046 case 206:
3047 YY_RULE_SETUP
3048 #line 524 "input_lexer.ll"
3049 index_status(yyextra)=0; (*yylval)=gen(at_pointplus,2); return T_PLUS;
3050 YY_BREAK
3051 case 207:
3052 YY_RULE_SETUP
3053 #line 525 "input_lexer.ll"
3054 index_status(yyextra)=0; if (python_compat(yyextra)) { (*yylval)=gen(at_bitand,2); return T_AND_OP; } else { *yylval=gen(at_plus,2); return T_PLUS; }
3055 YY_BREAK
3056 case 208:
3057 YY_RULE_SETUP
3058 #line 526 "input_lexer.ll"
3059 index_status(yyextra)=0; (*yylval)=gen(at_bitnot,1); return T_NOT;
3060 YY_BREAK
3061 case 209:
3062 YY_RULE_SETUP
3063 #line 527 "input_lexer.ll"
3064 index_status(yyextra)=0; (*yylval)=gen(at_sqrt,2); return T_NOT;
3065 YY_BREAK
3066 case 210:
3067 YY_RULE_SETUP
3068 #line 528 "input_lexer.ll"
3069 index_status(yyextra)=0; (*yylval)=gen(at_polar_complex,2); return T_MOD;
3070 YY_BREAK
3071 case 211:
3072 YY_RULE_SETUP
3073 #line 529 "input_lexer.ll"
3074 index_status(yyextra)=1; (*yylval)=2; return T_SQ;
3075 YY_BREAK
3076 case 212:
3077 YY_RULE_SETUP
3078 #line 530 "input_lexer.ll"
3079 index_status(yyextra)=1; (*yylval)=3; return T_SQ;
3080 YY_BREAK
3081 case 213:
3082 YY_RULE_SETUP
3083 #line 531 "input_lexer.ll"
3084 index_status(yyextra)=1; (*yylval)=4; return T_SQ;
3085 YY_BREAK
3086 case 214:
3087 YY_RULE_SETUP
3088 #line 532 "input_lexer.ll"
3089 index_status(yyextra)=1; (*yylval)=5; return T_SQ;
3090 YY_BREAK
3091 case 215:
3092 YY_RULE_SETUP
3093 #line 533 "input_lexer.ll"
3094 index_status(yyextra)=1; (*yylval)=6; return T_SQ;
3095 YY_BREAK
3096 case 216:
3097 YY_RULE_SETUP
3098 #line 534 "input_lexer.ll"
3099 index_status(yyextra)=1; (*yylval)=7; return T_SQ;
3100 YY_BREAK
3101 case 217:
3102 YY_RULE_SETUP
3103 #line 535 "input_lexer.ll"
3104 index_status(yyextra)=1; (*yylval)=8; return T_SQ;
3105 YY_BREAK
3106 case 218:
3107 YY_RULE_SETUP
3108 #line 536 "input_lexer.ll"
3109 index_status(yyextra)=1; (*yylval)=9; return T_SQ;
3110 YY_BREAK
3111 case 219:
3112 YY_RULE_SETUP
3113 #line 537 "input_lexer.ll"
3114 index_status(yyextra)=1; (*yylval)=-1; return T_SQ;
3115 YY_BREAK
3116 case 220:
3117 YY_RULE_SETUP
3118 #line 538 "input_lexer.ll"
3119 index_status(yyextra)=1; (*yylval)=-1; return T_SQ;
3120 YY_BREAK
3121 /* "','" index_status(yyextra)=0; (*yylval)=gen(at_makevector,2); return T_QUOTED_BINARY; commented because of f('a','b') */
3122 case 221:
3123 YY_RULE_SETUP
3124 #line 540 "input_lexer.ll"
3125 index_status(yyextra)=0; (*yylval)=gen(at_plus,2); return T_QUOTED_BINARY;
3126 YY_BREAK
3127 case 222:
3128 YY_RULE_SETUP
3129 #line 541 "input_lexer.ll"
3130 index_status(yyextra)=0; (*yylval)=gen(at_plus,2); return T_QUOTED_BINARY;
3131 YY_BREAK
3132 case 223:
3133 YY_RULE_SETUP
3134 #line 542 "input_lexer.ll"
3135 index_status(yyextra)=0; (*yylval)=gen(at_binary_minus,2); return T_MOINS; // return (calc_mode(yyextra)==38)?T_MOINS38:T_MOINS;
3136 YY_BREAK
3137 case 224:
3138 YY_RULE_SETUP
3139 #line 543 "input_lexer.ll"
3140 index_status(yyextra)=0; if (calc_mode(yyextra)==38){ (*yylval)=gen(at_neg,2); return T_NEG38; } else { CERR << 1 << '\n'; (*yylval)=gen(at_binary_minus,2); return T_MOINS;}
3141 YY_BREAK
3142 case 225:
3143 YY_RULE_SETUP
3144 #line 544 "input_lexer.ll"
3145 index_status(yyextra)=0; (*yylval)=gen(at_pointminus,2); return T_PLUS;
3146 YY_BREAK
3147 case 226:
3148 YY_RULE_SETUP
3149 #line 545 "input_lexer.ll"
3150 index_status(yyextra)=0; (*yylval)=gen(at_binary_minus,2); return T_QUOTED_BINARY;
3151 YY_BREAK
3152 case 227:
3153 YY_RULE_SETUP
3154 #line 546 "input_lexer.ll"
3155 index_status(yyextra)=0; (*yylval)=gen(at_binary_minus,2); return T_QUOTED_BINARY;
3156 YY_BREAK
3157 /* "×" index_status(yyextra)=0; (*yylval)=gen(at_prod,2); return T_FOIS; */
3158 /* "·" index_status(yyextra)=0; (*yylval)=gen(at_prod,2); return T_FOIS; */
3159 case 228:
3160 YY_RULE_SETUP
3161 #line 549 "input_lexer.ll"
3162 index_status(yyextra)=0; (*yylval)=gen(at_prod,2); return T_FOIS;
3163 YY_BREAK
3164 case 229:
3165 YY_RULE_SETUP
3166 #line 550 "input_lexer.ll"
3167 index_status(yyextra)=0; (*yylval)=gen(at_cross,2); return T_FOIS;
3168 YY_BREAK
3169 case 230:
3170 YY_RULE_SETUP
3171 #line 551 "input_lexer.ll"
3172 index_status(yyextra)=0; (*yylval)=gen(at_multcrement,1); return T_UNION;
3173 YY_BREAK
3174 case 231:
3175 YY_RULE_SETUP
3176 #line 552 "input_lexer.ll"
3177 index_status(yyextra)=0; (*yylval)=gen(at_multcrement,1); return T_UNION;
3178 YY_BREAK
3179 case 232:
3180 YY_RULE_SETUP
3181 #line 553 "input_lexer.ll"
3182 index_status(yyextra)=0; if (abs_calc_mode(yyextra)==38){return T_DOUBLE_DEUX_POINTS; } else {(*yylval)=gen(at_struct_dot,2); return T_COMPOSE;}
3183 YY_BREAK
3184 case 233:
3185 YY_RULE_SETUP
3186 #line 554 "input_lexer.ll"
3187 index_status(yyextra)=0; (*yylval)=gen(at_ampersand_times,2); return T_FOIS;
3188 YY_BREAK
3189 case 234:
3190 YY_RULE_SETUP
3191 #line 555 "input_lexer.ll"
3192 index_status(yyextra)=0; (*yylval)=gen(at_quote_pow,2); return T_POW;
3193 YY_BREAK
3194 case 235:
3195 YY_RULE_SETUP
3196 #line 556 "input_lexer.ll"
3197 index_status(yyextra)=0; (*yylval)=gen(at_pointprod,2); return T_FOIS;
3198 YY_BREAK
3199 case 236:
3200 YY_RULE_SETUP
3201 #line 557 "input_lexer.ll"
3202 index_status(yyextra)=0; (*yylval)=gen(at_prod,2); return T_QUOTED_BINARY;
3203 YY_BREAK
3204 case 237:
3205 YY_RULE_SETUP
3206 #line 558 "input_lexer.ll"
3207 index_status(yyextra)=0; (*yylval)=gen(at_prod,2); return T_QUOTED_BINARY;
3208 YY_BREAK
3209 case 238:
3210 YY_RULE_SETUP
3211 #line 559 "input_lexer.ll"
3212 index_status(yyextra)=0; (*yylval)=gen(at_division,2); return T_DIV;
3213 YY_BREAK
3214 /* "÷" index_status(yyextra)=0; (*yylval)=gen(at_division,2); return T_DIV; */
3215 case 239:
3216 YY_RULE_SETUP
3217 #line 561 "input_lexer.ll"
3218 index_status(yyextra)=0; (*yylval)=gen(at_iquo,2); return T_DIV;
3219 YY_BREAK
3220 case 240:
3221 YY_RULE_SETUP
3222 #line 562 "input_lexer.ll"
3223 index_status(yyextra)=0; (*yylval)=gen(at_irem,2); return T_DIV;
3224 YY_BREAK
3225 case 241:
3226 YY_RULE_SETUP
3227 #line 563 "input_lexer.ll"
3228 index_status(yyextra)=0; (*yylval)=gen(at_iquosto,2); return T_UNION;
3229 YY_BREAK
3230 case 242:
3231 YY_RULE_SETUP
3232 #line 564 "input_lexer.ll"
3233 index_status(yyextra)=0; (*yylval)=gen(at_iremsto,2); return T_UNION;
3234 YY_BREAK
3235 case 243:
3236 YY_RULE_SETUP
3237 #line 565 "input_lexer.ll"
3238 index_status(yyextra)=0; (*yylval)=gen(at_andsto,2); return T_UNION;
3239 YY_BREAK
3240 case 244:
3241 YY_RULE_SETUP
3242 #line 566 "input_lexer.ll"
3243 index_status(yyextra)=0; (*yylval)=gen(at_orsto,2); return T_UNION;
3244 YY_BREAK
3245 case 245:
3246 YY_RULE_SETUP
3247 #line 567 "input_lexer.ll"
3248 index_status(yyextra)=0; (*yylval)=gen(at_xorsto,2); return T_UNION;
3249 YY_BREAK
3250 case 246:
3251 YY_RULE_SETUP
3252 #line 568 "input_lexer.ll"
3253 index_status(yyextra)=0; (*yylval)=gen(at_shiftsto,2); return T_UNION;
3254 YY_BREAK
3255 case 247:
3256 YY_RULE_SETUP
3257 #line 569 "input_lexer.ll"
3258 index_status(yyextra)=0; (*yylval)=gen(at_rotatesto,2); return T_UNION;
3259 YY_BREAK
3260 case 248:
3261 YY_RULE_SETUP
3262 #line 570 "input_lexer.ll"
3263 index_status(yyextra)=0; (*yylval)=gen(at_divcrement,1); return T_DIV;
3264 YY_BREAK
3265 case 249:
3266 YY_RULE_SETUP
3267 #line 571 "input_lexer.ll"
3268 index_status(yyextra)=0; (*yylval)=gen(at_divcrement,1); return T_UNION;
3269 YY_BREAK
3270 case 250:
3271 YY_RULE_SETUP
3272 #line 572 "input_lexer.ll"
3273 index_status(yyextra)=0; (*yylval)=gen(at_pointdivision,2); return T_DIV;
3274 YY_BREAK
3275 case 251:
3276 YY_RULE_SETUP
3277 #line 573 "input_lexer.ll"
3278 index_status(yyextra)=0; (*yylval)=gen(at_division,2); return T_QUOTED_BINARY;
3279 YY_BREAK
3280 case 252:
3281 YY_RULE_SETUP
3282 #line 574 "input_lexer.ll"
3283 index_status(yyextra)=0; (*yylval)=gen(at_division,2); return T_QUOTED_BINARY;
3284 YY_BREAK
3285 case 253:
3286 YY_RULE_SETUP
3287 #line 575 "input_lexer.ll"
3288 index_status(yyextra)=0; if (abs_calc_mode(yyextra)==38){ (*yylval)=gen(at_PERCENT); return T_UNARY_OP_38; } if (xcas_mode(yyextra)==3 || calc_mode(yyextra)==1) { (*yylval)=gen(at_pourcent); return T_FACTORIAL; } if (xcas_mode(yyextra)==1) { (*yylval)=symbolic(at_ans,vecteur(0)); return T_NUMBER; } if (xcas_mode(yyextra) || python_compat(yyextra)) (*yylval)=gen(at_irem,2); else (*yylval)=0; return T_MOD;
3289 YY_BREAK
3290 case 254:
3291 YY_RULE_SETUP
3292 #line 576 "input_lexer.ll"
3293 index_status(yyextra)=0; if (xcas_mode(yyextra)==0){ (*yylval)=gen(at_iquorem,2); return T_MOD;} (*yylval)=symbolic(at_ans,-2); return T_NUMBER;
3294 YY_BREAK
3295 /* \xe2\x88\xa1 index_status(yyextra)=0; (*yylval)=gen(at_polar_complex,2); return T_MOD; */
3296 case 255:
3297 YY_RULE_SETUP
3298 #line 578 "input_lexer.ll"
3299 if (xcas_mode(yyextra)==0){ (*yylval)=gen(at_quorem,2); return T_MOD;} index_status(yyextra)=0; (*yylval)=symbolic(at_ans,-3); return T_NUMBER;
3300 YY_BREAK
3301 case 256:
3302 YY_RULE_SETUP
3303 #line 579 "input_lexer.ll"
3304 index_status(yyextra)=0; (*yylval)=gen(at_irem,2); return T_QUOTED_BINARY;
3305 YY_BREAK
3306 case 257:
3307 YY_RULE_SETUP
3308 #line 580 "input_lexer.ll"
3309 index_status(yyextra)=0; (*yylval)=gen(at_equal2,2); return T_QUOTED_BINARY;
3310 YY_BREAK
3311 case 258:
3312 YY_RULE_SETUP
3313 #line 581 "input_lexer.ll"
3314 index_status(yyextra)=0; if (xcas_mode(yyextra)==3) { (*yylval)=gen(at_irem,2); return T_UNARY_OP; } else { if (xcas_mode(yyextra)) (*yylval)=gen(at_irem,2); else (*yylval)=0; return T_MOD; }
3315 YY_BREAK
3316 case 259:
3317 YY_RULE_SETUP
3318 #line 582 "input_lexer.ll"
3319 index_status(yyextra)=0; (*yylval)=gen(at_irem,2); return T_QUOTED_BINARY;
3320 YY_BREAK
3321 case 260:
3322 YY_RULE_SETUP
3323 #line 583 "input_lexer.ll"
3324 index_status(yyextra)=0; (*yylval)=gen(at_irem,2); return T_QUOTED_BINARY;
3325 YY_BREAK
3326 /* "MOD" index_status(yyextra)=0; return T_MOD; */
3327 case 261:
3328 YY_RULE_SETUP
3329 #line 585 "input_lexer.ll"
3330 index_status(yyextra)=0; (*yylval)=gen(python_compat(yyextra)==2?at_bitxor:at_pow,2); return T_POW;
3331 YY_BREAK
3332 case 262:
3333 YY_RULE_SETUP
3334 #line 586 "input_lexer.ll"
3335 index_status(yyextra)=0; (*yylval)=gen(at_trn,1); return T_FACTORIAL;
3336 YY_BREAK
3337 case 263:
3338 YY_RULE_SETUP
3339 #line 587 "input_lexer.ll"
3340 (*yylval) = gen(at_pow,2); index_status(yyextra)=0; return T_UNARY_OP;
3341 YY_BREAK
3342 case 264:
3343 YY_RULE_SETUP
3344 #line 588 "input_lexer.ll"
3345 index_status(yyextra)=0; (*yylval)=gen(at_pow,2); return T_POW;
3346 YY_BREAK
3347 case 265:
3348 YY_RULE_SETUP
3349 #line 589 "input_lexer.ll"
3350 index_status(yyextra)=0; (*yylval)=gen(at_pointpow,2); return T_POW;
3351 YY_BREAK
3352 case 266:
3353 YY_RULE_SETUP
3354 #line 590 "input_lexer.ll"
3355 index_status(yyextra)=0; (*yylval)=gen(at_pow,2); return T_QUOTED_BINARY;
3356 YY_BREAK
3357 case 267:
3358 YY_RULE_SETUP
3359 #line 591 "input_lexer.ll"
3360 index_status(yyextra)=0; (*yylval)=gen(at_pow,2); return T_QUOTED_BINARY;
3361 YY_BREAK
3362 case 268:
3363 YY_RULE_SETUP
3364 #line 592 "input_lexer.ll"
3365 (*yylval) = gen(at_Digits,0); index_status(yyextra)=0; return T_DIGITS;
3366 YY_BREAK
3367 case 269:
3368 YY_RULE_SETUP
3369 #line 593 "input_lexer.ll"
3370 (*yylval) = gen(at_HDigits,0); index_status(yyextra)=0; return T_DIGITS;
3371 YY_BREAK
3372 case 270:
3373 YY_RULE_SETUP
3374 #line 594 "input_lexer.ll"
3375 (*yylval) = gen(at_HAngle,0); index_status(yyextra)=0; return T_DIGITS;
3376 YY_BREAK
3377 case 271:
3378 YY_RULE_SETUP
3379 #line 595 "input_lexer.ll"
3380 (*yylval) = gen(at_HFormat,0); index_status(yyextra)=0; return T_DIGITS;
3381 YY_BREAK
3382 case 272:
3383 YY_RULE_SETUP
3384 #line 596 "input_lexer.ll"
3385 (*yylval) = gen(at_HComplex,0); index_status(yyextra)=0; return T_DIGITS;
3386 YY_BREAK
3387 case 273:
3388 YY_RULE_SETUP
3389 #line 597 "input_lexer.ll"
3390 (*yylval) = gen(at_HLanguage,0); index_status(yyextra)=0; return T_DIGITS;
3391 YY_BREAK
3392 case 274:
3393 YY_RULE_SETUP
3394 #line 598 "input_lexer.ll"
3395 (*yylval) = gen(at_Digits,0); index_status(yyextra)=0; return T_DIGITS;
3396 YY_BREAK
3397 case 275:
3398 YY_RULE_SETUP
3399 #line 599 "input_lexer.ll"
3400 (*yylval) = gen(at_threads,0) ; index_status(yyextra)=0; return T_DIGITS;
3401 YY_BREAK
3402 case 276:
3403 YY_RULE_SETUP
3404 #line 600 "input_lexer.ll"
3405 (*yylval) = gen(at_scientific_format,0); index_status(yyextra)=0; return T_DIGITS;
3406 YY_BREAK
3407 case 277:
3408 YY_RULE_SETUP
3409 #line 601 "input_lexer.ll"
3410 (*yylval) = gen(at_angle_radian,0); index_status(yyextra)=0; return T_DIGITS;
3411 YY_BREAK
3412 case 278:
3413 YY_RULE_SETUP
3414 #line 602 "input_lexer.ll"
3415 (*yylval) = gen(at_approx_mode,0); index_status(yyextra)=0; return T_DIGITS;
3416 YY_BREAK
3417 case 279:
3418 YY_RULE_SETUP
3419 #line 603 "input_lexer.ll"
3420 (*yylval) = gen(at_all_trig_solutions,1); index_status(yyextra)=0; return T_DIGITS;
3421 YY_BREAK
3422 case 280:
3423 YY_RULE_SETUP
3424 #line 604 "input_lexer.ll"
3425 (*yylval) = gen(at_increasing_power,1); index_status(yyextra)=0; return T_DIGITS;
3426 YY_BREAK
3427 case 281:
3428 YY_RULE_SETUP
3429 #line 605 "input_lexer.ll"
3430 (*yylval) = gen(at_ntl_on,1); index_status(yyextra)=0; return T_DIGITS;
3431 YY_BREAK
3432 case 282:
3433 YY_RULE_SETUP
3434 #line 606 "input_lexer.ll"
3435 (*yylval) = gen(at_complex_mode,1); index_status(yyextra)=0; return T_DIGITS;
3436 YY_BREAK
3437 case 283:
3438 YY_RULE_SETUP
3439 #line 607 "input_lexer.ll"
3440 (*yylval) = gen(at_step_infolevel,1); index_status(yyextra)=0; return T_DIGITS;
3441 YY_BREAK
3442 case 284:
3443 YY_RULE_SETUP
3444 #line 608 "input_lexer.ll"
3445 (*yylval) = gen(at_keep_algext,1); index_status(yyextra)=0; return T_DIGITS;
3446 YY_BREAK
3447 case 285:
3448 YY_RULE_SETUP
3449 #line 609 "input_lexer.ll"
3450 (*yylval) = gen(at_complex_variables,0); index_status(yyextra)=0; return T_DIGITS;
3451 YY_BREAK
3452 case 286:
3453 YY_RULE_SETUP
3454 #line 610 "input_lexer.ll"
3455 (*yylval) = gen(at_epsilon,0); index_status(yyextra)=0; return T_DIGITS;
3456 YY_BREAK
3457 case 287:
3458 YY_RULE_SETUP
3459 #line 611 "input_lexer.ll"
3460 (*yylval) = gen(at_proba_epsilon,0); index_status(yyextra)=0; return T_DIGITS;
3461 YY_BREAK
3462 case 288:
3463 YY_RULE_SETUP
3464 #line 613 "input_lexer.ll"
3465 (*yylval) = gen(at_acos,1); index_status(yyextra)=0; return T_UNARY_OP;
3466 YY_BREAK
3467 case 289:
3468 YY_RULE_SETUP
3469 #line 614 "input_lexer.ll"
3470 (*yylval) = gen(at_randNorm,1); index_status(yyextra)=0; return T_UNARY_OP;
3471 YY_BREAK
3472 case 290:
3473 YY_RULE_SETUP
3474 #line 615 "input_lexer.ll"
3475 (*yylval) = gen(at_acosh,1); index_status(yyextra)=0; return T_UNARY_OP;
3476 YY_BREAK
3477 case 291:
3478 YY_RULE_SETUP
3479 #line 616 "input_lexer.ll"
3480 index_status(yyextra)=0; (*yylval)=gen(at_args,0); return T_QUOTED_BINARY;
3481 YY_BREAK
3482 case 292:
3483 YY_RULE_SETUP
3484 #line 617 "input_lexer.ll"
3485 (*yylval) = gen(at_asin,1); index_status(yyextra)=0; return T_UNARY_OP;
3486 YY_BREAK
3487 case 293:
3488 YY_RULE_SETUP
3489 #line 618 "input_lexer.ll"
3490 (*yylval) = gen(at_asinh,1); index_status(yyextra)=0; return T_UNARY_OP;
3491 YY_BREAK
3492 case 294:
3493 YY_RULE_SETUP
3494 #line 619 "input_lexer.ll"
3495 (*yylval) = gen(at_at,2); index_status(yyextra)=0; return T_UNARY_OP;
3496 YY_BREAK
3497 case 295:
3498 YY_RULE_SETUP
3499 #line 620 "input_lexer.ll"
3500 (*yylval) = gen(at_atan,1); index_status(yyextra)=0; return T_UNARY_OP;
3501 YY_BREAK
3502 case 296:
3503 YY_RULE_SETUP
3504 #line 621 "input_lexer.ll"
3505 (*yylval) = gen(at_atanh,1); index_status(yyextra)=0; return T_UNARY_OP;
3506 YY_BREAK
3507 case 297:
3508 YY_RULE_SETUP
3509 #line 622 "input_lexer.ll"
3510 (*yylval) = gen(at_backquote,1); index_status(yyextra)=0; return T_UNARY_OP;
3511 YY_BREAK
3512 case 298:
3513 YY_RULE_SETUP
3514 #line 623 "input_lexer.ll"
3515 (*yylval) = gen(at_bloc,1); index_status(yyextra)=0; return T_UNARY_OP;
3516 YY_BREAK
3517 case 299:
3518 YY_RULE_SETUP
3519 #line 624 "input_lexer.ll"
3520 index_status(yyextra)=0; (*yylval)=gen(at_break,0); return T_BREAK;
3521 YY_BREAK
3522 case 300:
3523 YY_RULE_SETUP
3524 #line 625 "input_lexer.ll"
3525 index_status(yyextra)=0; if (abs_calc_mode(yyextra)==38) return T_CASE38; else return T_CASE;
3526 YY_BREAK
3527 case 301:
3528 YY_RULE_SETUP
3529 #line 626 "input_lexer.ll"
3530 (*yylval) = gen(at_cont,1); index_status(yyextra)=0; return T_UNARY_OP;
3531 YY_BREAK
3532 case 302:
3533 YY_RULE_SETUP
3534 #line 627 "input_lexer.ll"
3535 (*yylval) = gen(at_debug,1); index_status(yyextra)=0; return T_UNARY_OP;
3536 YY_BREAK
3537 case 303:
3538 YY_RULE_SETUP
3539 #line 628 "input_lexer.ll"
3540 (*yylval) = gen(at_derive,2); index_status(yyextra)=0; return T_UNARY_OP;
3541 YY_BREAK
3542 case 304:
3543 YY_RULE_SETUP
3544 #line 629 "input_lexer.ll"
3545 if (xcas_mode(yyextra)==1 || xcas_mode(yyextra)==2) { (*yylval) = gen(at_function_diff,1); index_status(yyextra)=1; return T_UNARY_OP;} else { index_status(yyextra)=1; return find_or_make_symbol(yytext,(*yylval),yyscanner,true,yyextra); }
3546 YY_BREAK
3547 case 305:
3548 YY_RULE_SETUP
3549 #line 630 "input_lexer.ll"
3550 if (xcas_mode(yyextra)==1 || xcas_mode(yyextra)==2) { (*yylval)=e__IDNT_e; }else (*yylval)=symbolic(at_exp,1); index_status(yyextra)=1; return T_NUMBER;
3551 YY_BREAK
3552 case 306:
3553 YY_RULE_SETUP
3554 #line 631 "input_lexer.ll"
3555 (*yylval)=symbolic(at_exp,1); index_status(yyextra)=1; return T_NUMBER;
3556 YY_BREAK
3557 case 307:
3558 YY_RULE_SETUP
3559 #line 632 "input_lexer.ll"
3560 (*yylval)=symbolic(at_exp,1); index_status(yyextra)=1; return T_NUMBER;
3561 YY_BREAK
3562 case 308:
3563 YY_RULE_SETUP
3564 #line 633 "input_lexer.ll"
3565 (*yylval) = gen(at_equal,2); index_status(yyextra)=0; return T_UNARY_OP;
3566 YY_BREAK
3567 case 309:
3568 YY_RULE_SETUP
3569 #line 634 "input_lexer.ll"
3570 index_status(yyextra)=0; (*yylval)=gen(at_throw,1); return T_RETURN;
3571 YY_BREAK
3572 case 310:
3573 YY_RULE_SETUP
3574 #line 635 "input_lexer.ll"
3575 (*yylval) = gen(at_erase,0); index_status(yyextra)=0; return T_UNARY_OP;
3576 YY_BREAK
3577 case 311:
3578 YY_RULE_SETUP
3579 #line 636 "input_lexer.ll"
3580 index_status(yyextra)=0; (*yylval)=gen(at_throw,1); return T_RETURN;
3581 YY_BREAK
3582 case 312:
3583 YY_RULE_SETUP
3584 #line 637 "input_lexer.ll"
3585 if (xcas_mode(yyextra)==3) (*yylval)=gen(at_partfrac); else (*yylval) = gen(at_expand,1); index_status(yyextra)=0; return T_UNARY_OP;
3586 YY_BREAK
3587 case 313:
3588 YY_RULE_SETUP
3589 #line 638 "input_lexer.ll"
3590 (*yylval) = gen(at_insmod,1); index_status(yyextra)=0; return T_RETURN;
3591 YY_BREAK
3592 case 314:
3593 YY_RULE_SETUP
3594 #line 639 "input_lexer.ll"
3595 (*yylval) = gen(at_expand,1); index_status(yyextra)=0; return T_UNARY_OP;
3596 YY_BREAK
3597 case 315:
3598 YY_RULE_SETUP
3599 #line 640 "input_lexer.ll"
3600 index_status(yyextra)=0; (*yylval)=gen(at_for,4); return T_FOR;
3601 YY_BREAK
3602 case 316:
3603 YY_RULE_SETUP
3604 #line 641 "input_lexer.ll"
3605 index_status(yyextra)=0; (*yylval)=gen(at_for,4); return T_FOR;
3606 YY_BREAK
3607 case 317:
3608 YY_RULE_SETUP
3609 #line 642 "input_lexer.ll"
3610 (*yylval) = gen(at_halt,1); index_status(yyextra)=0; return T_UNARY_OP;
3611 YY_BREAK
3612 case 318:
3613 YY_RULE_SETUP
3614 #line 643 "input_lexer.ll"
3615 index_status(yyextra)=0; (*yylval)=4; return T_BLOC_END;
3616 YY_BREAK
3617 case 319:
3618 YY_RULE_SETUP
3619 #line 644 "input_lexer.ll"
3620 index_status(yyextra)=0; (*yylval)=9; return T_BLOC_END;
3621 YY_BREAK
3622 case 320:
3623 YY_RULE_SETUP
3624 #line 645 "input_lexer.ll"
3625 index_status(yyextra)=0; (*yylval)=3; return T_BLOC_END;
3626 YY_BREAK
3627 case 321:
3628 YY_RULE_SETUP
3629 #line 646 "input_lexer.ll"
3630 index_status(yyextra)=0; (*yylval)=gen(at_ifte,3); return T_IF;
3631 YY_BREAK
3632 case 322:
3633 YY_RULE_SETUP
3634 #line 647 "input_lexer.ll"
3635 index_status(yyextra)=0; (*yylval)=gen(at_ifte,3); if (rpn_mode(yyextra)) return T_RPN_IF; return T_IF;
3636 YY_BREAK
3637 case 323:
3638 YY_RULE_SETUP
3639 #line 648 "input_lexer.ll"
3640 index_status(yyextra)=0; (*yylval)=gen(at_ifte,3); return T_IFTE;
3641 YY_BREAK
3642 case 324:
3643 YY_RULE_SETUP
3644 #line 649 "input_lexer.ll"
3645 index_status(yyextra)=0; (*yylval)=gen(at_when,3); return T_IFTE;
3646 YY_BREAK
3647 case 325:
3648 YY_RULE_SETUP
3649 #line 650 "input_lexer.ll"
3650 index_status(yyextra)=0; (*yylval)=gen(at_ifte,3); return T_QUOTED_BINARY;
3651 YY_BREAK
3652 case 326:
3653 YY_RULE_SETUP
3654 #line 651 "input_lexer.ll"
3655 index_status(yyextra)=0; (*yylval)=gen(at_ifte,3); return T_QUOTED_BINARY;
3656 YY_BREAK
3657 case 327:
3658 YY_RULE_SETUP
3659 #line 652 "input_lexer.ll"
3660 index_status(yyextra)=0; (*yylval)=gen(at_ifte,3); return T_QUOTED_BINARY;
3661 YY_BREAK
3662 case 328:
3663 YY_RULE_SETUP
3664 #line 653 "input_lexer.ll"
3665 if (xcas_mode(yyextra)==1) (*yylval) = gen(at_maple_ifactors); else (*yylval) = gen(at_ifactors,1); index_status(yyextra)=0; return T_UNARY_OP;
3666 YY_BREAK
3667 case 329:
3668 YY_RULE_SETUP
3669 #line 654 "input_lexer.ll"
3670 index_status(yyextra)=0; (*yylval)=gen(at_intersect,2); return T_QUOTED_BINARY;
3671 YY_BREAK
3672 case 330:
3673 YY_RULE_SETUP
3674 #line 655 "input_lexer.ll"
3675 index_status(yyextra)=0; (*yylval)=gen(at_intersect,2); return T_QUOTED_BINARY;
3676 YY_BREAK
3677 case 331:
3678 YY_RULE_SETUP
3679 #line 656 "input_lexer.ll"
3680 (*yylval) = gen(at_kill,1); index_status(yyextra)=0; return T_UNARY_OP;
3681 YY_BREAK
3682 case 332:
3683 YY_RULE_SETUP
3684 #line 657 "input_lexer.ll"
3685 (*yylval) = gen(at_log,1); index_status(yyextra)=1; return T_UNARY_OP; /* index_status(yyextra)=1 to accept log[] for a basis log */
3686 YY_BREAK
3687 case 333:
3688 YY_RULE_SETUP
3689 #line 658 "input_lexer.ll"
3690 (*yylval) = gen(at_asin,1); index_status(yyextra)=1; return T_UNARY_OP;
3691 YY_BREAK
3692 case 334:
3693 YY_RULE_SETUP
3694 #line 659 "input_lexer.ll"
3695 (*yylval) = gen(at_acos,1); index_status(yyextra)=1; return T_UNARY_OP;
3696 YY_BREAK
3697 case 335:
3698 YY_RULE_SETUP
3699 #line 660 "input_lexer.ll"
3700 (*yylval) = gen(at_atan,1); index_status(yyextra)=1; return T_UNARY_OP;
3701 YY_BREAK
3702 case 336:
3703 YY_RULE_SETUP
3704 #line 661 "input_lexer.ll"
3705 index_status(yyextra)=0; (*yylval)=gen(at_minus,2); return T_QUOTED_BINARY;
3706 YY_BREAK
3707 case 337:
3708 YY_RULE_SETUP
3709 #line 662 "input_lexer.ll"
3710 index_status(yyextra)=0; (*yylval)=gen(at_minus,2); return T_QUOTED_BINARY;
3711 YY_BREAK
3712 case 338:
3713 YY_RULE_SETUP
3714 #line 663 "input_lexer.ll"
3715 (*yylval) = gen(at_not,1); if (xcas_mode(yyextra) || python_compat(yyextra)) return T_NOT; index_status(yyextra)=0; return T_UNARY_OP;
3716 YY_BREAK
3717 case 339:
3718 YY_RULE_SETUP
3719 #line 664 "input_lexer.ll"
3720 (*yylval) = gen(at_not,1); return T_NOT;
3721 YY_BREAK
3722 case 340:
3723 YY_RULE_SETUP
3724 #line 665 "input_lexer.ll"
3725 (*yylval) = gen(at_not,1); return T_IN;
3726 YY_BREAK
3727 case 341:
3728 YY_RULE_SETUP
3729 #line 666 "input_lexer.ll"
3730 (*yylval) = gen(at_neg,1); index_status(yyextra)=0; return T_UNARY_OP;
3731 YY_BREAK
3732 case 342:
3733 YY_RULE_SETUP
3734 #line 667 "input_lexer.ll"
3735 index_status(yyextra)=0; (*yylval)=gen(at_not,1); return T_QUOTED_BINARY;
3736 YY_BREAK
3737 case 343:
3738 YY_RULE_SETUP
3739 #line 668 "input_lexer.ll"
3740 index_status(yyextra)=0; (*yylval)=gen(at_not,1); return T_QUOTED_BINARY;
3741 YY_BREAK
3742 case 344:
3743 YY_RULE_SETUP
3744 #line 669 "input_lexer.ll"
3745 (*yylval) = gen(at_greduce,1); index_status(yyextra)=0; return T_UNARY_OP;
3746 YY_BREAK
3747 case 345:
3748 YY_RULE_SETUP
3749 #line 670 "input_lexer.ll"
3750 index_status(yyextra)=0; (*yylval)=gen(at_of,2); return T_QUOTED_BINARY;
3751 YY_BREAK
3752 case 346:
3753 YY_RULE_SETUP
3754 #line 671 "input_lexer.ll"
3755 if (xcas_mode(yyextra)==1) (*yylval) = gen(at_maple_op,1); else (*yylval) = gen(at_feuille,1); index_status(yyextra)=0; return T_UNARY_OP;
3756 YY_BREAK
3757 case 347:
3758 YY_RULE_SETUP
3759 #line 672 "input_lexer.ll"
3760 (*yylval) = gen(at_feuille,1); index_status(yyextra)=0; return T_UNARY_OP;
3761 YY_BREAK
3762 case 348:
3763 YY_RULE_SETUP
3764 #line 673 "input_lexer.ll"
3765 (*yylval)=2; index_status(yyextra)=0; return T_LOCAL;
3766 YY_BREAK
3767 case 349:
3768 YY_RULE_SETUP
3769 #line 674 "input_lexer.ll"
3770 (*yylval) = gen(at_pcoeff,1); index_status(yyextra)=0; return T_UNARY_OP;
3771 YY_BREAK
3772 case 350:
3773 YY_RULE_SETUP
3774 #line 675 "input_lexer.ll"
3775 (*yylval) = gen(at_funcplot,2); index_status(yyextra)=0; return T_UNARY_OP;
3776 YY_BREAK
3777 case 351:
3778 YY_RULE_SETUP
3779 #line 676 "input_lexer.ll"
3780 (*yylval) = gen(at_user_operator,6); index_status(yyextra)=0; return T_UNARY_OP;
3781 YY_BREAK
3782 case 352:
3783 YY_RULE_SETUP
3784 #line 677 "input_lexer.ll"
3785 if (rpn_mode(yyextra)) {(*yylval)=gen(at_purge,0); index_status(yyextra)=0; return T_RPN_OP;} else {(*yylval) = gen(at_purge,1); index_status(yyextra)=0; return T_UNARY_OP;};
3786 YY_BREAK
3787 case 353:
3788 YY_RULE_SETUP
3789 #line 678 "input_lexer.ll"
3790 if (rpn_mode(yyextra)) {(*yylval)=gen(at_purge,0); index_status(yyextra)=0; return T_RPN_OP;} else {(*yylval) = gen(at_purge,1); index_status(yyextra)=0; return T_UNARY_OP;};
3791 YY_BREAK
3792 case 354:
3793 YY_RULE_SETUP
3794 #line 679 "input_lexer.ll"
3795 if (rpn_mode(yyextra)) {(*yylval)=gen(at_purge,0); index_status(yyextra)=0; return T_RPN_OP;} else {(*yylval) = gen(at_purge,1); index_status(yyextra)=0; return T_UNARY_OP;};
3796 YY_BREAK
3797 case 355:
3798 YY_RULE_SETUP
3799 #line 680 "input_lexer.ll"
3800 (*yylval) = gen(at_srand,1); index_status(yyextra)=0; return T_RETURN;
3801 YY_BREAK
3802 case 356:
3803 YY_RULE_SETUP
3804 #line 681 "input_lexer.ll"
3805 (*yylval) = gen(at_for,1) ; index_status(yyextra)=0; return T_REPEAT;
3806 YY_BREAK
3807 case 357:
3808 YY_RULE_SETUP
3809 #line 682 "input_lexer.ll"
3810 (*yylval) = gen(at_for,1) ; index_status(yyextra)=0; return T_REPEAT;
3811 YY_BREAK
3812 case 358:
3813 YY_RULE_SETUP
3814 #line 683 "input_lexer.ll"
3815 (*yylval) = gen(at_for,1) ;index_status(yyextra)=0; return T_REPEAT;
3816 YY_BREAK
3817 case 359:
3818 YY_RULE_SETUP
3819 #line 684 "input_lexer.ll"
3820 (*yylval) = gen(at_return,1) ; index_status(yyextra)=0; return T_RETURN;
3821 YY_BREAK
3822 case 360:
3823 YY_RULE_SETUP
3824 #line 685 "input_lexer.ll"
3825 (*yylval) = gen(at_return,1) ; index_status(yyextra)=0; return T_RETURN;
3826 YY_BREAK
3827 case 361:
3828 YY_RULE_SETUP
3829 #line 686 "input_lexer.ll"
3830 (*yylval) = gen(at_return,1) ; index_status(yyextra)=0; return T_RETURN;
3831 YY_BREAK
3832 case 362:
3833 YY_RULE_SETUP
3834 #line 687 "input_lexer.ll"
3835 (*yylval) = gen(at_return,1) ; index_status(yyextra)=0; return T_QUOTED_BINARY;
3836 YY_BREAK
3837 case 363:
3838 YY_RULE_SETUP
3839 #line 688 "input_lexer.ll"
3840 (*yylval) = gen(at_maple_root,1); index_status(yyextra)=1; return T_UNARY_OP;
3841 YY_BREAK
3842 case 364:
3843 YY_RULE_SETUP
3844 #line 689 "input_lexer.ll"
3845 (*yylval) = gen(at_same,1); index_status(yyextra)=0; return T_UNARY_OP;
3846 YY_BREAK
3847 case 365:
3848 YY_RULE_SETUP
3849 #line 690 "input_lexer.ll"
3850 (*yylval) = gen(at_sst,1); index_status(yyextra)=0; return T_UNARY_OP;
3851 YY_BREAK
3852 case 366:
3853 YY_RULE_SETUP
3854 #line 691 "input_lexer.ll"
3855 (*yylval) = gen(at_sst_in,1); index_status(yyextra)=0; return T_UNARY_OP;
3856 YY_BREAK
3857 case 367:
3858 YY_RULE_SETUP
3859 #line 692 "input_lexer.ll"
3860 if (xcas_mode(yyextra)==1) (*yylval) = gen(at_maple_subs,2); else (*yylval) = gen(at_subs,2); index_status(yyextra)=0; return T_UNARY_OP;
3861 YY_BREAK
3862 case 368:
3863 YY_RULE_SETUP
3864 #line 693 "input_lexer.ll"
3865 if (xcas_mode(yyextra)==1) (*yylval) = gen(at_maple_subsop,2); else (*yylval) = gen(at_subsop,2); index_status(yyextra)=0; return T_UNARY_OP;
3866 YY_BREAK
3867 case 369:
3868 YY_RULE_SETUP
3869 #line 694 "input_lexer.ll"
3870 index_status(yyextra)=0; (*yylval)=gen(at_union,2); return T_QUOTED_BINARY;
3871 YY_BREAK
3872 case 370:
3873 YY_RULE_SETUP
3874 #line 695 "input_lexer.ll"
3875 index_status(yyextra)=0; (*yylval)=gen(at_union,2); return T_QUOTED_BINARY;
3876 YY_BREAK
3877 case 371:
3878 YY_RULE_SETUP
3879 #line 696 "input_lexer.ll"
3880 (*yylval) = gen(at_virgule,2); index_status(yyextra)=0; return T_UNARY_OP;
3881 YY_BREAK
3882 case 372:
3883 YY_RULE_SETUP
3884 #line 697 "input_lexer.ll"
3885 (*yylval) = gen(at_VARS,0); index_status(yyextra)=0; return T_UNARY_OP;
3886 YY_BREAK
3887 case 373:
3888 YY_RULE_SETUP
3889 #line 698 "input_lexer.ll"
3890 index_status(yyextra)=0; (*yylval)=gen(at_for,4); if (xcas_mode(yyextra)==3) return TI_WHILE; if (xcas_mode(yyextra)!=0) return T_MUPMAP_WHILE; return T_WHILE;
3891 YY_BREAK
3892 case 374:
3893 YY_RULE_SETUP
3894 #line 699 "input_lexer.ll"
3895 index_status(yyextra)=0; (*yylval)=gen(at_for,4); return T_MUPMAP_WHILE; /* return T_RPN_WHILE; */
3896 YY_BREAK
3897 case 375:
3898 YY_RULE_SETUP
3899 #line 700 "input_lexer.ll"
3900 index_status(yyextra)=0; (*yylval)=gen(at_for,4); return T_DO; /* must be here for DO ... END loop */
3901 YY_BREAK
3902 case 376:
3903 YY_RULE_SETUP
3904 #line 701 "input_lexer.ll"
3905 index_status(yyextra)=0; (*yylval)=gen(at_for,4); return T_DO; /* must be here for DO ... END loop */
3906 YY_BREAK
3907 case 377:
3908 YY_RULE_SETUP
3909 #line 702 "input_lexer.ll"
3910 (*yylval) = gen(at_Text,1); index_status(yyextra)=0; return T_RETURN;
3911 YY_BREAK
3912 case 378:
3913 YY_RULE_SETUP
3914 #line 703 "input_lexer.ll"
3915 (*yylval) = gen(at_DropDown,1); index_status(yyextra)=0; return T_RETURN;
3916 YY_BREAK
3917 case 379:
3918 YY_RULE_SETUP
3919 #line 704 "input_lexer.ll"
3920 (*yylval) = gen(at_Popup,1); index_status(yyextra)=0; return T_RETURN;
3921 YY_BREAK
3922 case 380:
3923 YY_RULE_SETUP
3924 #line 705 "input_lexer.ll"
3925 (*yylval) = gen(at_Request,1); index_status(yyextra)=0; return T_RETURN;
3926 YY_BREAK
3927 case 381:
3928 YY_RULE_SETUP
3929 #line 706 "input_lexer.ll"
3930 (*yylval) = gen(at_Title,1); index_status(yyextra)=0; return T_RETURN;
3931 YY_BREAK
3932 case 382:
3933 YY_RULE_SETUP
3934 #line 707 "input_lexer.ll"
3935 (*yylval)=0; index_status(yyextra)=0; return TI_PRGM;
3936 YY_BREAK
3937 case 383:
3938 YY_RULE_SETUP
3939 #line 708 "input_lexer.ll"
3940 (*yylval)=0; index_status(yyextra)=0; return TI_PRGM;
3941 YY_BREAK
3942 case 384:
3943 YY_RULE_SETUP
3944 #line 709 "input_lexer.ll"
3945 (*yylval)=0; index_status(yyextra)=0; return TI_PRGM;
3946 YY_BREAK
3947 case 385:
3948 YY_RULE_SETUP
3949 #line 710 "input_lexer.ll"
3950 index_status(yyextra)=0; (*yylval)=gen(at_ifte,3); return T_IF;
3951 YY_BREAK
3952 case 386:
3953 YY_RULE_SETUP
3954 #line 711 "input_lexer.ll"
3955 (*yylval) = gen(at_return,1) ; index_status(yyextra)=0; return T_RETURN;
3956 YY_BREAK
3957 case 387:
3958 YY_RULE_SETUP
3959 #line 712 "input_lexer.ll"
3960 index_status(yyextra)=0; (*yylval)=gen(at_breakpoint,0); return T_BREAK;
3961 YY_BREAK
3962 case 388:
3963 YY_RULE_SETUP
3964 #line 713 "input_lexer.ll"
3965 index_status(yyextra)=0; (*yylval)=gen(at_for,0); return TI_LOOP;
3966 YY_BREAK
3967 case 389:
3968 YY_RULE_SETUP
3969 #line 714 "input_lexer.ll"
3970 index_status(yyextra)=0; (*yylval)=gen(at_for,0); return TI_FOR;
3971 YY_BREAK
3972 case 390:
3973 YY_RULE_SETUP
3974 #line 715 "input_lexer.ll"
3975 index_status(yyextra)=0; (*yylval)=gen(at_for,0); return TI_WHILE;
3976 YY_BREAK
3977 case 391:
3978 YY_RULE_SETUP
3979 #line 716 "input_lexer.ll"
3980 index_status(yyextra)=0; (*yylval)=gen(at_for,0); return T_CONTINUE;
3981 YY_BREAK
3982 case 392:
3983 YY_RULE_SETUP
3984 #line 717 "input_lexer.ll"
3985 (*yylval) = gen(at_print,1) ; index_status(yyextra)=0; return T_RETURN;
3986 YY_BREAK
3987 case 393:
3988 YY_RULE_SETUP
3989 #line 718 "input_lexer.ll"
3990 (*yylval) = gen(at_Pause,1) ; index_status(yyextra)=0; return T_RETURN;
3991 YY_BREAK
3992 case 394:
3993 YY_RULE_SETUP
3994 #line 719 "input_lexer.ll"
3995 (*yylval) = gen(at_label,1) ; index_status(yyextra)=0; return T_RETURN;
3996 YY_BREAK
3997 case 395:
3998 YY_RULE_SETUP
3999 #line 720 "input_lexer.ll"
4000 (*yylval) = gen(at_goto,1) ; index_status(yyextra)=0; return T_RETURN;
4001 YY_BREAK
4002 case 396:
4003 YY_RULE_SETUP
4004 #line 721 "input_lexer.ll"
4005 (*yylval) = gen(at_Dialog,1) ; index_status(yyextra)=0; return TI_DIALOG;
4006 YY_BREAK
4007 case 397:
4008 YY_RULE_SETUP
4009 #line 722 "input_lexer.ll"
4010 (*yylval) = gen(at_Row,0) ; index_status(yyextra)=0; return T_DIGITS;
4011 YY_BREAK
4012 case 398:
4013 YY_RULE_SETUP
4014 #line 723 "input_lexer.ll"
4015 (*yylval) = gen(at_Col,0) ; index_status(yyextra)=0; return T_DIGITS;
4016 YY_BREAK
4017 case 399:
4018 YY_RULE_SETUP
4019 #line 725 "input_lexer.ll"
4020 index_status(yyextra)=0; (*yylval)=gen(at_DELTALIST); return T_UNARY_OP_38;
4021 YY_BREAK
4022 case 400:
4023 YY_RULE_SETUP
4024 #line 726 "input_lexer.ll"
4025 index_status(yyextra)=0; (*yylval)=gen(at_PILIST); return T_UNARY_OP_38;
4026 YY_BREAK
4027 case 401:
4028 YY_RULE_SETUP
4029 #line 727 "input_lexer.ll"
4030 index_status(yyextra)=0;(*yylval)=gen(at_HPSUM); return T_UNARY_OP_38;
4031 YY_BREAK
4032 case 402:
4033 YY_RULE_SETUP
4034 #line 728 "input_lexer.ll"
4035 index_status(yyextra)=0; (*yylval)=gen(at_SIGMALIST); return T_UNARY_OP_38;
4036 YY_BREAK
4037 case 403:
4038 YY_RULE_SETUP
4039 #line 729 "input_lexer.ll"
4040 index_status(yyextra)=0;(*yylval)=gen(at_HPDIFF); return T_UNARY_OP_38;
4041 YY_BREAK
4042 case 404:
4043 YY_RULE_SETUP
4044 #line 730 "input_lexer.ll"
4045 index_status(yyextra)=0;(*yylval)=gen(at_HPINT); return T_UNARY_OP_38;
4046 YY_BREAK
4047 case 405:
4048 YY_RULE_SETUP
4049 #line 731 "input_lexer.ll"
4050 index_status(yyextra)=0; (*yylval)=gen(at_inferieur_egal,2); return T_TEST_EQUAL;
4051 YY_BREAK
4052 case 406:
4053 YY_RULE_SETUP
4054 #line 732 "input_lexer.ll"
4055 index_status(yyextra)=0; (*yylval)=gen(at_different,2); return T_TEST_EQUAL;
4056 YY_BREAK
4057 case 407:
4058 YY_RULE_SETUP
4059 #line 733 "input_lexer.ll"
4060 index_status(yyextra)=0; (*yylval)=gen(at_superieur_egal,2); return T_TEST_EQUAL;
4061 YY_BREAK
4062 case 408:
4063 YY_RULE_SETUP
4064 #line 734 "input_lexer.ll"
4065 index_status(yyextra)=0;(*yylval)=gen(at_product); return T_UNARY_OP;
4066 YY_BREAK
4067 /* old format for physical constants
4068 "_hbar_" (*yylval) = symbolic(at_unit,makevecteur(1.05457266e-34,_J_unit*_s_unit)); index_status(yyextra)=0; return T_SYMBOL;
4069 "_c_" (*yylval) = symbolic(at_unit,makevecteur(299792458,_m_unit/_s_unit)); index_status(yyextra)=0; return T_SYMBOL;
4070 "_g_" (*yylval) = symbolic(at_unit,makevecteur(9.80665,_m_unit*unitpow(_s_unit,-2))); index_status(yyextra)=0; return T_SYMBOL;
4071 "_IO_" (*yylval) = symbolic(at_unit,makevecteur(1e-12,_W_unit*unitpow(_m_unit,-2))); index_status(yyextra)=0; return T_SYMBOL;
4072 "_epsilonox_" (*yylval) = 3.9; index_status(yyextra)=0; return T_SYMBOL;
4073 "_epsilonsi_" (*yylval) = 11.9; index_status(yyextra)=0; return T_SYMBOL;
4074 "_qepsilon0_" (*yylval) = symbolic(at_unit,makevecteur(1.4185979e-30,_F_unit*_C_unit/_m_unit)); index_status(yyextra)=0; return T_SYMBOL;
4075 "_epsilon0q_" (*yylval) = symbolic(at_unit,makevecteur(55263469.6,_F_unit/(_m_unit*_C_unit))); index_status(yyextra)=0; return T_SYMBOL;
4076 "_kq_" (*yylval) = symbolic(at_unit,makevecteur(8.617386e-5,_J_unit/(_K_unit*_C_unit))); index_status(yyextra)=0; return T_SYMBOL;
4077 "_c3_" (*yylval) = symbolic(at_unit,makevecteur(.002897756,_m_unit*_K_unit)); index_status(yyextra)=0; return T_SYMBOL;
4078 "_lambdac_" (*yylval) = symbolic(at_unit,makevecteur( 0.00242631058e-9,_m_unit)); index_status(yyextra)=0; return T_SYMBOL;
4079 "_f0_" (*yylval) = symbolic(at_unit,makevecteur(2.4179883e14,_Hz_unit)); index_status(yyextra)=0; return T_SYMBOL;
4080 "_lambda0_" (*yylval) = symbolic(at_unit,makevecteur(1239.8425e-9,_m_unit)); index_status(yyextra)=0; return T_SYMBOL;
4081 "_muN_" (*yylval) = symbolic(at_unit,makevecteur(5.0507866e-27,_J_unit/_T_unit)); index_status(yyextra)=0; return T_SYMBOL;
4082 "_muB_" (*yylval) = symbolic(at_unit,makevecteur( 9.2740154e-24,_J_unit/_T_unit)); index_status(yyextra)=0; return T_SYMBOL;
4083 "_a0_" (*yylval) = symbolic(at_unit,makevecteur(.0529177249e-9,_m_unit)); index_status(yyextra)=0; return T_SYMBOL;
4084 "_Rinfinity_" (*yylval) = symbolic(at_unit,makevecteur(10973731.534,unitpow(_m_unit,-1))); index_status(yyextra)=0; return T_SYMBOL;
4085 "_Faraday_" (*yylval) = symbolic(at_unit,makevecteur(96485.309,_C_unit/_mol_unit)); index_status(yyextra)=0; return T_SYMBOL;
4086 "_phi_" (*yylval) = symbolic(at_unit,makevecteur(2.06783461e-15,_Wb_unit)); index_status(yyextra)=0; return T_SYMBOL;
4087 "_alpha_" (*yylval) = 7.29735308e-3; index_status(yyextra)=0; return T_SYMBOL;
4088 "_mpme_" (*yylval) = 1836.152701; index_status(yyextra)=0; return T_SYMBOL;
4089 "_mp_" (*yylval) = symbolic(at_unit,makevecteur(1.6726231e-27,_kg_unit)); index_status(yyextra)=0; return T_SYMBOL;
4090 "_qme_" (*yylval) = symbolic(at_unit,makevecteur(1.75881962e11,_C_unit/_kg_unit)); index_status(yyextra)=0; return T_SYMBOL;
4091 "_me_" (*yylval) = symbolic(at_unit,makevecteur(9.1093897e-31,_kg_unit)); index_status(yyextra)=0; return T_SYMBOL;
4092 "_qe_" (*yylval) = symbolic(at_unit,makevecteur(1.60217733e-19,_C_unit)); index_status(yyextra)=0; return T_SYMBOL;
4093 "_h_" (*yylval) = symbolic(at_unit,makevecteur(6.6260755e-34,_J_unit*_s_unit)); index_status(yyextra)=0; return T_SYMBOL;
4094 "_G_" (*yylval) = symbolic(at_unit,makevecteur(6.67408e-11,unitpow(_m_unit,3)*unitpow(_s_unit,-2)*unitpow(_kg_unit,-1))); index_status(yyextra)=0; return T_SYMBOL;
4095 "_mu0_" (*yylval) = symbolic(at_unit,makevecteur(1.25663706144e-6,_H_unit/_m_unit)); index_status(yyextra)=0; return T_SYMBOL;
4096 "_epsilon0_" (*yylval) = symbolic(at_unit,makevecteur(8.85418781761e-12,_F_unit/_m_unit)); index_status(yyextra)=0; return T_SYMBOL;
4097 "_sigma_" (*yylval) = symbolic(at_unit,makevecteur( 5.67051e-8,_W_unit*unitpow(_m_unit,-2)*unitpow(_K_unit,-4))); index_status(yyextra)=0; return T_SYMBOL;
4098 "_StdP_" (*yylval) = symbolic(at_unit,makevecteur(101325.0,_Pa_unit)); index_status(yyextra)=0; return T_SYMBOL;
4099 "_StdT_" (*yylval) = symbolic(at_unit,makevecteur(273.15,_K_unit)); index_status(yyextra)=0; return T_SYMBOL;
4100 "_R_" (*yylval) = symbolic(at_unit,makevecteur(8.31451,_J_unit/_molK_unit)); index_status(yyextra)=0; return T_SYMBOL;
4101 "_Vm_" (*yylval) = symbolic(at_unit,makevecteur(22.4141,_l_unit/_mol_unit)); index_status(yyextra)=0; return T_SYMBOL;
4102 "_k_" (*yylval) = symbolic(at_unit,makevecteur(1.380658e-23,_J_unit/_K_unit)); index_status(yyextra)=0; return T_SYMBOL;
4103 "_NA_" (*yylval) = symbolic(at_unit,makevecteur(6.0221367e23,unitpow(_mol_unit,-1))); index_status(yyextra)=0; return T_SYMBOL;
4104 "_mSun_" (*yylval) = symbolic(at_unit,makevecteur(1.989e30,_kg_unit)); index_status(yyextra)=0; return T_SYMBOL;
4105 "_RSun_" (*yylval) = symbolic(at_unit,makevecteur(6.955e8,_m_unit)); index_status(yyextra)=0; return T_SYMBOL;
4106 "_PSun_" (*yylval) = symbolic(at_unit,makevecteur(3.846e26,_W_unit)); index_status(yyextra)=0; return T_SYMBOL;
4107 "_mEarth_" (*yylval) = symbolic(at_unit,makevecteur(5.9736e24,_kg_unit)); index_status(yyextra)=0; return T_SYMBOL;
4108 "_REarth_" (*yylval) = symbolic(at_unit,makevecteur(6.371e6,_m_unit)); index_status(yyextra)=0; return T_SYMBOL;
4109 "_sd_" (*yylval) = symbolic(at_unit,makevecteur(8.61640905e4,_s_unit)); index_status(yyextra)=0; return T_SYMBOL;
4110 "_syr_" (*yylval) = symbolic(at_unit,makevecteur(3.15581498e7,_s_unit)); index_status(yyextra)=0; return T_SYMBOL;
4111 */
4112 /* numbers, also accept DMS e.g 1°15′27″13 */
4113 case 409:
4114 #line 782 "input_lexer.ll"
4115 case 410:
4116 #line 783 "input_lexer.ll"
4117 case 411:
4118 #line 784 "input_lexer.ll"
4119 case 412:
4120 #line 785 "input_lexer.ll"
4121 case 413:
4122 #line 786 "input_lexer.ll"
4123 case 414:
4124 #line 787 "input_lexer.ll"
4125 case 415:
4126 #line 788 "input_lexer.ll"
4127 case 416:
4128 #line 789 "input_lexer.ll"
4129 case 417:
4130 #line 790 "input_lexer.ll"
4131 case 418:
4132 #line 791 "input_lexer.ll"
4133 case 419:
4134 #line 792 "input_lexer.ll"
4135 case 420:
4136 #line 793 "input_lexer.ll"
4137 case 421:
4138 #line 794 "input_lexer.ll"
4139 case 422:
4140 #line 795 "input_lexer.ll"
4141 case 423:
4142 #line 796 "input_lexer.ll"
4143 case 424:
4144 #line 797 "input_lexer.ll"
4145 case 425:
4146 #line 798 "input_lexer.ll"
4147 case 426:
4148 #line 799 "input_lexer.ll"
4149 case 427:
4150 #line 800 "input_lexer.ll"
4151 case 428:
4152 #line 801 "input_lexer.ll"
4153 case 429:
4154 #line 802 "input_lexer.ll"
4155 case 430:
4156 #line 803 "input_lexer.ll"
4157 case 431:
4158 #line 804 "input_lexer.ll"
4159 case 432:
4160 #line 805 "input_lexer.ll"
4161 case 433:
4162 YY_RULE_SETUP
4163 #line 805 "input_lexer.ll"
4164 {
4165 index_status(yyextra)=1;
4166 int l=strlen(yytext);
4167 int interv=0; // set to non-zero if ? in the number
4168 int dot=-1;
4169 for (int i=0;i<l;++i){
4170 if (yytext[i]=='?'){
4171 interv=i; // mark ? position and remove it from the string
4172 for (;i<l;++i){
4173 yytext[i]=yytext[i+1];
4174 }
4175 --l;
4176 break;
4177 }
4178 if (yytext[i]=='.')
4179 dot=i;
4180 }
4181 // CERR << yytext << " " << interv << '\n';
4182 if (dot>=0 && interv>1){
4183 --interv; // interv is the relative precision of the interval
4184 if (interv && dot>=1 && yytext[dot-1]=='0')
4185 --interv;
4186 ++dot;
4187 while (interv && dot<l && yytext[dot]=='0'){
4188 --interv; ++dot;
4189 }
4190 }
4191 char ch,ch2;
4192 if (l>2 && yytext[1]!='x' && (yytext[l-1]=='o' || yytext[l-1]=='b' || yytext[l-1]=='h') ){
4193 char base=yytext[l-1];
4194 for (int i=l-1;i>1;--i){
4195 yytext[i]=yytext[i-1];
4196 }
4197 if (base=='h')
4198 base='x';
4199 yytext[1]=base;
4200 }
4201 else {
4202 for (l=0;(ch=*(yytext+l));++l){
4203 if (ch=='x')
4204 break;
4205 if (ch=='e' || ch=='E'){
4206 if ( (ch2=*(yytext+l+1)) && (ch2=='e' || ch2=='E')){
4207 ++l;
4208 for (;(ch=*(yytext+l));++l)
4209 *(yytext+l-1)=ch;
4210 *(yytext+l-1)=0;
4211 --l;
4212 }
4213 }
4214 #ifndef BCD
4215 if ( (ch==-30 && *(yytext+l+1)==-128) || (ch==-62 && *(yytext+l+1)==-80) ){
4216 *yylval=0; return T_NUMBER;
4217 }
4218 #endif
4219 if (ch==-30 && *(yytext+l+1)==-120 && *(yytext+l+2)==-110){
4220 l += 3;
4221 for (;(ch=*(yytext+l));++l)
4222 *(yytext+l-2)=ch;
4223 *(yytext+l-2)=0;
4224 l -= 3;
4225 *(yytext+l)='-';
4226 }
4227 }
4228 }
4229 (*yylval) = chartab2gen(yytext,yyextra);
4230 if (interv){
4231 double d=evalf_double(*yylval,1,context0)._DOUBLE_val;
4232 if (d<0 && interv>1)
4233 --interv;
4234 double tmp=std::floor(std::log(absdouble(d))/std::log(10.0));
4235 tmp=(std::pow(10.,1+tmp-interv));
4236 *yylval=eval(gen(makevecteur(d-tmp,d+tmp),_INTERVAL__VECT),1,context0);
4237 }
4238 return T_NUMBER;
4239 }
4240 YY_BREAK
4241 /* UNITS
4242 "_"{A}{AN}* {
4243 std::pair<const char * const * const,const char * const * const> pp=equal_range(unitname_tab,unitname_tab_end,yytext,tri2);
4244 if (pp.first!=pp.second && pp.second!=unitname_tab_end){
4245 gen tmp=mksa_register_unit(*pp.first,unitptr_tab[pp.first-unitname_tab]);
4246 (*yylval)=tmp;
4247 index_status(yyextra)=0;
4248 return T_SYMBOL;
4249 }
4250 int res=find_or_make_symbol(yytext+1,(*yylval),yyscanner,false,yyextra);
4251 (*yylval)=symb_unit(1,(*yylval),yyextra);
4252 return res;
4253 }
4254 */
4255 /* symbols */
4256 case 434:
4257 #line 898 "input_lexer.ll"
4258 case 435:
4259 YY_RULE_SETUP
4260 #line 898 "input_lexer.ll"
4261 {
4262 index_status(yyextra)=1;
4263 int res=find_or_make_symbol(yytext,(*yylval),yyscanner,true,yyextra);
4264 if (res==T_NUMBER)
4265 *yylval=(*yylval)(string2gen(unlocalize(yytext),false),yyextra);
4266 return res;
4267 }
4268 YY_BREAK
4269 case 436:
4270 YY_RULE_SETUP
4271 #line 905 "input_lexer.ll"
4272 if (!xcas_mode(yyextra) || xcas_mode(yyextra)==3) {
4273 // CERR << "hash" << '\n';
4274 (*yylval)=gen(at_hash,1); return TI_HASH;
4275 } else BEGIN(comment_hash);
4276 YY_BREAK
4277 case 437:
4278 /* rule 437 can match eol */
4279 YY_RULE_SETUP
4280 #line 909 "input_lexer.ll"
4281 BEGIN(INITIAL); index_status(yyextra)=0; increment_lexer_line_number_setcol(yyscanner,yyextra); /* comment_s(yyextra)=string(yytext); (*yylval)=string2gen(comment_s(yyextra).substr(0,comment_s(yyextra).size()-1),false); return T_COMMENT; */
4282 YY_BREAK
4283 /* everything else */
4284 case 438:
4285 YY_RULE_SETUP
4286 #line 911 "input_lexer.ll"
4287 (*yylval)=string2gen(string(yytext),false); return T_STRING;
4288 YY_BREAK
4289 case 439:
4290 YY_RULE_SETUP
4291 #line 913 "input_lexer.ll"
4292 ECHO;
4293 YY_BREAK
4294 #line 4295 "input_lexer.cc"
4295 case YY_STATE_EOF(INITIAL):
4296 case YY_STATE_EOF(comment):
4297 case YY_STATE_EOF(comment_hash):
4298 case YY_STATE_EOF(str):
4299 case YY_STATE_EOF(backquote):
4300 yyterminate();
4301
4302 case YY_END_OF_BUFFER:
4303 {
4304 /* Amount of text matched not including the EOB char. */
4305 int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
4306
4307 /* Undo the effects of YY_DO_BEFORE_ACTION. */
4308 *yy_cp = yyg->yy_hold_char;
4309 YY_RESTORE_YY_MORE_OFFSET
4310
4311 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
4312 {
4313 /* We're scanning a new file or input source. It's
4314 * possible that this happened because the user
4315 * just pointed yyin at a new source and called
4316 * giac_yylex(). If so, then we have to assure
4317 * consistency between YY_CURRENT_BUFFER and our
4318 * globals. Here is the right place to do so, because
4319 * this is the first action (other than possibly a
4320 * back-up) that will match for the new input source.
4321 */
4322 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4323 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
4324 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
4325 }
4326
4327 /* Note that here we test for yy_c_buf_p "<=" to the position
4328 * of the first EOB in the buffer, since yy_c_buf_p will
4329 * already have been incremented past the NUL character
4330 * (since all states make transitions on EOB to the
4331 * end-of-buffer state). Contrast this with the test
4332 * in input().
4333 */
4334 if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
4335 { /* This was really a NUL. */
4336 yy_state_type yy_next_state;
4337
4338 yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
4339
4340 yy_current_state = yy_get_previous_state( yyscanner );
4341
4342 /* Okay, we're now positioned to make the NUL
4343 * transition. We couldn't have
4344 * yy_get_previous_state() go ahead and do it
4345 * for us because it doesn't know how to deal
4346 * with the possibility of jamming (and we don't
4347 * want to build jamming into it because then it
4348 * will run more slowly).
4349 */
4350
4351 yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
4352
4353 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
4354
4355 if ( yy_next_state )
4356 {
4357 /* Consume the NUL. */
4358 yy_cp = ++yyg->yy_c_buf_p;
4359 yy_current_state = yy_next_state;
4360 goto yy_match;
4361 }
4362
4363 else
4364 {
4365 yy_cp = yyg->yy_c_buf_p;
4366 goto yy_find_action;
4367 }
4368 }
4369
4370 else switch ( yy_get_next_buffer( yyscanner ) )
4371 {
4372 case EOB_ACT_END_OF_FILE:
4373 {
4374 yyg->yy_did_buffer_switch_on_eof = 0;
4375
4376 if ( giac_yywrap(yyscanner ) )
4377 {
4378 /* Note: because we've taken care in
4379 * yy_get_next_buffer() to have set up
4380 * yytext, we can now set up
4381 * yy_c_buf_p so that if some total
4382 * hoser (like flex itself) wants to
4383 * call the scanner after we return the
4384 * YY_NULL, it'll still work - another
4385 * YY_NULL will get returned.
4386 */
4387 yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
4388
4389 yy_act = YY_STATE_EOF(YY_START);
4390 goto do_action;
4391 }
4392
4393 else
4394 {
4395 if ( ! yyg->yy_did_buffer_switch_on_eof )
4396 YY_NEW_FILE;
4397 }
4398 break;
4399 }
4400
4401 case EOB_ACT_CONTINUE_SCAN:
4402 yyg->yy_c_buf_p =
4403 yyg->yytext_ptr + yy_amount_of_matched_text;
4404
4405 yy_current_state = yy_get_previous_state( yyscanner );
4406
4407 yy_cp = yyg->yy_c_buf_p;
4408 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
4409 goto yy_match;
4410
4411 case EOB_ACT_LAST_MATCH:
4412 yyg->yy_c_buf_p =
4413 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
4414
4415 yy_current_state = yy_get_previous_state( yyscanner );
4416
4417 yy_cp = yyg->yy_c_buf_p;
4418 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
4419 goto yy_find_action;
4420 }
4421 break;
4422 }
4423
4424 default:
4425 YY_FATAL_ERROR(
4426 "fatal flex scanner internal error--no action found" );
4427 } /* end of action switch */
4428 } /* end of scanning one token */
4429 } /* end of giac_yylex */
4430
4431 /* yy_get_next_buffer - try to read in a new buffer
4432 *
4433 * Returns a code representing an action:
4434 * EOB_ACT_LAST_MATCH -
4435 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
4436 * EOB_ACT_END_OF_FILE - end of file
4437 */
4438 static int yy_get_next_buffer (yyscan_t yyscanner)
4439 {
4440 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4441 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
4442 register char *source = yyg->yytext_ptr;
4443 register int number_to_move, i;
4444 int ret_val;
4445
4446 if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
4447 YY_FATAL_ERROR(
4448 "fatal flex scanner internal error--end of buffer missed" );
4449
4450 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
4451 { /* Don't try to fill the buffer, so this is an EOF. */
4452 if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
4453 {
4454 /* We matched a single character, the EOB, so
4455 * treat this as a final EOF.
4456 */
4457 return EOB_ACT_END_OF_FILE;
4458 }
4459
4460 else
4461 {
4462 /* We matched some text prior to the EOB, first
4463 * process it.
4464 */
4465 return EOB_ACT_LAST_MATCH;
4466 }
4467 }
4468
4469 /* Try to read more data. */
4470
4471 /* First move last chars to start of buffer. */
4472 number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
4473
4474 for ( i = 0; i < number_to_move; ++i )
4475 *(dest++) = *(source++);
4476
4477 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
4478 /* don't do the read, it's not guaranteed to return an EOF,
4479 * just force an EOF
4480 */
4481 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
4482
4483 else
4484 {
4485 int num_to_read =
4486 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
4487
4488 while ( num_to_read <= 0 )
4489 { /* Not enough room in the buffer - grow it. */
4490
4491 /* just a shorter name for the current buffer */
4492 YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
4493
4494 int yy_c_buf_p_offset =
4495 (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
4496
4497 if ( b->yy_is_our_buffer )
4498 {
4499 int new_size = b->yy_buf_size * 2;
4500
4501 if ( new_size <= 0 )
4502 b->yy_buf_size += b->yy_buf_size / 8;
4503 else
4504 b->yy_buf_size *= 2;
4505
4506 b->yy_ch_buf = (char *)
4507 /* Include room in for 2 EOB chars. */
4508 giac_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
4509 }
4510 else
4511 /* Can't grow it, we don't own it. */
4512 b->yy_ch_buf = 0;
4513
4514 if ( ! b->yy_ch_buf )
4515 YY_FATAL_ERROR(
4516 "fatal error - scanner input buffer overflow" );
4517
4518 yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
4519
4520 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
4521 number_to_move - 1;
4522
4523 }
4524
4525 if ( num_to_read > YY_READ_BUF_SIZE )
4526 num_to_read = YY_READ_BUF_SIZE;
4527
4528 /* Read in more data. */
4529 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
4530 yyg->yy_n_chars, (size_t) num_to_read );
4531
4532 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
4533 }
4534
4535 if ( yyg->yy_n_chars == 0 )
4536 {
4537 if ( number_to_move == YY_MORE_ADJ )
4538 {
4539 ret_val = EOB_ACT_END_OF_FILE;
4540 giac_yyrestart(yyin ,yyscanner);
4541 }
4542
4543 else
4544 {
4545 ret_val = EOB_ACT_LAST_MATCH;
4546 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
4547 YY_BUFFER_EOF_PENDING;
4548 }
4549 }
4550
4551 else
4552 ret_val = EOB_ACT_CONTINUE_SCAN;
4553
4554 if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
4555 /* Extend the array by 50%, plus the number we really need. */
4556 yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
4557 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) giac_yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
4558 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
4559 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
4560 }
4561
4562 yyg->yy_n_chars += number_to_move;
4563 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
4564 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
4565
4566 yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
4567
4568 return ret_val;
4569 }
4570
4571 /* yy_get_previous_state - get the state just before the EOB char was reached */
4572
yy_get_previous_state(yyscan_t yyscanner)4573 static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
4574 {
4575 register yy_state_type yy_current_state;
4576 register char *yy_cp;
4577 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4578
4579 yy_current_state = yyg->yy_start;
4580
4581 for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
4582 {
4583 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
4584 if ( yy_accept[yy_current_state] )
4585 {
4586 yyg->yy_last_accepting_state = yy_current_state;
4587 yyg->yy_last_accepting_cpos = yy_cp;
4588 }
4589 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4590 {
4591 yy_current_state = (int) yy_def[yy_current_state];
4592 if ( yy_current_state >= 1387 )
4593 yy_c = yy_meta[(unsigned int) yy_c];
4594 }
4595 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4596 }
4597
4598 return yy_current_state;
4599 }
4600
4601 /* yy_try_NUL_trans - try to make a transition on the NUL character
4602 *
4603 * synopsis
4604 * next_state = yy_try_NUL_trans( current_state );
4605 */
yy_try_NUL_trans(yy_state_type yy_current_state,yyscan_t yyscanner)4606 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
4607 {
4608 register int yy_is_jam;
4609 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
4610 register char *yy_cp = yyg->yy_c_buf_p;
4611
4612 register YY_CHAR yy_c = 1;
4613 if ( yy_accept[yy_current_state] )
4614 {
4615 yyg->yy_last_accepting_state = yy_current_state;
4616 yyg->yy_last_accepting_cpos = yy_cp;
4617 }
4618 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4619 {
4620 yy_current_state = (int) yy_def[yy_current_state];
4621 if ( yy_current_state >= 1387 )
4622 yy_c = yy_meta[(unsigned int) yy_c];
4623 }
4624 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4625 yy_is_jam = (yy_current_state == 1386);
4626
4627 return yy_is_jam ? 0 : yy_current_state;
4628 }
4629
yyunput(int c,register char * yy_bp,yyscan_t yyscanner)4630 static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
4631 {
4632 register char *yy_cp;
4633 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4634
4635 yy_cp = yyg->yy_c_buf_p;
4636
4637 /* undo effects of setting up yytext */
4638 *yy_cp = yyg->yy_hold_char;
4639
4640 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
4641 { /* need to shift things up to make room */
4642 /* +2 for EOB chars. */
4643 register int number_to_move = yyg->yy_n_chars + 2;
4644 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
4645 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
4646 register char *source =
4647 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
4648
4649 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
4650 *--dest = *--source;
4651
4652 yy_cp += (int) (dest - source);
4653 yy_bp += (int) (dest - source);
4654 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
4655 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
4656
4657 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
4658 YY_FATAL_ERROR( "flex scanner push-back overflow" );
4659 }
4660
4661 *--yy_cp = (char) c;
4662
4663 yyg->yytext_ptr = yy_bp;
4664 yyg->yy_hold_char = *yy_cp;
4665 yyg->yy_c_buf_p = yy_cp;
4666 }
4667
4668 #ifndef YY_NO_INPUT
4669 #ifdef __cplusplus
yyinput(yyscan_t yyscanner)4670 static int yyinput (yyscan_t yyscanner)
4671 #else
4672 static int input (yyscan_t yyscanner)
4673 #endif
4674
4675 {
4676 int c;
4677 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4678
4679 *yyg->yy_c_buf_p = yyg->yy_hold_char;
4680
4681 if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
4682 {
4683 /* yy_c_buf_p now points to the character we want to return.
4684 * If this occurs *before* the EOB characters, then it's a
4685 * valid NUL; if not, then we've hit the end of the buffer.
4686 */
4687 if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
4688 /* This was really a NUL. */
4689 *yyg->yy_c_buf_p = '\0';
4690
4691 else
4692 { /* need more input */
4693 int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
4694 ++yyg->yy_c_buf_p;
4695
4696 switch ( yy_get_next_buffer( yyscanner ) )
4697 {
4698 case EOB_ACT_LAST_MATCH:
4699 /* This happens because yy_g_n_b()
4700 * sees that we've accumulated a
4701 * token and flags that we need to
4702 * try matching the token before
4703 * proceeding. But for input(),
4704 * there's no matching to consider.
4705 * So convert the EOB_ACT_LAST_MATCH
4706 * to EOB_ACT_END_OF_FILE.
4707 */
4708
4709 /* Reset buffer status. */
4710 giac_yyrestart(yyin ,yyscanner);
4711
4712 /*FALLTHROUGH*/
4713
4714 case EOB_ACT_END_OF_FILE:
4715 {
4716 if ( giac_yywrap(yyscanner ) )
4717 return EOF;
4718
4719 if ( ! yyg->yy_did_buffer_switch_on_eof )
4720 YY_NEW_FILE;
4721 #ifdef __cplusplus
4722 return yyinput(yyscanner);
4723 #else
4724 return input(yyscanner);
4725 #endif
4726 }
4727
4728 case EOB_ACT_CONTINUE_SCAN:
4729 yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
4730 break;
4731 }
4732 }
4733 }
4734
4735 c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
4736 *yyg->yy_c_buf_p = '\0'; /* preserve yytext */
4737 yyg->yy_hold_char = *++yyg->yy_c_buf_p;
4738
4739 return c;
4740 }
4741 #endif /* ifndef YY_NO_INPUT */
4742
4743 /** Immediately switch to a different input stream.
4744 * @param input_file A readable stream.
4745 * @param yyscanner The scanner object.
4746 * @note This function does not reset the start condition to @c INITIAL .
4747 */
giac_yyrestart(FILE * input_file,yyscan_t yyscanner)4748 void giac_yyrestart (FILE * input_file , yyscan_t yyscanner)
4749 {
4750 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4751
4752 if ( ! YY_CURRENT_BUFFER ){
4753 giac_yyensure_buffer_stack (yyscanner);
4754 YY_CURRENT_BUFFER_LVALUE =
4755 giac_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
4756 }
4757
4758 giac_yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
4759 giac_yy_load_buffer_state(yyscanner );
4760 }
4761
4762 /** Switch to a different input buffer.
4763 * @param new_buffer The new input buffer.
4764 * @param yyscanner The scanner object.
4765 */
giac_yy_switch_to_buffer(YY_BUFFER_STATE new_buffer,yyscan_t yyscanner)4766 void giac_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
4767 {
4768 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4769
4770 /* TODO. We should be able to replace this entire function body
4771 * with
4772 * giac_yypop_buffer_state();
4773 * giac_yypush_buffer_state(new_buffer);
4774 */
4775 giac_yyensure_buffer_stack (yyscanner);
4776 if ( YY_CURRENT_BUFFER == new_buffer )
4777 return;
4778
4779 if ( YY_CURRENT_BUFFER )
4780 {
4781 /* Flush out information for old buffer. */
4782 *yyg->yy_c_buf_p = yyg->yy_hold_char;
4783 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
4784 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
4785 }
4786
4787 YY_CURRENT_BUFFER_LVALUE = new_buffer;
4788 giac_yy_load_buffer_state(yyscanner );
4789
4790 /* We don't actually know whether we did this switch during
4791 * EOF (giac_yywrap()) processing, but the only time this flag
4792 * is looked at is after giac_yywrap() is called, so it's safe
4793 * to go ahead and always set it.
4794 */
4795 yyg->yy_did_buffer_switch_on_eof = 1;
4796 }
4797
giac_yy_load_buffer_state(yyscan_t yyscanner)4798 static void giac_yy_load_buffer_state (yyscan_t yyscanner)
4799 {
4800 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4801 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4802 yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
4803 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
4804 yyg->yy_hold_char = *yyg->yy_c_buf_p;
4805 }
4806
4807 /** Allocate and initialize an input buffer state.
4808 * @param file A readable stream.
4809 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
4810 * @param yyscanner The scanner object.
4811 * @return the allocated buffer state.
4812 */
giac_yy_create_buffer(FILE * file,int size,yyscan_t yyscanner)4813 YY_BUFFER_STATE giac_yy_create_buffer (FILE * file, int size , yyscan_t yyscanner)
4814 {
4815 YY_BUFFER_STATE b;
4816
4817 b = (YY_BUFFER_STATE) giac_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
4818 if ( ! b )
4819 YY_FATAL_ERROR( "out of dynamic memory in giac_yy_create_buffer()" );
4820
4821 b->yy_buf_size = size;
4822
4823 /* yy_ch_buf has to be 2 characters longer than the size given because
4824 * we need to put in 2 end-of-buffer characters.
4825 */
4826 b->yy_ch_buf = (char *) giac_yyalloc(b->yy_buf_size + 2 ,yyscanner );
4827 if ( ! b->yy_ch_buf )
4828 YY_FATAL_ERROR( "out of dynamic memory in giac_yy_create_buffer()" );
4829
4830 b->yy_is_our_buffer = 1;
4831
4832 giac_yy_init_buffer(b,file ,yyscanner);
4833
4834 return b;
4835 }
4836
4837 /** Destroy the buffer.
4838 * @param b a buffer created with giac_yy_create_buffer()
4839 * @param yyscanner The scanner object.
4840 */
giac_yy_delete_buffer(YY_BUFFER_STATE b,yyscan_t yyscanner)4841 void giac_yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
4842 {
4843 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4844
4845 if ( ! b )
4846 return;
4847
4848 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
4849 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
4850
4851 if ( b->yy_is_our_buffer )
4852 giac_yyfree((void *) b->yy_ch_buf ,yyscanner );
4853
4854 giac_yyfree((void *) b ,yyscanner );
4855 }
4856
4857 #ifndef __cplusplus
4858 extern int isatty (int );
4859 #endif /* __cplusplus */
4860
4861 /* Initializes or reinitializes a buffer.
4862 * This function is sometimes called more than once on the same buffer,
4863 * such as during a giac_yyrestart() or at EOF.
4864 */
giac_yy_init_buffer(YY_BUFFER_STATE b,FILE * file,yyscan_t yyscanner)4865 static void giac_yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner)
4866
4867 {
4868 int oerrno = errno;
4869 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4870
4871 giac_yy_flush_buffer(b ,yyscanner);
4872
4873 b->yy_input_file = file;
4874 b->yy_fill_buffer = 1;
4875
4876 /* If b is the current buffer, then giac_yy_init_buffer was _probably_
4877 * called from giac_yyrestart() or through yy_get_next_buffer.
4878 * In that case, we don't want to reset the lineno or column.
4879 */
4880 if (b != YY_CURRENT_BUFFER){
4881 b->yy_bs_lineno = 1;
4882 b->yy_bs_column = 0;
4883 }
4884
4885 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
4886
4887 errno = oerrno;
4888 }
4889
4890 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
4891 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
4892 * @param yyscanner The scanner object.
4893 */
giac_yy_flush_buffer(YY_BUFFER_STATE b,yyscan_t yyscanner)4894 void giac_yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
4895 {
4896 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4897 if ( ! b )
4898 return;
4899
4900 b->yy_n_chars = 0;
4901
4902 /* We always need two end-of-buffer characters. The first causes
4903 * a transition to the end-of-buffer state. The second causes
4904 * a jam in that state.
4905 */
4906 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
4907 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
4908
4909 b->yy_buf_pos = &b->yy_ch_buf[0];
4910
4911 b->yy_at_bol = 1;
4912 b->yy_buffer_status = YY_BUFFER_NEW;
4913
4914 if ( b == YY_CURRENT_BUFFER )
4915 giac_yy_load_buffer_state(yyscanner );
4916 }
4917
4918 /** Pushes the new state onto the stack. The new state becomes
4919 * the current state. This function will allocate the stack
4920 * if necessary.
4921 * @param new_buffer The new state.
4922 * @param yyscanner The scanner object.
4923 */
giac_yypush_buffer_state(YY_BUFFER_STATE new_buffer,yyscan_t yyscanner)4924 void giac_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
4925 {
4926 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4927 if (new_buffer == NULL)
4928 return;
4929
4930 giac_yyensure_buffer_stack(yyscanner);
4931
4932 /* This block is copied from giac_yy_switch_to_buffer. */
4933 if ( YY_CURRENT_BUFFER )
4934 {
4935 /* Flush out information for old buffer. */
4936 *yyg->yy_c_buf_p = yyg->yy_hold_char;
4937 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
4938 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
4939 }
4940
4941 /* Only push if top exists. Otherwise, replace top. */
4942 if (YY_CURRENT_BUFFER)
4943 yyg->yy_buffer_stack_top++;
4944 YY_CURRENT_BUFFER_LVALUE = new_buffer;
4945
4946 /* copied from giac_yy_switch_to_buffer. */
4947 giac_yy_load_buffer_state(yyscanner );
4948 yyg->yy_did_buffer_switch_on_eof = 1;
4949 }
4950
4951 /** Removes and deletes the top of the stack, if present.
4952 * The next element becomes the new top.
4953 * @param yyscanner The scanner object.
4954 */
giac_yypop_buffer_state(yyscan_t yyscanner)4955 void giac_yypop_buffer_state (yyscan_t yyscanner)
4956 {
4957 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4958 if (!YY_CURRENT_BUFFER)
4959 return;
4960
4961 giac_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
4962 YY_CURRENT_BUFFER_LVALUE = NULL;
4963 if (yyg->yy_buffer_stack_top > 0)
4964 --yyg->yy_buffer_stack_top;
4965
4966 if (YY_CURRENT_BUFFER) {
4967 giac_yy_load_buffer_state(yyscanner );
4968 yyg->yy_did_buffer_switch_on_eof = 1;
4969 }
4970 }
4971
4972 /* Allocates the stack if it does not exist.
4973 * Guarantees space for at least one push.
4974 */
giac_yyensure_buffer_stack(yyscan_t yyscanner)4975 static void giac_yyensure_buffer_stack (yyscan_t yyscanner)
4976 {
4977 int num_to_alloc;
4978 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4979
4980 if (!yyg->yy_buffer_stack) {
4981
4982 /* First allocation is just for 2 elements, since we don't know if this
4983 * scanner will even need a stack. We use 2 instead of 1 to avoid an
4984 * immediate realloc on the next call.
4985 */
4986 num_to_alloc = 1;
4987 yyg->yy_buffer_stack = (struct yy_buffer_state**)giac_yyalloc
4988 (num_to_alloc * sizeof(struct yy_buffer_state*)
4989 , yyscanner);
4990 if ( ! yyg->yy_buffer_stack )
4991 YY_FATAL_ERROR( "out of dynamic memory in giac_yyensure_buffer_stack()" );
4992
4993 memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
4994
4995 yyg->yy_buffer_stack_max = num_to_alloc;
4996 yyg->yy_buffer_stack_top = 0;
4997 return;
4998 }
4999
5000 if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
5001
5002 /* Increase the buffer to prepare for a possible push. */
5003 int grow_size = 8 /* arbitrary grow size */;
5004
5005 num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
5006 yyg->yy_buffer_stack = (struct yy_buffer_state**)giac_yyrealloc
5007 (yyg->yy_buffer_stack,
5008 num_to_alloc * sizeof(struct yy_buffer_state*)
5009 , yyscanner);
5010 if ( ! yyg->yy_buffer_stack )
5011 YY_FATAL_ERROR( "out of dynamic memory in giac_yyensure_buffer_stack()" );
5012
5013 /* zero only the new slots.*/
5014 memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
5015 yyg->yy_buffer_stack_max = num_to_alloc;
5016 }
5017 }
5018
5019 /** Setup the input buffer state to scan directly from a user-specified character buffer.
5020 * @param base the character buffer
5021 * @param size the size in bytes of the character buffer
5022 * @param yyscanner The scanner object.
5023 * @return the newly allocated buffer state object.
5024 */
giac_yy_scan_buffer(char * base,yy_size_t size,yyscan_t yyscanner)5025 YY_BUFFER_STATE giac_yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
5026 {
5027 YY_BUFFER_STATE b;
5028
5029 if ( size < 2 ||
5030 base[size-2] != YY_END_OF_BUFFER_CHAR ||
5031 base[size-1] != YY_END_OF_BUFFER_CHAR )
5032 /* They forgot to leave room for the EOB's. */
5033 return 0;
5034
5035 b = (YY_BUFFER_STATE) giac_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
5036 if ( ! b )
5037 YY_FATAL_ERROR( "out of dynamic memory in giac_yy_scan_buffer()" );
5038
5039 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
5040 b->yy_buf_pos = b->yy_ch_buf = base;
5041 b->yy_is_our_buffer = 0;
5042 b->yy_input_file = 0;
5043 b->yy_n_chars = b->yy_buf_size;
5044 b->yy_is_interactive = 0;
5045 b->yy_at_bol = 1;
5046 b->yy_fill_buffer = 0;
5047 b->yy_buffer_status = YY_BUFFER_NEW;
5048
5049 giac_yy_switch_to_buffer(b ,yyscanner );
5050
5051 return b;
5052 }
5053
5054 /** Setup the input buffer state to scan a string. The next call to giac_yylex() will
5055 * scan from a @e copy of @a str.
5056 * @param yystr a NUL-terminated string to scan
5057 * @param yyscanner The scanner object.
5058 * @return the newly allocated buffer state object.
5059 * @note If you want to scan bytes that may contain NUL values, then use
5060 * giac_yy_scan_bytes() instead.
5061 */
giac_yy_scan_string(yyconst char * yystr,yyscan_t yyscanner)5062 YY_BUFFER_STATE giac_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
5063 {
5064
5065 return giac_yy_scan_bytes(yystr,strlen(yystr) ,yyscanner);
5066 }
5067
5068 /** Setup the input buffer state to scan the given bytes. The next call to giac_yylex() will
5069 * scan from a @e copy of @a bytes.
5070 * @param yybytes the byte buffer to scan
5071 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
5072 * @param yyscanner The scanner object.
5073 * @return the newly allocated buffer state object.
5074 */
giac_yy_scan_bytes(yyconst char * yybytes,int _yybytes_len,yyscan_t yyscanner)5075 YY_BUFFER_STATE giac_yy_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner)
5076 {
5077 YY_BUFFER_STATE b;
5078 char *buf;
5079 yy_size_t n;
5080 int i;
5081
5082 /* Get memory for full buffer, including space for trailing EOB's. */
5083 n = _yybytes_len + 2;
5084 buf = (char *) giac_yyalloc(n ,yyscanner );
5085 if ( ! buf )
5086 YY_FATAL_ERROR( "out of dynamic memory in giac_yy_scan_bytes()" );
5087
5088 for ( i = 0; i < _yybytes_len; ++i )
5089 buf[i] = yybytes[i];
5090
5091 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
5092
5093 b = giac_yy_scan_buffer(buf,n ,yyscanner);
5094 if ( ! b )
5095 YY_FATAL_ERROR( "bad buffer in giac_yy_scan_bytes()" );
5096
5097 /* It's okay to grow etc. this buffer, and we should throw it
5098 * away when we're done.
5099 */
5100 b->yy_is_our_buffer = 1;
5101
5102 return b;
5103 }
5104
5105 #ifndef YY_EXIT_FAILURE
5106 #define YY_EXIT_FAILURE 2
5107 #endif
5108
yy_fatal_error(yyconst char * msg,yyscan_t yyscanner)5109 static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
5110 {
5111 (void) fprintf( stderr, "%s\n", msg );
5112 exit( YY_EXIT_FAILURE );
5113 }
5114
5115 /* Redefine yyless() so it works in section 3 code. */
5116
5117 #undef yyless
5118 #define yyless(n) \
5119 do \
5120 { \
5121 /* Undo effects of setting up yytext. */ \
5122 int yyless_macro_arg = (n); \
5123 YY_LESS_LINENO(yyless_macro_arg);\
5124 yytext[yyleng] = yyg->yy_hold_char; \
5125 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
5126 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
5127 *yyg->yy_c_buf_p = '\0'; \
5128 yyleng = yyless_macro_arg; \
5129 } \
5130 while ( 0 )
5131
5132 /* Accessor methods (get/set functions) to struct members. */
5133
5134 /** Get the user-defined data for this scanner.
5135 * @param yyscanner The scanner object.
5136 */
giac_yyget_extra(yyscan_t yyscanner)5137 YY_EXTRA_TYPE giac_yyget_extra (yyscan_t yyscanner)
5138 {
5139 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5140 return yyextra;
5141 }
5142
5143 /** Get the current line number.
5144 * @param yyscanner The scanner object.
5145 */
giac_yyget_lineno(yyscan_t yyscanner)5146 int giac_yyget_lineno (yyscan_t yyscanner)
5147 {
5148 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5149
5150 if (! YY_CURRENT_BUFFER)
5151 return 0;
5152
5153 return yylineno;
5154 }
5155
5156 /** Get the current column number.
5157 * @param yyscanner The scanner object.
5158 */
giac_yyget_column(yyscan_t yyscanner)5159 int giac_yyget_column (yyscan_t yyscanner)
5160 {
5161 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5162
5163 if (! YY_CURRENT_BUFFER)
5164 return 0;
5165
5166 return yycolumn;
5167 }
5168
5169 /** Get the input stream.
5170 * @param yyscanner The scanner object.
5171 */
giac_yyget_in(yyscan_t yyscanner)5172 FILE *giac_yyget_in (yyscan_t yyscanner)
5173 {
5174 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5175 return yyin;
5176 }
5177
5178 /** Get the output stream.
5179 * @param yyscanner The scanner object.
5180 */
giac_yyget_out(yyscan_t yyscanner)5181 FILE *giac_yyget_out (yyscan_t yyscanner)
5182 {
5183 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5184 return yyout;
5185 }
5186
5187 /** Get the length of the current token.
5188 * @param yyscanner The scanner object.
5189 */
giac_yyget_leng(yyscan_t yyscanner)5190 int giac_yyget_leng (yyscan_t yyscanner)
5191 {
5192 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5193 return yyleng;
5194 }
5195
5196 /** Get the current token.
5197 * @param yyscanner The scanner object.
5198 */
5199
giac_yyget_text(yyscan_t yyscanner)5200 char *giac_yyget_text (yyscan_t yyscanner)
5201 {
5202 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5203 return yytext;
5204 }
5205
5206 /** Set the user-defined data. This data is never touched by the scanner.
5207 * @param user_defined The data to be associated with this scanner.
5208 * @param yyscanner The scanner object.
5209 */
giac_yyset_extra(YY_EXTRA_TYPE user_defined,yyscan_t yyscanner)5210 void giac_yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner)
5211 {
5212 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5213 yyextra = user_defined ;
5214 }
5215
5216 /** Set the current line number.
5217 * @param line_number
5218 * @param yyscanner The scanner object.
5219 */
giac_yyset_lineno(int line_number,yyscan_t yyscanner)5220 void giac_yyset_lineno (int line_number , yyscan_t yyscanner)
5221 {
5222 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5223
5224 /* lineno is only valid if an input buffer exists. */
5225 if (! YY_CURRENT_BUFFER )
5226 yy_fatal_error( "giac_yyset_lineno called with no buffer" , yyscanner);
5227
5228 yylineno = line_number;
5229 }
5230
5231 /** Set the current column.
5232 * @param line_number
5233 * @param yyscanner The scanner object.
5234 */
giac_yyset_column(int column_no,yyscan_t yyscanner)5235 void giac_yyset_column (int column_no , yyscan_t yyscanner)
5236 {
5237 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5238
5239 /* column is only valid if an input buffer exists. */
5240 if (! YY_CURRENT_BUFFER )
5241 yy_fatal_error( "giac_yyset_column called with no buffer" , yyscanner);
5242
5243 yycolumn = column_no;
5244 }
5245
5246 /** Set the input stream. This does not discard the current
5247 * input buffer.
5248 * @param in_str A readable stream.
5249 * @param yyscanner The scanner object.
5250 * @see giac_yy_switch_to_buffer
5251 */
giac_yyset_in(FILE * in_str,yyscan_t yyscanner)5252 void giac_yyset_in (FILE * in_str , yyscan_t yyscanner)
5253 {
5254 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5255 yyin = in_str ;
5256 }
5257
giac_yyset_out(FILE * out_str,yyscan_t yyscanner)5258 void giac_yyset_out (FILE * out_str , yyscan_t yyscanner)
5259 {
5260 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5261 yyout = out_str ;
5262 }
5263
giac_yyget_debug(yyscan_t yyscanner)5264 int giac_yyget_debug (yyscan_t yyscanner)
5265 {
5266 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5267 return yy_flex_debug;
5268 }
5269
giac_yyset_debug(int bdebug,yyscan_t yyscanner)5270 void giac_yyset_debug (int bdebug , yyscan_t yyscanner)
5271 {
5272 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5273 yy_flex_debug = bdebug ;
5274 }
5275
5276 /* Accessor methods for yylval and yylloc */
5277
giac_yyget_lval(yyscan_t yyscanner)5278 YYSTYPE * giac_yyget_lval (yyscan_t yyscanner)
5279 {
5280 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5281 return yylval;
5282 }
5283
giac_yyset_lval(YYSTYPE * yylval_param,yyscan_t yyscanner)5284 void giac_yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner)
5285 {
5286 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5287 yylval = yylval_param;
5288 }
5289
5290 /* User-visible API */
5291
5292 /* giac_yylex_init is special because it creates the scanner itself, so it is
5293 * the ONLY reentrant function that doesn't take the scanner as the last argument.
5294 * That's why we explicitly handle the declaration, instead of using our macros.
5295 */
5296
giac_yylex_init(yyscan_t * ptr_yy_globals)5297 int giac_yylex_init(yyscan_t* ptr_yy_globals)
5298
5299 {
5300 if (ptr_yy_globals == NULL){
5301 errno = EINVAL;
5302 return 1;
5303 }
5304
5305 *ptr_yy_globals = (yyscan_t) giac_yyalloc ( sizeof( struct yyguts_t ), NULL );
5306
5307 if (*ptr_yy_globals == NULL){
5308 errno = ENOMEM;
5309 return 1;
5310 }
5311
5312 /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
5313 memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
5314
5315 return yy_init_globals ( *ptr_yy_globals );
5316 }
5317
5318 /* giac_yylex_init_extra has the same functionality as giac_yylex_init, but follows the
5319 * convention of taking the scanner as the last argument. Note however, that
5320 * this is a *pointer* to a scanner, as it will be allocated by this call (and
5321 * is the reason, too, why this function also must handle its own declaration).
5322 * The user defined value in the first argument will be available to giac_yyalloc in
5323 * the yyextra field.
5324 */
5325
giac_yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t * ptr_yy_globals)5326 int giac_yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
5327
5328 {
5329 struct yyguts_t dummy_yyguts;
5330
5331 giac_yyset_extra (yy_user_defined, &dummy_yyguts);
5332
5333 if (ptr_yy_globals == NULL){
5334 errno = EINVAL;
5335 return 1;
5336 }
5337
5338 *ptr_yy_globals = (yyscan_t) giac_yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
5339
5340 if (*ptr_yy_globals == NULL){
5341 errno = ENOMEM;
5342 return 1;
5343 }
5344
5345 /* By setting to 0xAA, we expose bugs in
5346 yy_init_globals. Leave at 0x00 for releases. */
5347 memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
5348
5349 giac_yyset_extra (yy_user_defined, *ptr_yy_globals);
5350
5351 return yy_init_globals ( *ptr_yy_globals );
5352 }
5353
yy_init_globals(yyscan_t yyscanner)5354 static int yy_init_globals (yyscan_t yyscanner)
5355 {
5356 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5357 /* Initialization is the same as for the non-reentrant scanner.
5358 * This function is called from giac_yylex_destroy(), so don't allocate here.
5359 */
5360
5361 yyg->yy_buffer_stack = 0;
5362 yyg->yy_buffer_stack_top = 0;
5363 yyg->yy_buffer_stack_max = 0;
5364 yyg->yy_c_buf_p = (char *) 0;
5365 yyg->yy_init = 0;
5366 yyg->yy_start = 0;
5367
5368 yyg->yy_start_stack_ptr = 0;
5369 yyg->yy_start_stack_depth = 0;
5370 yyg->yy_start_stack = NULL;
5371
5372 /* Defined in main.c */
5373 #ifdef YY_STDINIT
5374 yyin = stdin;
5375 yyout = stdout;
5376 #else
5377 yyin = (FILE *) 0;
5378 yyout = (FILE *) 0;
5379 #endif
5380
5381 /* For future reference: Set errno on error, since we are called by
5382 * giac_yylex_init()
5383 */
5384 return 0;
5385 }
5386
5387 /* giac_yylex_destroy is for both reentrant and non-reentrant scanners. */
giac_yylex_destroy(yyscan_t yyscanner)5388 int giac_yylex_destroy (yyscan_t yyscanner)
5389 {
5390 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5391
5392 /* Pop the buffer stack, destroying each element. */
5393 while(YY_CURRENT_BUFFER){
5394 giac_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
5395 YY_CURRENT_BUFFER_LVALUE = NULL;
5396 giac_yypop_buffer_state(yyscanner);
5397 }
5398
5399 /* Destroy the stack itself. */
5400 giac_yyfree(yyg->yy_buffer_stack ,yyscanner);
5401 yyg->yy_buffer_stack = NULL;
5402
5403 /* Destroy the start condition stack. */
5404 giac_yyfree(yyg->yy_start_stack ,yyscanner );
5405 yyg->yy_start_stack = NULL;
5406
5407 /* Reset the globals. This is important in a non-reentrant scanner so the next time
5408 * giac_yylex() is called, initialization will occur. */
5409 yy_init_globals( yyscanner);
5410
5411 /* Destroy the main struct (reentrant only). */
5412 giac_yyfree ( yyscanner , yyscanner );
5413 yyscanner = NULL;
5414 return 0;
5415 }
5416
5417 /*
5418 * Internal utility routines.
5419 */
5420
5421 #ifndef yytext_ptr
yy_flex_strncpy(char * s1,yyconst char * s2,int n,yyscan_t yyscanner)5422 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
5423 {
5424 register int i;
5425 for ( i = 0; i < n; ++i )
5426 s1[i] = s2[i];
5427 }
5428 #endif
5429
5430 #ifdef YY_NEED_STRLEN
yy_flex_strlen(yyconst char * s,yyscan_t yyscanner)5431 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
5432 {
5433 register int n;
5434 for ( n = 0; s[n]; ++n )
5435 ;
5436
5437 return n;
5438 }
5439 #endif
5440
giac_yyalloc(yy_size_t size,yyscan_t yyscanner)5441 void *giac_yyalloc (yy_size_t size , yyscan_t yyscanner)
5442 {
5443 return (void *) malloc( size );
5444 }
5445
giac_yyrealloc(void * ptr,yy_size_t size,yyscan_t yyscanner)5446 void *giac_yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner)
5447 {
5448 /* The cast to (char *) in the following accommodates both
5449 * implementations that use char* generic pointers, and those
5450 * that use void* generic pointers. It works with the latter
5451 * because both ANSI C and C++ allow castless assignment from
5452 * any pointer type to void*, and deal with argument conversions
5453 * as though doing an assignment.
5454 */
5455 return (void *) realloc( (char *) ptr, size );
5456 }
5457
giac_yyfree(void * ptr,yyscan_t yyscanner)5458 void giac_yyfree (void * ptr , yyscan_t yyscanner)
5459 {
5460 free( (char *) ptr ); /* see giac_yyrealloc() for (char *) cast */
5461 }
5462
5463 #define YYTABLES_NAME "yytables"
5464
5465 #line 913 "input_lexer.ll"
5466
5467
5468
5469 /*
5470 * Routines
5471 */
5472 #ifndef NO_NAMESPACE_GIAC
5473 namespace giac {
5474 #endif // ndef NO_NAMESPACE_GIAC
5475
5476 // Set the input string
5477 // export GIAC_DEBUG=-2 to renew static_lexer.h/static_extern.h
set_lexer_string(const std::string & s_orig,yyscan_t & scanner,GIAC_CONTEXT)5478 YY_BUFFER_STATE set_lexer_string(const std::string &s_orig,yyscan_t & scanner,GIAC_CONTEXT){
5479 #if 0
5480 #ifdef NSPIRE
5481 FILE * f= fopen("/documents/log.tns","w"); // ends up in My Documents
5482 fprintf(f,"%s",s_orig.c_str());
5483 fclose(f);
5484 #else
5485 ofstream of("log"); // ends up in fir/windows/log
5486 of << s_orig<< '\n';
5487 #endif
5488 #endif
5489 if (abs_calc_mode(contextptr)==38 && s_orig==string(s_orig.size(),' '))
5490 giac_yyerror(scanner,"Void string");
5491 #if !defined RTOS_THREADX && !defined NSPIRE && !defined FXCG && !defined GIAC_HAS_STO_38 && !defined NSPIRE_NEWLIB && !defined NUMWORKS
5492 if (!builtin_lexer_functions_sorted){
5493 #ifndef STATIC_BUILTIN_LEXER_FUNCTIONS
5494 sort(builtin_lexer_functions_begin(),builtin_lexer_functions_end(),tri);
5495 #endif
5496 builtin_lexer_functions_sorted=true;
5497 int nfunc=builtin_lexer_functions_number;
5498 if (debug_infolevel==-2 || debug_infolevel==-4 || debug_infolevel==-5){
5499 CERR << "Writing " << nfunc << " in static_lexer.h and static_extern.h "<< '\n';
5500 CERR << "Check at_FP->at_FRAC, at_IP->at_INT, at_lgamma->at_lower_incomplete_gamma, at_is_inside->at_est_dans, at_regroup->at_regrouper, at_ugamma->at_upper_incomplete_gamma, at_∡ -> at_polar_complex, at_LINEAR? -> at_IS_LINEAR" << '\n';
5501 /*
5502 ofstream static_add_ll("static_add.ll");
5503 for (int i=0;i<nfunc;i++){
5504 static_add_ll << "\"" << builtin_lexer_functions_begin()[i].first << "\" " ;
5505 static_add_ll << "*yylval=gen(at_" << translate_at(builtin_lexer_functions_begin()[i].first) << ",0); index_status(yyextra)=0; ";
5506 static_add_ll << "return " << signed(builtin_lexer_functions_begin()[i].second.subtype)+256 << ";" ;
5507 static_add_ll << '\n';
5508 }
5509 static_add_ll.close();
5510 */
5511 ofstream static_lexer("static_lexer.h");
5512 for (int i=0;i<nfunc;i++){
5513 static_lexer << "{\"" << builtin_lexer_functions_begin()[i].first << "\",13," << signed(builtin_lexer_functions_begin()[i].second.subtype) ;
5514 if (debug_infolevel==-2)
5515 static_lexer << ",0,*((ulonglong *) at_" << translate_at(builtin_lexer_functions_begin()[i].first) << ")";
5516 else
5517 static_lexer << ",0,0";
5518 if (builtin_lexer_functions_begin()[i].second._FUNCptr->quoted())
5519 static_lexer << "| 1";
5520 static_lexer << "}" ;
5521 if (i!=nfunc-1)
5522 static_lexer << ",";
5523 static_lexer << '\n';
5524 }
5525 static_lexer.close();
5526 if (debug_infolevel==-4){
5527 ofstream static_lexer_("static_lexer_.h");
5528 for (int i=0;i<nfunc;i++){
5529 static_lexer_ << "*((size_t *) at_" << translate_at(builtin_lexer_functions_begin()[i].first) << ")";
5530 if (i!=nfunc-1)
5531 static_lexer_ << ",";
5532 static_lexer_ << '\n';
5533 }
5534 static_lexer_.close();
5535 }
5536 if (debug_infolevel==-5){
5537 ofstream static_lexer_("static_lexer_at.h");
5538 for (int i=0;i<nfunc;i++){
5539 static_lexer_ << "res->push_back(*(size_t *)at_" << translate_at(builtin_lexer_functions_begin()[i].first) <<")";
5540 if (i!=nfunc-1)
5541 static_lexer_ << ",";
5542 static_lexer_ << '\n';
5543 }
5544 static_lexer_.close();
5545 }
5546 ofstream static_extern("static_extern.h");
5547 static_extern << "#ifndef STATIC_EXTERN" << '\n';
5548 static_extern << "#define STATIC_EXTERN" << '\n';
5549 static_extern << "namespace giac{" << '\n';
5550 static_extern << "struct unary_function_ptr;" << '\n';
5551 for (int i=0;i<nfunc;i++){
5552 static_extern << "extern const unary_function_ptr * const at_" << translate_at(builtin_lexer_functions_begin()[i].first) << ";" << '\n';
5553 }
5554 static_extern << "}" << '\n';
5555 static_extern << "#endif // STATIC_EXTERN" << '\n';
5556 static_extern.close();
5557 }
5558 }
5559 #endif // RTOS_THREADX
5560 #ifdef NUMWORKS
5561 char lexer_string[4096];
5562 #else
5563 string lexer_string;
5564 #endif
5565 {
5566 string s(s_orig);
5567 #ifdef NUMWORKS
5568 if (s.size()>=sizeof(lexer_string)-100)
5569 s="Parse_string_too_large";
5570 #endif
5571 // change for Numworks built-in calculation app replacement
5572 for (size_t i=0;i<s_orig.size();++i){
5573 if (s[i]==18)
5574 s[i]='(';
5575 if (s[i]==19)
5576 s[i]=')';
5577 if (i<s.size()-2 && (unsigned char)s[i]==226 && (unsigned char)s[i+1]==134 && (unsigned char)s[i+2]==146){
5578 s[i]=' ';
5579 s[i+1]='=';
5580 s[i+2]='>';
5581 }
5582 if (i<s.size()-1){
5583 if ( ((unsigned char)s[i]==195) && ((unsigned char)s[i+1]==151) ){
5584 s[i]='*';
5585 s[i+1]=' ';
5586 }
5587 #if defined NUMWORKS || defined NSPIRE || defined FXCG
5588 if (s[i]==']' && s[i+1]=='[')
5589 s.insert(s.begin()+i+1,',');
5590 #endif
5591 }
5592 }
5593 bool instring=false;
5594 // stupid match of bracket then parenthesis
5595 int l=s.size(),nb=0,np=0;
5596 int i=0;
5597 if (lexer_close_parenthesis(contextptr)){
5598 for (;i<l;++i){
5599 if (!instring && i && s[i]=='/' && s[i-1]=='/'){
5600 // skip comment until end of line
5601 for (;i<l;++i){
5602 if (s[i]==13)
5603 break;
5604 }
5605 continue;
5606 }
5607 if (!instring && i>=2 && ( (s[i-2]=='-' && s[i-1]=='-') || (s[i-2]=='+' && s[i-1]=='+') ) && (s[i]=='.'|| (s[i]>='0' && s[i]<='9')) ){
5608 s[i-2]='+';
5609 s[i-1]=' ';
5610 }
5611 if (!instring && i && s[i]=='*' && s[i-1]=='/'){
5612 // skip comment
5613 for (;i<l;++i){
5614 if (s[i]=='/' && s[i-1]=='*')
5615 break;
5616 }
5617 if (i==l){
5618 s = s.substr(0,l-1)+"*/"+s[l-1];
5619 CERR << "unfinished comment, adding */" << '\n' << s << '\n';
5620 }
5621 continue;
5622 }
5623 if (!instring && s[i]==92){
5624 i += 2;
5625 if (i>=l)
5626 break;
5627 }
5628 if (instring){
5629 if (s[i]=='"'&& (i==0 || s[i-1]!='\\'))
5630 instring=false;
5631 }
5632 else {
5633 switch (s[i]){
5634 case '"':
5635 instring=i==0 || s[i-1]!='\\';
5636 break;
5637 case '(':
5638 ++np;
5639 break;
5640 case ')':
5641 --np;
5642 break;
5643 case '[':
5644 ++nb;
5645 break;
5646 case ']':
5647 --nb;
5648 break;
5649 }
5650 }
5651 }
5652 if (nb<0)
5653 *logptr(contextptr) << "Too many ]" << '\n';
5654 if (np<0)
5655 *logptr(contextptr) << "Too many )" << '\n';
5656 while (np<0 && i>=0 && s[i-1]==')'){
5657 --i;
5658 ++np;
5659 }
5660 while (nb<0 && i>=0 && s[i-1]==']'){
5661 --i;
5662 ++nb;
5663 }
5664 s=s.substr(0,i);
5665 if (nb>0){
5666 *logptr(contextptr) << "Warning adding " << nb << " ] at end of input" << '\n';
5667 s += string(nb,']');
5668 }
5669 if (np>0){
5670 *logptr(contextptr) << "Warning adding " << np << " ) at end of input" << '\n';
5671 s += string(np,')');
5672 }
5673 }
5674 index_status(contextptr)=0;
5675 opened_quote(contextptr)=0;
5676 in_rpn(contextptr)=0;
5677 lexer_line_number(contextptr)=1;
5678 first_error_line(contextptr)=0;
5679 spread_formula(contextptr)=0;
5680 l=s.size();
5681 for (;l;l--){
5682 if (s[l-1]!=' ')
5683 break;
5684 }
5685 // strings ending with :;
5686 while (l>=4 && s[l-1]==';' && s[l-2]==':'){
5687 // skip spaces before :;
5688 int m;
5689 for (m=l-3;m>0;--m){
5690 if (s[m]!=' ')
5691 break;
5692 }
5693 if (m<=1 || s[m]!=';')
5694 break;
5695 if (s[m-1]==':')
5696 l = m+1;
5697 else {
5698 s[m]=':';
5699 s[m+1]=';';
5700 l=m+2;
5701 }
5702 }
5703 s=s.substr(0,l);
5704 /* if (l && ( (s[l-1]==';') || (s[l-1]==':')))
5705 l--; */
5706 string ss;
5707 ss.reserve(s.size()*1.1);
5708 for (int i=0;i<l;++i){
5709 if (s[i]=='\\' && s[i+1]=='\n'){
5710 ++i;
5711 continue;
5712 }
5713 if (i && (unsigned char)s[i]==0xc2 && (unsigned char)s[i+1]!=0xb0)
5714 ss += ' ';
5715 if ( (unsigned char)s[i]==0xef && i<l-3 ){
5716 if ((unsigned char)s[i+1]==0x80 && (unsigned char)s[i+2]==0x80 ){
5717 ss+='e';
5718 i+=2;
5719 continue;
5720 }
5721 }
5722 if ( (unsigned char)s[i]==0xe2 && i<l-3 ){
5723 if ((unsigned char)s[i+1]==134 && (unsigned char)s[i+2]==146){
5724 // 0xe2 0x86 0x92
5725 ss += ' ';
5726 ss += s[i];
5727 ++i;
5728 ss += s[i];
5729 ++i;
5730 ss += s[i];
5731 ss += ' ';
5732 continue;
5733 }
5734 if ((unsigned char)s[i+1]==0x89){
5735 ss += ' ';
5736 ss += s[i];
5737 ++i;
5738 ss += s[i];
5739 ++i;
5740 ss += s[i];
5741 ss += ' ';
5742 continue;
5743 } // 0xe2 0x89
5744 if ((unsigned char)s[i+1]==0x88){
5745 // mathop, add blank before and after except following an e/E
5746 if ((unsigned char) s[i+2]==0x91){ // sigma
5747 ss += " SIGMA";
5748 i +=2;
5749 continue;
5750 }
5751 if ((unsigned char) s[i+2]==0x86){ // delta
5752 ss += " DELTA";
5753 i +=2;
5754 continue;
5755 }
5756 if ((unsigned char) s[i+2]==0x8f){ // pi
5757 ss += " PI";
5758 i +=2;
5759 continue;
5760 }
5761 if ( i>1 && (s[i-1]=='e' || s[i-1]=='E')){
5762 ss +='-';
5763 i +=2;
5764 continue;
5765 }
5766 if (i>2 && (s[i-1]==' ' && (s[i-2]=='e' || s[i-2]=='E')) ){
5767 ss[ss.size()-1] = '-';
5768 i += 3;
5769 continue;
5770 }
5771 ss += ' ';
5772 ss += s[i];
5773 ++i;
5774 ss += s[i];
5775 ++i;
5776 ss += s[i];
5777 ss += ' ';
5778 continue;
5779 } // 0xe2 0x88
5780 if ((unsigned char)s[i+1]==0x96 && ((unsigned char)s[i+2]==0xba || (unsigned char)s[i+2]==182 )){
5781 // sto
5782 ss += s[i];
5783 ++i;
5784 ss += s[i];
5785 ++i;
5786 ss += s[i];
5787 ss += ' ';
5788 continue;
5789 } // 0xe2 0x96
5790 if ((unsigned char)s[i+1]==0x86 && (unsigned char)s[i+2]==0x92){
5791 // sto
5792 ss += s[i];
5793 ++i;
5794 ss += s[i];
5795 ++i;
5796 ss += s[i];
5797 ss += ' ';
5798 continue;
5799 } // 0xe2 0x96
5800 } //end if s[i]=0xe2
5801 if (s[i]=='.'){
5802 if ( i && (i<l-1) && (s[i-1]!=' ') && (s[i+1]=='.') ){
5803 ss+= " ..";
5804 ++i;
5805 }
5806 else
5807 ss+='.';
5808 }
5809 else {
5810 if (xcas_mode(contextptr) > 0 && xcas_mode(contextptr) !=3){
5811 if (s[i]=='#')
5812 ss += "//";
5813 else
5814 ss += s[i];
5815 }
5816 else
5817 ss+=s[i];
5818 }
5819 }
5820 // ofstream of("log"); of << s << '\n' << ss << '\n'; of.close();
5821 if (debug_infolevel>2)
5822 CERR << "lexer " << ss << '\n';
5823 s.clear();
5824 #ifdef NUMWORKS
5825 ss += " \n ÿ";
5826 if (ss.size()>sizeof(lexer_string)-1)
5827 ss = "Parse_string_too_large";
5828 strcpy(lexer_string,ss.c_str());
5829 #else
5830 lexer_string = ss;
5831 lexer_string += " \n ÿ";
5832 #endif
5833 }
5834 giac_yylex_init(&scanner);
5835 giac_yyset_extra(contextptr,scanner);
5836 #ifdef NUMWORKS
5837 currently_scanned(contextptr)=lexer_string;
5838 YY_BUFFER_STATE state=giac_yy_scan_string(lexer_string,scanner);
5839 #else
5840 currently_scanned(contextptr)=lexer_string.c_str();
5841 YY_BUFFER_STATE state=giac_yy_scan_string(lexer_string.c_str(),scanner);
5842 #endif
5843 return state;
5844 }
5845
delete_lexer_string(YY_BUFFER_STATE & state,yyscan_t & scanner)5846 int delete_lexer_string(YY_BUFFER_STATE & state,yyscan_t & scanner){
5847 giac_yy_delete_buffer(state,scanner);
5848 giac_yylex_destroy(scanner);
5849 return 1;
5850 }
5851 #ifdef STATIC_BUILTIN_LEXER_FUNCTIONS
CasIsBuildInFunction(char const * s,gen & g)5852 bool CasIsBuildInFunction(char const *s, gen &g){
5853 // binary search in builtin_lexer_functions
5854 int i=0, j=builtin_lexer_functions_number-1;
5855 int cmp;
5856 cmp= strcmp(s,builtin_lexer_functions[i].s);
5857 if (cmp==0) goto found; if (cmp<0) return false;
5858 cmp= strcmp(s,builtin_lexer_functions[j].s);
5859 if (cmp==0) { i=j; goto found; } if (cmp>0) return false;
5860 while (1){
5861 if (i+1>=j) return false;
5862 int mid= (i+j)/2;
5863 cmp= strcmp(s,builtin_lexer_functions[mid].s);
5864 if (cmp==0) { i=mid; goto found; }
5865 if (cmp>0) i= mid; else j=mid;
5866 }
5867 found:
5868 #if defined NSPIRE
5869 g= gen(int((*builtin_lexer_functions_())[i]+builtin_lexer_functions[i]._FUNC_));
5870 #else
5871 g= gen(int(builtin_lexer_functions_[i]+builtin_lexer_functions[i]._FUNC_));
5872 #endif
5873 g= gen(*g._FUNCptr);
5874 return true;
5875 }
5876 #endif
5877
5878 #ifndef NO_NAMESPACE_GIAC
5879 } // namespace giac
5880 #endif // ndef NO_NAMESPACE_GIAC
5881
5882
5883