PIPS
sl_gram.c
Go to the documentation of this file.
1 /* A Bison parser, made by GNU Bison 3.8.2. */
2 
3 /* Bison implementation for Yacc-like parsers in C
4 
5  Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6  Inc.
7 
8  This program is free software: you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation, either version 3 of the License, or
11  (at your option) any later version.
12 
13  This program is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with this program. If not, see <https://www.gnu.org/licenses/>. */
20 
21 /* As a special exception, you may create a larger work that contains
22  part or all of the Bison parser skeleton and distribute that work
23  under terms of your choice, so long as that work isn't itself a
24  parser generator using the skeleton or a modified version thereof
25  as a parser skeleton. Alternatively, if you modify or redistribute
26  the parser skeleton itself, you may (at your option) remove this
27  special exception, which will cause the skeleton and the resulting
28  Bison output files to be licensed under the GNU General Public
29  License without this special exception.
30 
31  This special exception was added by the Free Software Foundation in
32  version 2.2 of Bison. */
33 
34 /* C LALR(1) parser skeleton written by Richard Stallman, by
35  simplifying the original so-called "semantic" parser. */
36 
37 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38  especially those whose name start with YY_ or yy_. They are
39  private implementation details that can be changed or removed. */
40 
41 /* All symbols defined below should begin with yy or YY, to avoid
42  infringing on user name space. This should be done even for local
43  variables, as they might otherwise be expanded by user macros.
44  There are some unavoidable exceptions within include files to
45  define necessary library symbols; they are noted "INFRINGES ON
46  USER NAME SPACE" below. */
47 
48 /* Identify Bison output, and Bison version. */
49 #define YYBISON 30802
50 
51 /* Bison version string. */
52 #define YYBISON_VERSION "3.8.2"
53 
54 /* Skeleton name. */
55 #define YYSKELETON_NAME "yacc.c"
56 
57 /* Pure parsers. */
58 #define YYPURE 0
59 
60 /* Push parsers. */
61 #define YYPUSH 0
62 
63 /* Pull parsers. */
64 #define YYPULL 1
65 
66 
67 /* Substitute the variable and function names. */
68 #define yyparse slx_parse
69 #define yylex slx_lex
70 #define yyerror slx_error
71 #define yydebug slx_debug
72 #define yynerrs slx_nerrs
73 #define yylval slx_lval
74 #define yychar slx_char
75 
76 /* First part of user prologue. */
77 #line 7 "sl_gram.y"
78 
79 
80 #include <stdio.h>
81 #include <stdlib.h>
82 #include <string.h>
83 
84 #include "boolean.h"
85 #include "arithmetique.h"
86 #include "vecteur.h"
87 #include "contrainte.h"
88 #include "sc.h"
89 #include "union.h"
90 
91 extern int slx_lex();
92 extern int slx_error();
93 extern char * slx_text;
94 extern Psysteme ps_yacc;
97 extern Value fac; /* facteur multiplicatif suivant qu'on analyse un terme*/
98  /* introduit par un moins (-1) ou par un plus (1) */
99 extern int sens; /* indique le sens de l'inegalite
100  sens = -1 ==> l'operateur est soit > ,soit >=,
101  sens = 1 ==> l'operateur est soit <, soit <= */
102 extern short int cote; /* booleen indiquant quel membre est en cours d'analyse*/
103 extern Value b1, b2; /* element du vecteur colonne du systeme donne
104  par l'analyse d'une contrainte */
105 extern Pcontrainte eq; /* pointeur sur l'egalite ou l'inegalite courante */
106 extern Pvecteur cp ; /* pointeur sur le membre courant */
107 extern short int operat; /* dernier operateur rencontre */
108 
109 extern Pcontrainte p_eg_fin;
110 extern Pcontrainte p_ineg_fin;
111 extern Pvecteur p_pred;
114 
115 /*code des operateurs de comparaison */
116 #define OPINF 1
117 #define OPINFEGAL 2
118 #define OPEGAL 3
119 #define OPSUPEGAL 4
120 #define OPSUP 5
121 #define DROIT 1
122 #define GAUCHE 2
123 /* #define NULL 0 */
124 
125 
126 #line 127 "y.tab.c"
127 
128 # ifndef YY_CAST
129 # ifdef __cplusplus
130 # define YY_CAST(Type, Val) static_cast<Type> (Val)
131 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
132 # else
133 # define YY_CAST(Type, Val) ((Type) (Val))
134 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
135 # endif
136 # endif
137 # ifndef YY_NULLPTR
138 # if defined __cplusplus
139 # if 201103L <= __cplusplus
140 # define YY_NULLPTR nullptr
141 # else
142 # define YY_NULLPTR 0
143 # endif
144 # else
145 # define YY_NULLPTR ((void*)0)
146 # endif
147 # endif
148 
149 /* Use api.header.include to #include this header
150  instead of duplicating it here. */
151 #ifndef YY_SLX_Y_TAB_H_INCLUDED
152 # define YY_SLX_Y_TAB_H_INCLUDED
153 /* Debug traces. */
154 #ifndef YYDEBUG
155 # define YYDEBUG 0
156 #endif
157 #if YYDEBUG
158 extern int slx_debug;
159 #endif
160 
161 /* Token kinds. */
162 #ifndef YYTOKENTYPE
163 # define YYTOKENTYPE
165  {
166  YYEMPTY = -2,
167  YYEOF = 0, /* "end of file" */
168  YYerror = 256, /* error */
169  YYUNDEF = 257, /* "invalid token" */
170  ACCFERM = 1, /* ACCFERM */
171  ACCOUVR = 2, /* ACCOUVR */
172  CONSTANTE = 3, /* CONSTANTE */
173  EGAL = 4, /* EGAL */
174  IDENT = 5, /* IDENT */
175  INF = 6, /* INF */
176  INFEGAL = 7, /* INFEGAL */
177  MOINS = 8, /* MOINS */
178  PLUS = 9, /* PLUS */
179  SUP = 10, /* SUP */
180  SUPEGAL = 11, /* SUPEGAL */
181  VAR = 12, /* VAR */
182  VIRG = 13 /* VIRG */
183  };
184  typedef enum yytokentype yytoken_kind_t;
185 #endif
186 /* Token kinds. */
187 #define YYEMPTY -2
188 #define YYEOF 0
189 #define YYerror 256
190 #define YYUNDEF 257
191 #define ACCFERM 1
192 #define ACCOUVR 2
193 #define CONSTANTE 3
194 #define EGAL 4
195 #define IDENT 5
196 #define INF 6
197 #define INFEGAL 7
198 #define MOINS 8
199 #define PLUS 9
200 #define SUP 10
201 #define SUPEGAL 11
202 #define VAR 12
203 #define VIRG 13
204 
205 /* Value type. */
206 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
207 union YYSTYPE
208 {
209 #line 70 "sl_gram.y"
210 
211  Value Value;
213 
214 #line 215 "y.tab.c"
215 
216 };
217 typedef union YYSTYPE YYSTYPE;
218 # define YYSTYPE_IS_TRIVIAL 1
219 # define YYSTYPE_IS_DECLARED 1
220 #endif
221 
222 
223 extern YYSTYPE slx_lval;
224 
225 
226 int slx_parse (void);
227 
228 
229 #endif /* !YY_SLX_Y_TAB_H_INCLUDED */
230 /* Symbol kind. */
232 {
234  YYSYMBOL_YYEOF = 0, /* "end of file" */
235  YYSYMBOL_YYerror = 1, /* error */
236  YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
237  YYSYMBOL_ACCFERM = 3, /* ACCFERM */
238  YYSYMBOL_ACCOUVR = 4, /* ACCOUVR */
239  YYSYMBOL_CONSTANTE = 5, /* CONSTANTE */
240  YYSYMBOL_EGAL = 6, /* EGAL */
241  YYSYMBOL_IDENT = 7, /* IDENT */
242  YYSYMBOL_INF = 8, /* INF */
243  YYSYMBOL_INFEGAL = 9, /* INFEGAL */
244  YYSYMBOL_MOINS = 10, /* MOINS */
245  YYSYMBOL_PLUS = 11, /* PLUS */
246  YYSYMBOL_SUP = 12, /* SUP */
247  YYSYMBOL_SUPEGAL = 13, /* SUPEGAL */
248  YYSYMBOL_VAR = 14, /* VAR */
249  YYSYMBOL_VIRG = 15, /* VIRG */
250  YYSYMBOL_YYACCEPT = 16, /* $accept */
251  YYSYMBOL_s_list = 17, /* s_list */
252  YYSYMBOL_inisl = 18, /* inisl */
253  YYSYMBOL_endsl = 19, /* endsl */
254  YYSYMBOL_defvar = 20, /* defvar */
255  YYSYMBOL_l_var = 21, /* l_var */
256  YYSYMBOL_newid = 22, /* newid */
257  YYSYMBOL_l_sys = 23, /* l_sys */
258  YYSYMBOL_system = 24, /* system */
259  YYSYMBOL_inisys = 25, /* inisys */
260  YYSYMBOL_endsys = 26, /* endsys */
261  YYSYMBOL_l_eq = 27, /* l_eq */
262  YYSYMBOL_eq = 28, /* eq */
263  YYSYMBOL_debeq = 29, /* debeq */
264  YYSYMBOL_feq = 30, /* feq */
265  YYSYMBOL_membre = 31, /* membre */
266  YYSYMBOL_32_1 = 32, /* $@1 */
267  YYSYMBOL_terme = 33, /* terme */
268  YYSYMBOL_ident = 34, /* ident */
269  YYSYMBOL_const = 35, /* const */
270  YYSYMBOL_op = 36, /* op */
271  YYSYMBOL_addop = 37, /* addop */
272  YYSYMBOL_multi_membre = 38, /* multi_membre */
273  YYSYMBOL_fin_mult_membre = 39, /* fin_mult_membre */
274  YYSYMBOL_virg_opt = 40 /* virg_opt */
275 };
276 typedef enum yysymbol_kind_t yysymbol_kind_t;
277 
278 
279 
280 
281 #ifdef short
282 # undef short
283 #endif
284 
285 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
286  <limits.h> and (if available) <stdint.h> are included
287  so that the code can choose integer types of a good width. */
288 
289 #ifndef __PTRDIFF_MAX__
290 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
291 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
292 # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
293 # define YY_STDINT_H
294 # endif
295 #endif
296 
297 /* Narrow types that promote to a signed type and that can represent a
298  signed or unsigned integer of at least N bits. In tables they can
299  save space and decrease cache pressure. Promoting to a signed type
300  helps avoid bugs in integer arithmetic. */
301 
302 #ifdef __INT_LEAST8_MAX__
303 typedef __INT_LEAST8_TYPE__ yytype_int8;
304 #elif defined YY_STDINT_H
305 typedef int_least8_t yytype_int8;
306 #else
307 typedef signed char yytype_int8;
308 #endif
309 
310 #ifdef __INT_LEAST16_MAX__
311 typedef __INT_LEAST16_TYPE__ yytype_int16;
312 #elif defined YY_STDINT_H
314 #else
315 typedef short yytype_int16;
316 #endif
317 
318 /* Work around bug in HP-UX 11.23, which defines these macros
319  incorrectly for preprocessor constants. This workaround can likely
320  be removed in 2023, as HPE has promised support for HP-UX 11.23
321  (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
322  <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
323 #ifdef __hpux
324 # undef UINT_LEAST8_MAX
325 # undef UINT_LEAST16_MAX
326 # define UINT_LEAST8_MAX 255
327 # define UINT_LEAST16_MAX 65535
328 #endif
329 
330 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
331 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
332 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
333  && UINT_LEAST8_MAX <= INT_MAX)
335 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
336 typedef unsigned char yytype_uint8;
337 #else
338 typedef short yytype_uint8;
339 #endif
340 
341 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
342 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
343 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
344  && UINT_LEAST16_MAX <= INT_MAX)
346 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
347 typedef unsigned short yytype_uint16;
348 #else
349 typedef int yytype_uint16;
350 #endif
351 
352 #ifndef YYPTRDIFF_T
353 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
354 # define YYPTRDIFF_T __PTRDIFF_TYPE__
355 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
356 # elif defined PTRDIFF_MAX
357 # ifndef ptrdiff_t
358 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
359 # endif
360 # define YYPTRDIFF_T ptrdiff_t
361 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
362 # else
363 # define YYPTRDIFF_T long
364 # define YYPTRDIFF_MAXIMUM LONG_MAX
365 # endif
366 #endif
367 
368 #ifndef YYSIZE_T
369 # ifdef __SIZE_TYPE__
370 # define YYSIZE_T __SIZE_TYPE__
371 # elif defined size_t
372 # define YYSIZE_T size_t
373 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
374 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
375 # define YYSIZE_T size_t
376 # else
377 # define YYSIZE_T unsigned
378 # endif
379 #endif
380 
381 #define YYSIZE_MAXIMUM \
382  YY_CAST (YYPTRDIFF_T, \
383  (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
384  ? YYPTRDIFF_MAXIMUM \
385  : YY_CAST (YYSIZE_T, -1)))
386 
387 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
388 
389 
390 /* Stored state numbers (used for stacks). */
392 
393 /* State numbers in computations. */
394 typedef int yy_state_fast_t;
395 
396 #ifndef YY_
397 # if defined YYENABLE_NLS && YYENABLE_NLS
398 # if ENABLE_NLS
399 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
400 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
401 # endif
402 # endif
403 # ifndef YY_
404 # define YY_(Msgid) Msgid
405 # endif
406 #endif
407 
408 
409 #ifndef YY_ATTRIBUTE_PURE
410 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
411 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
412 # else
413 # define YY_ATTRIBUTE_PURE
414 # endif
415 #endif
416 
417 #ifndef YY_ATTRIBUTE_UNUSED
418 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
419 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
420 # else
421 # define YY_ATTRIBUTE_UNUSED
422 # endif
423 #endif
424 
425 /* Suppress unused-variable warnings by "using" E. */
426 #if ! defined lint || defined __GNUC__
427 # define YY_USE(E) ((void) (E))
428 #else
429 # define YY_USE(E) /* empty */
430 #endif
431 
432 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
433 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
434 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
435 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
436  _Pragma ("GCC diagnostic push") \
437  _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
438 # else
439 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
440  _Pragma ("GCC diagnostic push") \
441  _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
442  _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
443 # endif
444 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
445  _Pragma ("GCC diagnostic pop")
446 #else
447 # define YY_INITIAL_VALUE(Value) Value
448 #endif
449 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
450 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
451 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
452 #endif
453 #ifndef YY_INITIAL_VALUE
454 # define YY_INITIAL_VALUE(Value) /* Nothing. */
455 #endif
456 
457 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
458 # define YY_IGNORE_USELESS_CAST_BEGIN \
459  _Pragma ("GCC diagnostic push") \
460  _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
461 # define YY_IGNORE_USELESS_CAST_END \
462  _Pragma ("GCC diagnostic pop")
463 #endif
464 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
465 # define YY_IGNORE_USELESS_CAST_BEGIN
466 # define YY_IGNORE_USELESS_CAST_END
467 #endif
468 
469 
470 #define YY_ASSERT(E) ((void) (0 && (E)))
471 
472 #if !defined yyoverflow
473 
474 /* The parser invokes alloca or malloc; define the necessary symbols. */
475 
476 # ifdef YYSTACK_USE_ALLOCA
477 # if YYSTACK_USE_ALLOCA
478 # ifdef __GNUC__
479 # define YYSTACK_ALLOC __builtin_alloca
480 # elif defined __BUILTIN_VA_ARG_INCR
481 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
482 # elif defined _AIX
483 # define YYSTACK_ALLOC __alloca
484 # elif defined _MSC_VER
485 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
486 # define alloca _alloca
487 # else
488 # define YYSTACK_ALLOC alloca
489 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
490 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
491  /* Use EXIT_SUCCESS as a witness for stdlib.h. */
492 # ifndef EXIT_SUCCESS
493 # define EXIT_SUCCESS 0
494 # endif
495 # endif
496 # endif
497 # endif
498 # endif
499 
500 # ifdef YYSTACK_ALLOC
501  /* Pacify GCC's 'empty if-body' warning. */
502 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
503 # ifndef YYSTACK_ALLOC_MAXIMUM
504  /* The OS might guarantee only one guard page at the bottom of the stack,
505  and a page size can be as small as 4096 bytes. So we cannot safely
506  invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
507  to allow for a few compiler-allocated temporary stack slots. */
508 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
509 # endif
510 # else
511 # define YYSTACK_ALLOC YYMALLOC
512 # define YYSTACK_FREE YYFREE
513 # ifndef YYSTACK_ALLOC_MAXIMUM
514 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
515 # endif
516 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
517  && ! ((defined YYMALLOC || defined malloc) \
518  && (defined YYFREE || defined free)))
519 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
520 # ifndef EXIT_SUCCESS
521 # define EXIT_SUCCESS 0
522 # endif
523 # endif
524 # ifndef YYMALLOC
525 # define YYMALLOC malloc
526 # if ! defined malloc && ! defined EXIT_SUCCESS
527 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
528 # endif
529 # endif
530 # ifndef YYFREE
531 # define YYFREE free
532 # if ! defined free && ! defined EXIT_SUCCESS
533 void free (void *); /* INFRINGES ON USER NAME SPACE */
534 # endif
535 # endif
536 # endif
537 #endif /* !defined yyoverflow */
538 
539 #if (! defined yyoverflow \
540  && (! defined __cplusplus \
541  || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
542 
543 /* A type that is properly aligned for any stack member. */
544 union yyalloc
545 {
548 };
549 
550 /* The size of the maximum gap between one aligned stack and the next. */
551 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
552 
553 /* The size of an array large to enough to hold all stacks, each with
554  N elements. */
555 # define YYSTACK_BYTES(N) \
556  ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
557  + YYSTACK_GAP_MAXIMUM)
558 
559 # define YYCOPY_NEEDED 1
560 
561 /* Relocate STACK from its old location to the new one. The
562  local variables YYSIZE and YYSTACKSIZE give the old and new number of
563  elements in the stack, and YYPTR gives the new location of the
564  stack. Advance YYPTR to a properly aligned location for the next
565  stack. */
566 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
567  do \
568  { \
569  YYPTRDIFF_T yynewbytes; \
570  YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
571  Stack = &yyptr->Stack_alloc; \
572  yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
573  yyptr += yynewbytes / YYSIZEOF (*yyptr); \
574  } \
575  while (0)
576 
577 #endif
578 
579 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
580 /* Copy COUNT objects from SRC to DST. The source and destination do
581  not overlap. */
582 # ifndef YYCOPY
583 # if defined __GNUC__ && 1 < __GNUC__
584 # define YYCOPY(Dst, Src, Count) \
585  __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
586 # else
587 # define YYCOPY(Dst, Src, Count) \
588  do \
589  { \
590  YYPTRDIFF_T yyi; \
591  for (yyi = 0; yyi < (Count); yyi++) \
592  (Dst)[yyi] = (Src)[yyi]; \
593  } \
594  while (0)
595 # endif
596 # endif
597 #endif /* !YYCOPY_NEEDED */
598 
599 /* YYFINAL -- State number of the termination state. */
600 #define YYFINAL 3
601 /* YYLAST -- Last index in YYTABLE. */
602 #define YYLAST 31
603 
604 /* YYNTOKENS -- Number of terminals. */
605 #define YYNTOKENS 16
606 /* YYNNTS -- Number of nonterminals. */
607 #define YYNNTS 25
608 /* YYNRULES -- Number of rules. */
609 #define YYNRULES 40
610 /* YYNSTATES -- Number of states. */
611 #define YYNSTATES 49
612 
613 /* YYMAXUTOK -- Last valid token kind. */
614 #define YYMAXUTOK 257
615 
616 
617 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
618  as returned by yylex, with out-of-bounds checking. */
619 #define YYTRANSLATE(YYX) \
620  (0 <= (YYX) && (YYX) <= YYMAXUTOK \
621  ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
622  : YYSYMBOL_YYUNDEF)
623 
624 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
625  as returned by yylex. */
626 static const yytype_int8 yytranslate[] =
627 {
628  0, 3, 4, 5, 6, 7, 8, 9, 10, 11,
629  12, 13, 14, 15, 2, 2, 2, 2, 2, 2,
630  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
631  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
632  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
633  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
634  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
635  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
636  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
637  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
638  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
639  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
640  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
641  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
642  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
643  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
644  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
645  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
646  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
647  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
648  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
649  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
650  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
651  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
652  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
653  2, 2, 2, 2, 2, 2, 1, 2
654 };
655 
656 #if YYDEBUG
657 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
658 static const yytype_int16 yyrline[] =
659 {
660  0, 77, 77, 81, 88, 93, 96, 97, 100, 107,
661  108, 111, 115, 123, 134, 135, 136, 139, 143, 156,
662  161, 162, 162, 163, 166, 178, 190, 201, 216, 222,
663  230, 238, 246, 254, 263, 265, 269, 270, 274, 302,
664  303
665 };
666 #endif
667 
668 /** Accessing symbol of state STATE. */
669 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
670 
671 #if YYDEBUG || 0
672 /* The user-facing name of the symbol whose (internal) number is
673  YYSYMBOL. No bounds checking. */
674 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
675 
676 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
677  First, the terminals, then, starting at YYNTOKENS, nonterminals. */
678 static const char *const yytname[] =
679 {
680  "\"end of file\"", "error", "\"invalid token\"", "ACCFERM", "ACCOUVR",
681  "CONSTANTE", "EGAL", "IDENT", "INF", "INFEGAL", "MOINS", "PLUS", "SUP",
682  "SUPEGAL", "VAR", "VIRG", "$accept", "s_list", "inisl", "endsl",
683  "defvar", "l_var", "newid", "l_sys", "system", "inisys", "endsys",
684  "l_eq", "eq", "debeq", "feq", "membre", "$@1", "terme", "ident", "const",
685  "op", "addop", "multi_membre", "fin_mult_membre", "virg_opt", YY_NULLPTR
686 };
687 
688 static const char *
690 {
691  return yytname[yysymbol];
692 }
693 #endif
694 
695 #define YYPACT_NINF (-25)
696 
697 #define yypact_value_is_default(Yyn) \
698  ((Yyn) == YYPACT_NINF)
699 
700 #define YYTABLE_NINF (-40)
701 
702 #define yytable_value_is_error(Yyn) \
703  0
704 
705 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
706  STATE-NUM. */
707 static const yytype_int8 yypact[] =
708 {
709  -25, 7, 2, -25, 11, -25, -25, 4, -25, -25,
710  16, 17, 11, -25, -25, -2, -25, 8, -25, 1,
711  21, 22, -25, -25, 1, 10, 10, -3, -25, -25,
712  10, -25, -25, -25, -25, 19, -25, -25, -25, -25,
713  -25, -25, 1, -25, -25, -25, 1, -1, -25
714 };
715 
716 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
717  Performed when YYTABLE does not specify something else to do. Zero
718  means the default is an error. */
719 static const yytype_int8 yydefact[] =
720 {
721  3, 0, 0, 1, 0, 12, 8, 5, 6, 4,
722  9, 0, 0, 2, 10, 18, 7, 40, 14, 21,
723  18, 0, 35, 34, 36, 0, 0, 0, 15, 13,
724  0, 28, 27, 22, 26, 25, 20, 31, 29, 30,
725  32, 33, 21, 11, 23, 24, 38, 37, 17
726 };
727 
728 /* YYPGOTO[NTERM-NUM]. */
729 static const yytype_int8 yypgoto[] =
730 {
731  -25, -25, -25, -25, -25, -25, 15, 18, -25, -25,
732  -25, -25, 9, -25, -25, -12, -25, -22, -4, -25,
733  -25, -24, -25, -25, -25
734 };
735 
736 /* YYDEFGOTO[NTERM-NUM]. */
737 static const yytype_int8 yydefgoto[] =
738 {
739  0, 1, 2, 13, 5, 7, 8, 9, 10, 11,
740  43, 17, 18, 19, 48, 24, 25, 33, 34, 35,
741  42, 26, 27, 47, 21
742 };
743 
744 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
745  positive, shift that token. If negative, reduce the rule whose
746  number is the opposite. If YYTABLE_NINF, syntax error. */
747 static const yytype_int8 yytable[] =
748 {
749  30, -16, -19, 37, 36, 38, 39, 3, 44, 40,
750  41, 22, 23, -16, -19, 31, 4, 32, 6, 12,
751  -12, 15, 30, 20, -39, 29, 32, 16, 14, 28,
752  46, 45
753 };
754 
755 static const yytype_int8 yycheck[] =
756 {
757  24, 3, 3, 6, 26, 8, 9, 0, 30, 12,
758  13, 10, 11, 15, 15, 5, 14, 7, 7, 15,
759  4, 4, 46, 15, 3, 3, 7, 12, 10, 20,
760  42, 35
761 };
762 
763 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
764  state STATE-NUM. */
765 static const yytype_int8 yystos[] =
766 {
767  0, 17, 18, 0, 14, 20, 7, 21, 22, 23,
768  24, 25, 15, 19, 23, 4, 22, 27, 28, 29,
769  15, 40, 10, 11, 31, 32, 37, 38, 28, 3,
770  37, 5, 7, 33, 34, 35, 33, 6, 8, 9,
771  12, 13, 36, 26, 33, 34, 31, 39, 30
772 };
773 
774 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
775 static const yytype_int8 yyr1[] =
776 {
777  0, 16, 17, 18, 19, 20, 21, 21, 22, 23,
778  23, 24, 25, 26, 27, 27, 27, 28, 29, 30,
779  31, 32, 31, 31, 33, 33, 33, 34, 35, 36,
780  36, 36, 36, 36, 37, 37, 38, 38, 39, 40,
781  40
782 };
783 
784 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
785 static const yytype_int8 yyr2[] =
786 {
787  0, 2, 4, 0, 0, 2, 1, 3, 1, 1,
788  2, 6, 0, 0, 1, 3, 0, 6, 0, 0,
789  2, 0, 2, 3, 2, 1, 1, 1, 1, 1,
790  1, 1, 1, 1, 1, 1, 1, 4, 0, 1,
791  0
792 };
793 
794 
795 enum { YYENOMEM = -2 };
796 
797 #define yyerrok (yyerrstatus = 0)
798 #define yyclearin (yychar = YYEMPTY)
799 
800 #define YYACCEPT goto yyacceptlab
801 #define YYABORT goto yyabortlab
802 #define YYERROR goto yyerrorlab
803 #define YYNOMEM goto yyexhaustedlab
804 
805 
806 #define YYRECOVERING() (!!yyerrstatus)
807 
808 #define YYBACKUP(Token, Value) \
809  do \
810  if (yychar == YYEMPTY) \
811  { \
812  yychar = (Token); \
813  yylval = (Value); \
814  YYPOPSTACK (yylen); \
815  yystate = *yyssp; \
816  goto yybackup; \
817  } \
818  else \
819  { \
820  yyerror (YY_("syntax error: cannot back up")); \
821  YYERROR; \
822  } \
823  while (0)
824 
825 /* Backward compatibility with an undocumented macro.
826  Use YYerror or YYUNDEF. */
827 #define YYERRCODE YYUNDEF
828 
829 
830 /* Enable debugging if requested. */
831 #if YYDEBUG
832 
833 # ifndef YYFPRINTF
834 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
835 # define YYFPRINTF fprintf
836 # endif
837 
838 # define YYDPRINTF(Args) \
839 do { \
840  if (yydebug) \
841  YYFPRINTF Args; \
842 } while (0)
843 
844 
845 
846 
847 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
848 do { \
849  if (yydebug) \
850  { \
851  YYFPRINTF (stderr, "%s ", Title); \
852  yy_symbol_print (stderr, \
853  Kind, Value); \
854  YYFPRINTF (stderr, "\n"); \
855  } \
856 } while (0)
857 
858 
859 /*-----------------------------------.
860 | Print this symbol's value on YYO. |
861 `-----------------------------------*/
862 
863 static void
864 yy_symbol_value_print (FILE *yyo,
865  yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
866 {
867  FILE *yyoutput = yyo;
868  YY_USE (yyoutput);
869  if (!yyvaluep)
870  return;
872  YY_USE (yykind);
874 }
875 
876 
877 /*---------------------------.
878 | Print this symbol on YYO. |
879 `---------------------------*/
880 
881 static void
882 yy_symbol_print (FILE *yyo,
883  yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
884 {
885  YYFPRINTF (yyo, "%s %s (",
886  yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
887 
888  yy_symbol_value_print (yyo, yykind, yyvaluep);
889  YYFPRINTF (yyo, ")");
890 }
891 
892 /*------------------------------------------------------------------.
893 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
894 | TOP (included). |
895 `------------------------------------------------------------------*/
896 
897 static void
898 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
899 {
900  YYFPRINTF (stderr, "Stack now");
901  for (; yybottom <= yytop; yybottom++)
902  {
903  int yybot = *yybottom;
904  YYFPRINTF (stderr, " %d", yybot);
905  }
906  YYFPRINTF (stderr, "\n");
907 }
908 
909 # define YY_STACK_PRINT(Bottom, Top) \
910 do { \
911  if (yydebug) \
912  yy_stack_print ((Bottom), (Top)); \
913 } while (0)
914 
915 
916 /*------------------------------------------------.
917 | Report that the YYRULE is going to be reduced. |
918 `------------------------------------------------*/
919 
920 static void
921 yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
922  int yyrule)
923 {
924  int yylno = yyrline[yyrule];
925  int yynrhs = yyr2[yyrule];
926  int yyi;
927  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
928  yyrule - 1, yylno);
929  /* The symbols being reduced. */
930  for (yyi = 0; yyi < yynrhs; yyi++)
931  {
932  YYFPRINTF (stderr, " $%d = ", yyi + 1);
933  yy_symbol_print (stderr,
934  YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
935  &yyvsp[(yyi + 1) - (yynrhs)]);
936  YYFPRINTF (stderr, "\n");
937  }
938 }
939 
940 # define YY_REDUCE_PRINT(Rule) \
941 do { \
942  if (yydebug) \
943  yy_reduce_print (yyssp, yyvsp, Rule); \
944 } while (0)
945 
946 /* Nonzero means print parse trace. It is left uninitialized so that
947  multiple parsers can coexist. */
948 int yydebug;
949 #else /* !YYDEBUG */
950 # define YYDPRINTF(Args) ((void) 0)
951 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
952 # define YY_STACK_PRINT(Bottom, Top)
953 # define YY_REDUCE_PRINT(Rule)
954 #endif /* !YYDEBUG */
955 
956 
957 /* YYINITDEPTH -- initial size of the parser's stacks. */
958 #ifndef YYINITDEPTH
959 # define YYINITDEPTH 200
960 #endif
961 
962 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
963  if the built-in stack extension method is used).
964 
965  Do not make this value too large; the results are undefined if
966  YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
967  evaluated with infinite-precision integer arithmetic. */
968 
969 #ifndef YYMAXDEPTH
970 # define YYMAXDEPTH 10000
971 #endif
972 
973 
974 
975 
976 
977 
978 /*-----------------------------------------------.
979 | Release the memory associated to this symbol. |
980 `-----------------------------------------------*/
981 
982 static void
983 yydestruct (const char *yymsg,
984  yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
985 {
986  YY_USE (yyvaluep);
987  if (!yymsg)
988  yymsg = "Deleting";
989  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
990 
992  YY_USE (yykind);
994 }
995 
996 
997 /* Lookahead token kind. */
998 int yychar;
999 
1000 /* The semantic value of the lookahead symbol. */
1002 /* Number of syntax errors so far. */
1004 
1005 
1006 
1007 
1008 /*----------.
1009 | yyparse. |
1010 `----------*/
1011 
1012 int
1013 yyparse (void)
1014 {
1015  yy_state_fast_t yystate = 0;
1016  /* Number of tokens to shift before error messages enabled. */
1017  int yyerrstatus = 0;
1018 
1019  /* Refer to the stacks through separate pointers, to allow yyoverflow
1020  to reallocate them elsewhere. */
1021 
1022  /* Their size. */
1023  YYPTRDIFF_T yystacksize = YYINITDEPTH;
1024 
1025  /* The state stack: array, bottom, top. */
1026  yy_state_t yyssa[YYINITDEPTH];
1027  yy_state_t *yyss = yyssa;
1028  yy_state_t *yyssp = yyss;
1029 
1030  /* The semantic value stack: array, bottom, top. */
1031  YYSTYPE yyvsa[YYINITDEPTH];
1032  YYSTYPE *yyvs = yyvsa;
1033  YYSTYPE *yyvsp = yyvs;
1034 
1035  int yyn;
1036  /* The return value of yyparse. */
1037  int yyresult;
1038  /* Lookahead symbol kind. */
1040  /* The variables used to return semantic value and location from the
1041  action routines. */
1042  YYSTYPE yyval;
1043 
1044 
1045 
1046 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1047 
1048  /* The number of symbols on the RHS of the reduced rule.
1049  Keep to zero when no symbol should be popped. */
1050  int yylen = 0;
1051 
1052  YYDPRINTF ((stderr, "Starting parse\n"));
1053 
1054  yychar = YYEMPTY; /* Cause a token to be read. */
1055 
1056  goto yysetstate;
1057 
1058 
1059 /*------------------------------------------------------------.
1060 | yynewstate -- push a new state, which is found in yystate. |
1061 `------------------------------------------------------------*/
1062 yynewstate:
1063  /* In all cases, when you get here, the value and location stacks
1064  have just been pushed. So pushing a state here evens the stacks. */
1065  yyssp++;
1066 
1067 
1068 /*--------------------------------------------------------------------.
1069 | yysetstate -- set current state (the top of the stack) to yystate. |
1070 `--------------------------------------------------------------------*/
1071 yysetstate:
1072  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1073  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
1075  *yyssp = YY_CAST (yy_state_t, yystate);
1077  YY_STACK_PRINT (yyss, yyssp);
1078 
1079  if (yyss + yystacksize - 1 <= yyssp)
1080 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
1081  YYNOMEM;
1082 #else
1083  {
1084  /* Get the current used size of the three stacks, in elements. */
1085  YYPTRDIFF_T yysize = yyssp - yyss + 1;
1086 
1087 # if defined yyoverflow
1088  {
1089  /* Give user a chance to reallocate the stack. Use copies of
1090  these so that the &'s don't force the real ones into
1091  memory. */
1092  yy_state_t *yyss1 = yyss;
1093  YYSTYPE *yyvs1 = yyvs;
1094 
1095  /* Each stack pointer address is followed by the size of the
1096  data in use in that stack, in bytes. This used to be a
1097  conditional around just the two extra args, but that might
1098  be undefined if yyoverflow is a macro. */
1099  yyoverflow (YY_("memory exhausted"),
1100  &yyss1, yysize * YYSIZEOF (*yyssp),
1101  &yyvs1, yysize * YYSIZEOF (*yyvsp),
1102  &yystacksize);
1103  yyss = yyss1;
1104  yyvs = yyvs1;
1105  }
1106 # else /* defined YYSTACK_RELOCATE */
1107  /* Extend the stack our own way. */
1108  if (YYMAXDEPTH <= yystacksize)
1109  YYNOMEM;
1110  yystacksize *= 2;
1111  if (YYMAXDEPTH < yystacksize)
1112  yystacksize = YYMAXDEPTH;
1113 
1114  {
1115  yy_state_t *yyss1 = yyss;
1116  union yyalloc *yyptr =
1117  YY_CAST (union yyalloc *,
1118  YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
1119  if (! yyptr)
1120  YYNOMEM;
1121  YYSTACK_RELOCATE (yyss_alloc, yyss);
1122  YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1123 # undef YYSTACK_RELOCATE
1124  if (yyss1 != yyssa)
1125  YYSTACK_FREE (yyss1);
1126  }
1127 # endif
1128 
1129  yyssp = yyss + yysize - 1;
1130  yyvsp = yyvs + yysize - 1;
1131 
1133  YYDPRINTF ((stderr, "Stack size increased to %ld\n",
1134  YY_CAST (long, yystacksize)));
1136 
1137  if (yyss + yystacksize - 1 <= yyssp)
1138  YYABORT;
1139  }
1140 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
1141 
1142 
1143  if (yystate == YYFINAL)
1144  YYACCEPT;
1145 
1146  goto yybackup;
1147 
1148 
1149 /*-----------.
1150 | yybackup. |
1151 `-----------*/
1152 yybackup:
1153  /* Do appropriate processing given the current state. Read a
1154  lookahead token if we need one and don't already have one. */
1155 
1156  /* First try to decide what to do without reference to lookahead token. */
1157  yyn = yypact[yystate];
1158  if (yypact_value_is_default (yyn))
1159  goto yydefault;
1160 
1161  /* Not known => get a lookahead token if don't already have one. */
1162 
1163  /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
1164  if (yychar == YYEMPTY)
1165  {
1166  YYDPRINTF ((stderr, "Reading a token\n"));
1167  yychar = yylex ();
1168  }
1169 
1170  if (yychar <= YYEOF)
1171  {
1172  yychar = YYEOF;
1173  yytoken = YYSYMBOL_YYEOF;
1174  YYDPRINTF ((stderr, "Now at end of input.\n"));
1175  }
1176  else if (yychar == YYerror)
1177  {
1178  /* The scanner already issued an error message, process directly
1179  to error recovery. But do not keep the error token as
1180  lookahead, it is too special and may lead us to an endless
1181  loop in error recovery. */
1182  yychar = YYUNDEF;
1183  yytoken = YYSYMBOL_YYerror;
1184  goto yyerrlab1;
1185  }
1186  else
1187  {
1188  yytoken = YYTRANSLATE (yychar);
1189  YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1190  }
1191 
1192  /* If the proper action on seeing token YYTOKEN is to reduce or to
1193  detect an error, take that action. */
1194  yyn += yytoken;
1195  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1196  goto yydefault;
1197  yyn = yytable[yyn];
1198  if (yyn <= 0)
1199  {
1200  if (yytable_value_is_error (yyn))
1201  goto yyerrlab;
1202  yyn = -yyn;
1203  goto yyreduce;
1204  }
1205 
1206  /* Count tokens shifted since error; after three, turn off error
1207  status. */
1208  if (yyerrstatus)
1209  yyerrstatus--;
1210 
1211  /* Shift the lookahead token. */
1212  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1213  yystate = yyn;
1215  *++yyvsp = yylval;
1217 
1218  /* Discard the shifted token. */
1219  yychar = YYEMPTY;
1220  goto yynewstate;
1221 
1222 
1223 /*-----------------------------------------------------------.
1224 | yydefault -- do the default action for the current state. |
1225 `-----------------------------------------------------------*/
1226 yydefault:
1227  yyn = yydefact[yystate];
1228  if (yyn == 0)
1229  goto yyerrlab;
1230  goto yyreduce;
1231 
1232 
1233 /*-----------------------------.
1234 | yyreduce -- do a reduction. |
1235 `-----------------------------*/
1236 yyreduce:
1237  /* yyn is the number of a rule to reduce with. */
1238  yylen = yyr2[yyn];
1239 
1240  /* If YYLEN is nonzero, implement the default value of the action:
1241  '$$ = $1'.
1242 
1243  Otherwise, the following line sets YYVAL to garbage.
1244  This behavior is undocumented and Bison
1245  users should not rely upon it. Assigning to YYVAL
1246  unconditionally makes the parser a bit smaller, and it avoids a
1247  GCC warning that YYVAL may be used uninitialized. */
1248  yyval = yyvsp[1-yylen];
1249 
1250 
1251  YY_REDUCE_PRINT (yyn);
1252  switch (yyn)
1253  {
1254  case 3: /* inisl: %empty */
1255 #line 81 "sl_gram.y"
1256  { /* Initialisation de la liste des systemes */
1257  sl_yacc = NULL;
1258  syntax_error = false;
1259  }
1260 #line 1261 "y.tab.c"
1261  break;
1262 
1263  case 4: /* endsl: %empty */
1264 #line 88 "sl_gram.y"
1265  { /* Fin de la list des systemes */
1266  vect_rm( (Pvecteur) ba_yacc ); ba_yacc = NULL;
1267  }
1268 #line 1269 "y.tab.c"
1269  break;
1270 
1271  case 8: /* newid: IDENT */
1272 #line 101 "sl_gram.y"
1273  {
1276  }
1277 #line 1278 "y.tab.c"
1278  break;
1279 
1280  case 12: /* inisys: %empty */
1281 #line 115 "sl_gram.y"
1282  { /* initialisation des parametres de la liste de systemes */
1283  /* et initialisation des variables */
1284  ps_yacc = sc_new();
1285  init_globals();
1286  }
1287 #line 1288 "y.tab.c"
1288  break;
1289 
1290  case 13: /* endsys: %empty */
1291 #line 123 "sl_gram.y"
1292  {
1293  /* on rajoute le systeme trouve a la liste */
1294  if (ps_yacc != NULL) {
1295  ps_yacc->base = NULL;
1297  }
1299  }
1300 #line 1301 "y.tab.c"
1301  break;
1302 
1303  case 18: /* debeq: %empty */
1304 #line 143 "sl_gram.y"
1305  {
1306  fac = VALUE_ONE;
1307  sens = 1;
1308  cote = GAUCHE;
1309  b1 = 0;
1310  b2 = 0;
1311  operat = 0;
1312  cp = NULL;
1313  eq = contrainte_new();
1314  }
1315 #line 1316 "y.tab.c"
1316  break;
1317 
1318  case 19: /* feq: %empty */
1319 #line 156 "sl_gram.y"
1320  {
1321  contrainte_free(eq);
1322  }
1323 #line 1324 "y.tab.c"
1324  break;
1325 
1326  case 21: /* $@1: %empty */
1327 #line 162 "sl_gram.y"
1328  { fac = VALUE_ONE;}
1329 #line 1330 "y.tab.c"
1330  break;
1331 
1332  case 24: /* terme: const ident */
1333 #line 167 "sl_gram.y"
1334  {
1335  if (cote==DROIT)
1336  value_oppose(fac);
1337 
1338  /* ajout du couple (ident,const) a la contrainte courante */
1339  vect_add_elem(&(eq->vecteur), (Variable) (yyvsp[0].Variable),value_mult(fac,(yyvsp[-1].Value)));
1340  /* duplication du couple (ident,const) de la combinaison lineaire
1341  traitee*/
1342  if (operat) vect_add_elem(&cp,(Variable) (yyvsp[0].Variable),
1343  value_uminus(value_mult(fac,(yyvsp[-1].Value))));
1344  }
1345 #line 1346 "y.tab.c"
1346  break;
1347 
1348  case 25: /* terme: const */
1349 #line 179 "sl_gram.y"
1350  {
1351  Value v = value_mult(fac,(yyvsp[0].Value));
1352  if (cote==DROIT)
1353  {
1355  }
1356  else
1357  {
1359  }
1360  }
1361 #line 1362 "y.tab.c"
1362  break;
1363 
1364  case 26: /* terme: ident */
1365 #line 191 "sl_gram.y"
1366  {
1367  if (cote==DROIT) value_oppose(fac);
1368 
1369  /* ajout du couple (ident,1) a la contrainte courante */
1370  vect_add_elem (&(eq->vecteur),(Variable) (yyvsp[0].Variable),fac);
1371  /* duplication du couple (ident,1) de la combinaison lineaire traitee */
1372  if (operat) vect_add_elem(&cp,(Variable) (yyvsp[0].Variable),value_uminus(fac));
1373  }
1374 #line 1375 "y.tab.c"
1375  break;
1376 
1377  case 27: /* ident: IDENT */
1378 #line 202 "sl_gram.y"
1379  {
1381  (Variable) slx_text,
1384  (void) fprintf(stderr,
1385  "Variable %s not declared. Add it to the VAR list!\n",
1387  exit(1);
1388  }
1389  (yyval.Variable) = va_yacc;
1390  }
1391 #line 1392 "y.tab.c"
1392  break;
1393 
1394  case 28: /* const: CONSTANTE */
1395 #line 217 "sl_gram.y"
1397  (yyval.Value) = (Value) valcst;
1398  }
1399 #line 1400 "y.tab.c"
1400  break;
1401 
1402  case 29: /* op: INF */
1403 #line 223 "sl_gram.y"
1404  {
1405  cote = DROIT;
1406  sens = 1;
1407  operat = OPINF;
1408  cp = NULL;
1409  b2 = 0;
1410  }
1411 #line 1412 "y.tab.c"
1412  break;
1413 
1414  case 30: /* op: INFEGAL */
1415 #line 231 "sl_gram.y"
1416  {
1417  cote = DROIT;
1418  sens = 1;
1419  operat = OPINFEGAL;
1420  cp = NULL;
1421  b2 = 0;
1422  }
1423 #line 1424 "y.tab.c"
1424  break;
1425 
1426  case 31: /* op: EGAL */
1427 #line 239 "sl_gram.y"
1428  {
1429  cote = DROIT;
1430  sens = 1;
1431  operat = OPEGAL;
1432  cp = NULL;
1433  b2 = 0;
1434  }
1435 #line 1436 "y.tab.c"
1436  break;
1437 
1438  case 32: /* op: SUP */
1439 #line 247 "sl_gram.y"
1440  {
1441  cote = DROIT;
1442  sens = -1;
1443  operat = OPSUP;
1444  cp = NULL;
1445  b2 = 0;
1446  }
1447 #line 1448 "y.tab.c"
1448  break;
1449 
1450  case 33: /* op: SUPEGAL */
1451 #line 255 "sl_gram.y"
1452  {
1453  cote = DROIT;
1454  sens = -1;
1455  operat = OPSUPEGAL;
1456  cp = NULL;
1457  b2 = 0;
1458  }
1459 #line 1460 "y.tab.c"
1460  break;
1461 
1462  case 34: /* addop: PLUS */
1463 #line 264 "sl_gram.y"
1464  { fac = VALUE_ONE; }
1465 #line 1466 "y.tab.c"
1466  break;
1467 
1468  case 35: /* addop: MOINS */
1469 #line 266 "sl_gram.y"
1470  { fac = VALUE_MONE; }
1471 #line 1472 "y.tab.c"
1472  break;
1473 
1474  case 38: /* fin_mult_membre: %empty */
1475 #line 274 "sl_gram.y"
1476  {
1478  switch (operat) {
1479  case OPINF:
1482  break;
1483  case OPINFEGAL:
1485  break;
1486  case OPSUPEGAL:
1488  break;
1489  case OPSUP:
1492  break;
1493  case OPEGAL:
1494  creer_eg(ps_yacc,eq);
1495  break;
1496  }
1497 
1498  eq = contrainte_new();
1499  eq->vecteur = cp;
1500  b1 = b2;
1501  }
1502 #line 1503 "y.tab.c"
1503  break;
1504 
1505 
1506 #line 1507 "y.tab.c"
1507 
1508  default: break;
1509  }
1510  /* User semantic actions sometimes alter yychar, and that requires
1511  that yytoken be updated with the new translation. We take the
1512  approach of translating immediately before every use of yytoken.
1513  One alternative is translating here after every semantic action,
1514  but that translation would be missed if the semantic action invokes
1515  YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
1516  if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
1517  incorrect destructor might then be invoked immediately. In the
1518  case of YYERROR or YYBACKUP, subsequent parser actions might lead
1519  to an incorrect destructor call or verbose syntax error message
1520  before the lookahead is translated. */
1521  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
1522 
1523  YYPOPSTACK (yylen);
1524  yylen = 0;
1525 
1526  *++yyvsp = yyval;
1527 
1528  /* Now 'shift' the result of the reduction. Determine what state
1529  that goes to, based on the state we popped back to and the rule
1530  number reduced by. */
1531  {
1532  const int yylhs = yyr1[yyn] - YYNTOKENS;
1533  const int yyi = yypgoto[yylhs] + *yyssp;
1534  yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
1535  ? yytable[yyi]
1536  : yydefgoto[yylhs]);
1537  }
1538 
1539  goto yynewstate;
1540 
1541 
1542 /*--------------------------------------.
1543 | yyerrlab -- here on detecting error. |
1544 `--------------------------------------*/
1545 yyerrlab:
1546  /* Make sure we have latest lookahead translation. See comments at
1547  user semantic actions for why this is necessary. */
1548  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
1549  /* If not already recovering from an error, report this error. */
1550  if (!yyerrstatus)
1551  {
1552  ++yynerrs;
1553  yyerror (YY_("syntax error"));
1554  }
1555 
1556  if (yyerrstatus == 3)
1557  {
1558  /* If just tried and failed to reuse lookahead token after an
1559  error, discard it. */
1560 
1561  if (yychar <= YYEOF)
1562  {
1563  /* Return failure if at end of input. */
1564  if (yychar == YYEOF)
1565  YYABORT;
1566  }
1567  else
1568  {
1569  yydestruct ("Error: discarding",
1570  yytoken, &yylval);
1571  yychar = YYEMPTY;
1572  }
1573  }
1574 
1575  /* Else will try to reuse lookahead token after shifting the error
1576  token. */
1577  goto yyerrlab1;
1578 
1579 
1580 /*---------------------------------------------------.
1581 | yyerrorlab -- error raised explicitly by YYERROR. |
1582 `---------------------------------------------------*/
1583 yyerrorlab:
1584  /* Pacify compilers when the user code never invokes YYERROR and the
1585  label yyerrorlab therefore never appears in user code. */
1586  if (0)
1587  YYERROR;
1588  ++yynerrs;
1589 
1590  /* Do not reclaim the symbols of the rule whose action triggered
1591  this YYERROR. */
1592  YYPOPSTACK (yylen);
1593  yylen = 0;
1594  YY_STACK_PRINT (yyss, yyssp);
1595  yystate = *yyssp;
1596  goto yyerrlab1;
1597 
1598 
1599 /*-------------------------------------------------------------.
1600 | yyerrlab1 -- common code for both syntax error and YYERROR. |
1601 `-------------------------------------------------------------*/
1602 yyerrlab1:
1603  yyerrstatus = 3; /* Each real token shifted decrements this. */
1604 
1605  /* Pop stack until we find a state that shifts the error token. */
1606  for (;;)
1607  {
1608  yyn = yypact[yystate];
1609  if (!yypact_value_is_default (yyn))
1610  {
1611  yyn += YYSYMBOL_YYerror;
1612  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
1613  {
1614  yyn = yytable[yyn];
1615  if (0 < yyn)
1616  break;
1617  }
1618  }
1619 
1620  /* Pop the current state because it cannot handle the error token. */
1621  if (yyssp == yyss)
1622  YYABORT;
1623 
1624 
1625  yydestruct ("Error: popping",
1626  YY_ACCESSING_SYMBOL (yystate), yyvsp);
1627  YYPOPSTACK (1);
1628  yystate = *yyssp;
1629  YY_STACK_PRINT (yyss, yyssp);
1630  }
1631 
1633  *++yyvsp = yylval;
1635 
1636 
1637  /* Shift the error token. */
1638  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
1639 
1640  yystate = yyn;
1641  goto yynewstate;
1642 
1643 
1644 /*-------------------------------------.
1645 | yyacceptlab -- YYACCEPT comes here. |
1646 `-------------------------------------*/
1647 yyacceptlab:
1648  yyresult = 0;
1649  goto yyreturnlab;
1650 
1651 
1652 /*-----------------------------------.
1653 | yyabortlab -- YYABORT comes here. |
1654 `-----------------------------------*/
1655 yyabortlab:
1656  yyresult = 1;
1657  goto yyreturnlab;
1658 
1659 
1660 /*-----------------------------------------------------------.
1661 | yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. |
1662 `-----------------------------------------------------------*/
1663 yyexhaustedlab:
1664  yyerror (YY_("memory exhausted"));
1665  yyresult = 2;
1666  goto yyreturnlab;
1667 
1668 
1669 /*----------------------------------------------------------.
1670 | yyreturnlab -- parsing is finished, clean up and return. |
1671 `----------------------------------------------------------*/
1672 yyreturnlab:
1673  if (yychar != YYEMPTY)
1674  {
1675  /* Make sure we have latest lookahead translation. See comments at
1676  user semantic actions for why this is necessary. */
1677  yytoken = YYTRANSLATE (yychar);
1678  yydestruct ("Cleanup: discarding lookahead",
1679  yytoken, &yylval);
1680  }
1681  /* Do not reclaim the symbols of the rule whose action triggered
1682  this YYABORT or YYACCEPT. */
1683  YYPOPSTACK (yylen);
1684  YY_STACK_PRINT (yyss, yyssp);
1685  while (yyssp != yyss)
1686  {
1687  yydestruct ("Cleanup: popping",
1688  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
1689  YYPOPSTACK (1);
1690  }
1691 #ifndef yyoverflow
1692  if (yyss != yyssa)
1693  YYSTACK_FREE (yyss);
1694 #endif
1695 
1696  return yyresult;
1697 }
1698 
1699 #line 306 "sl_gram.y"
1700 
1701 
1702 int slx_error(char * s)
1703 {
1704  /* procedure minimum de recouvrement d'erreurs */
1705  int c;
1706  (void) fprintf(stderr, "%s near %s\n",s, slx_text);
1707  while ((c = getchar()) != EOF) putchar(c);
1708  syntax_error = true;
1709  return 0;
1710 }
#define value_oppose(ref)
#define value_uminus(val)
unary operators on values
#define VALUE_MONE
int Value
#define value_addto(ref, val)
#define VALUE_ONE
#define value_substract(ref, val)
#define value_mult(v, w)
whether the default is protected or not this define makes no sense any more...
int sscan_Value(char *, Value *)
Definition: io.c:68
Variable base_find_variable_name(Pbase b, Variable v, char *(*variable_name)(Variable))
Variable base_find_variable_name(Pbase b, Variable v, char * (*variable_name)()): returns the variabl...
Definition: base.c:170
bool base_contains_variable_p(Pbase b, Variable v)
bool base_contains_variable_p(Pbase b, Variable v): returns true if variable v is one of b's elements...
Definition: base.c:136
Pbase vect_add_variable(Pbase b, Variable v)
package vecteur - routines sur les bases
Definition: base.c:61
Pcontrainte contrainte_free(Pcontrainte c)
Pcontrainte contrainte_free(Pcontrainte c): liberation de l'espace memoire alloue a la contrainte c a...
Definition: alloc.c:184
Pcontrainte contrainte_new(void)
package contrainte - allocations et desallocations
Definition: alloc.c:47
static const char * yysymbol_name(yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED
The user-facing name of the symbol whose (internal) number is YYSYMBOL.
Definition: cyacc.tab.c:1383
static void yy_symbol_print(FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const *const yyvaluep)
-----------------------—.
Definition: cyacc.tab.c:2447
static const yytype_int16 yyrline[]
YYRLINE[YYN] – Source line where rule number YYN was defined.
Definition: cyacc.tab.c:1279
static void yy_symbol_value_print(FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const *const yyvaluep)
-------------------------------—.
Definition: cyacc.tab.c:2429
static void yy_reduce_print(yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule)
--------------------------------------------—.
Definition: cyacc.tab.c:2486
static const char *const yytname[]
YYTNAME[SYMBOL-NUM] – String name of the symbol SYMBOL-NUM.
Definition: cyacc.tab.c:1327
static void yy_stack_print(yy_state_t *yybottom, yy_state_t *yytop)
--------------------------------------------------------------—.
Definition: cyacc.tab.c:2463
#define YYFPRINTF
Enable debugging if requested.
Definition: cyacc.tab.c:2400
yytokentype
Definition: genread.h:52
yysymbol_kind_t
!YY_GENREAD_Y_TAB_H_INCLUDED
Definition: genread_yacc.c:294
short yytype_int16
Definition: genread_yacc.c:378
int yy_state_fast_t
State numbers in computations.
Definition: genread_yacc.c:457
signed char yytype_int8
On compilers that do not define PTRDIFF_MAX etc., make sure <limits.h> and (if available) <stdint....
Definition: genread_yacc.c:370
yytype_int8 yy_state_t
Stored state numbers (used for stacks).
Definition: genread_yacc.c:454
char * variable_default_name(Variable v)
char * variable_default_name(Variable v): returns the name of variable v
Definition: variable.c:81
#define exit(code)
Definition: misc-local.h:54
void sc_creer_base(Psysteme ps)
void sc_creer_base(Psysteme ps): initialisation des parametres dimension et base d'un systeme lineair...
Definition: sc_alloc.c:129
Psysteme sc_new(void)
Psysteme sc_new(): alloue un systeme vide, initialise tous les champs avec des valeurs nulles,...
Definition: sc_alloc.c:55
Psyslist sl_append_system_first(Psyslist in_sl, Psysteme in_ps)
Psyslist sl_append_system_first( in_sl, in_ps ) AL 23/03/95 A new Psyslist with in_ps at the end of i...
Definition: sc_list.c:256
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
char * strdup()
void init_globals()
void init_globals: initialisation des variables globales
Definition: sc_read.c:102
void creer_eg(Psysteme ps, Pcontrainte peq)
void creer_eg(Psysteme ps,Pcontrainte peq): ajout de la contrainte (egalite) peq au systeme ps.
Definition: sc_read.c:159
void creer_ineg(Psysteme ps, Pcontrainte peq, int sens)
void creer_ineg(Psysteme ps, Pcontrainte peq, int sens): ajout d'une nouvelle inegalite peq dans la l...
Definition: sc_read.c:185
#define DROIT
Definition: sl_gram.c:121
Pcontrainte p_eg_fin
dernier operateur rencontre
Definition: sc_read.c:76
#define IDENT
Definition: sl_gram.c:195
Variable va_yacc
Definition: sl_gram.c:113
#define yyparse
------—.
Definition: sl_gram.c:68
#define PLUS
Definition: sl_gram.c:199
#define INF
Definition: sl_gram.c:196
#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
Definition: sl_gram.c:450
#define YYMAXDEPTH
YYMAXDEPTH – maximum size the stacks can grow to (effective only if the built-in stack extension meth...
Definition: sl_gram.c:970
#define YYSTACK_FREE
Definition: sl_gram.c:512
static const yytype_int8 yytranslate[]
YYTRANSLATE[TOKEN-NUM] – Symbol number corresponding to TOKEN-NUM as returned by yylex.
Definition: sl_gram.c:626
yysymbol_kind_t
!YY_SLX_Y_TAB_H_INCLUDED
Definition: sl_gram.c:232
@ YYSYMBOL_ident
terme
Definition: sl_gram.c:268
@ YYSYMBOL_YYUNDEF
error
Definition: sl_gram.c:236
@ YYSYMBOL_INFEGAL
INF
Definition: sl_gram.c:243
@ YYSYMBOL_SUPEGAL
SUP
Definition: sl_gram.c:247
@ YYSYMBOL_feq
debeq
Definition: sl_gram.c:264
@ YYSYMBOL_VIRG
VAR
Definition: sl_gram.c:249
@ YYSYMBOL_newid
l_var
Definition: sl_gram.c:256
@ YYSYMBOL_l_eq
endsys
Definition: sl_gram.c:261
@ YYSYMBOL_system
l_sys
Definition: sl_gram.c:258
@ YYSYMBOL_endsl
inisl
Definition: sl_gram.c:253
@ YYSYMBOL_debeq
eq
Definition: sl_gram.c:263
@ YYSYMBOL_defvar
endsl
Definition: sl_gram.c:254
@ YYSYMBOL_INF
IDENT
Definition: sl_gram.c:242
@ YYSYMBOL_MOINS
INFEGAL
Definition: sl_gram.c:244
@ YYSYMBOL_YYerror
"end of file"
Definition: sl_gram.c:235
@ YYSYMBOL_endsys
inisys
Definition: sl_gram.c:260
@ YYSYMBOL_l_sys
newid
Definition: sl_gram.c:257
@ YYSYMBOL_ACCOUVR
ACCFERM
Definition: sl_gram.c:238
@ YYSYMBOL_CONSTANTE
ACCOUVR
Definition: sl_gram.c:239
@ YYSYMBOL_s_list
$accept
Definition: sl_gram.c:251
@ YYSYMBOL_l_var
defvar
Definition: sl_gram.c:255
@ YYSYMBOL_op
const
Definition: sl_gram.c:270
@ YYSYMBOL_SUP
PLUS
Definition: sl_gram.c:246
@ YYSYMBOL_VAR
SUPEGAL
Definition: sl_gram.c:248
@ YYSYMBOL_membre
feq
Definition: sl_gram.c:265
@ YYSYMBOL_PLUS
MOINS
Definition: sl_gram.c:245
@ YYSYMBOL_virg_opt
fin_mult_membre
Definition: sl_gram.c:274
@ YYSYMBOL_inisl
s_list
Definition: sl_gram.c:252
@ YYSYMBOL_YYACCEPT
VIRG
Definition: sl_gram.c:250
@ YYSYMBOL_inisys
system
Definition: sl_gram.c:259
@ YYSYMBOL_32_1
membre
Definition: sl_gram.c:266
@ YYSYMBOL_YYEOF
Definition: sl_gram.c:234
@ YYSYMBOL_eq
l_eq
Definition: sl_gram.c:262
@ YYSYMBOL_const
ident
Definition: sl_gram.c:269
@ YYSYMBOL_YYEMPTY
Definition: sl_gram.c:233
@ YYSYMBOL_EGAL
CONSTANTE
Definition: sl_gram.c:240
@ YYSYMBOL_IDENT
EGAL
Definition: sl_gram.c:241
@ YYSYMBOL_multi_membre
addop
Definition: sl_gram.c:272
@ YYSYMBOL_addop
op
Definition: sl_gram.c:271
@ YYSYMBOL_terme
$@1
Definition: sl_gram.c:267
@ YYSYMBOL_ACCFERM
"invalid token"
Definition: sl_gram.c:237
@ YYSYMBOL_fin_mult_membre
multi_membre
Definition: sl_gram.c:273
#define ACCOUVR
Definition: sl_gram.c:192
#define YY_ASSERT(E)
Definition: sl_gram.c:470
#define YY_(Msgid)
Definition: sl_gram.c:404
#define YYNOMEM
Definition: sl_gram.c:803
#define YY_IGNORE_MAYBE_UNINITIALIZED_END
Definition: sl_gram.c:451
static const yytype_int8 yydefact[]
YYDEFACT[STATE-NUM] – Default reduction number in state STATE-NUM.
Definition: sl_gram.c:719
#define YYNSTATES
YYNSTATES – Number of states.
Definition: sl_gram.c:611
#define INFEGAL
Definition: sl_gram.c:197
#define YY_IGNORE_USELESS_CAST_END
Definition: sl_gram.c:466
short yytype_int16
Definition: sl_gram.c:315
#define yychar
Definition: sl_gram.c:74
#define SUPEGAL
Definition: sl_gram.c:201
#define YYEOF
Definition: sl_gram.c:188
#define YYABORT
Definition: sl_gram.c:801
#define ACCFERM
Definition: sl_gram.c:191
#define CONSTANTE
Definition: sl_gram.c:193
#define YYSTACK_BYTES(N)
The size of an array large to enough to hold all stacks, each with N elements.
Definition: sl_gram.c:555
Value b2
Definition: sl_gram.c:103
static const yytype_int8 yycheck[]
Definition: sl_gram.c:755
#define YY_REDUCE_PRINT(Rule)
Definition: sl_gram.c:953
#define YY_CAST(Type, Val)
#define NULL 0
Definition: sl_gram.c:133
static void yydestruct(const char *yymsg, yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
-------------------------------------------—.
Definition: sl_gram.c:983
#define OPSUP
Definition: sl_gram.c:120
Pvecteur p_pred
pointeur sur le predecesseur du couple courant
Definition: sc_read.c:82
#define yylex
Definition: sl_gram.c:69
#define YYerror
Definition: sl_gram.c:189
#define YY_NULLPTR
Definition: sl_gram.c:145
#define YYUNDEF
Definition: sl_gram.c:190
static const yytype_int8 yypact[]
YYPACT[STATE-NUM] – Index in YYTABLE of the portion describing STATE-NUM.
Definition: sl_gram.c:707
void * malloc(YYSIZE_T)
#define YYFINAL
!YYCOPY_NEEDED
Definition: sl_gram.c:600
bool syntax_error
sl_gram.c
Definition: sl_gram.c:95
#define YY_ACCESSING_SYMBOL(State)
Accessing symbol of state STATE.
Definition: sl_gram.c:669
#define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
Definition: sl_gram.c:951
Value b1
booleen indiquant quel membre est en cours d'analyse
Definition: sc_gram.c:105
short int operat
pointeur sur le membre courant
Definition: sc_gram.c:113
#define yylval
Definition: sl_gram.c:73
#define YYNTOKENS
YYNTOKENS – Number of terminals.
Definition: sl_gram.c:605
unsigned char yytype_uint8
Work around bug in HP-UX 11.23, which defines these macros incorrectly for preprocessor constants.
Definition: sl_gram.c:336
#define YY_STACK_PRINT(Bottom, Top)
Definition: sl_gram.c:952
#define YYSIZE_T
Definition: sl_gram.c:377
#define yydebug
Definition: sl_gram.c:71
Value valcst
Definition: sl_gram.c:96
#define YY_IGNORE_USELESS_CAST_BEGIN
Definition: sl_gram.c:465
#define VIRG
Definition: sl_gram.c:203
#define EGAL
Definition: sl_gram.c:194
static const yytype_int8 yyr2[]
YYR2[RULE-NUM] – Number of symbols on the right-hand side of rule RULE-NUM.
Definition: sl_gram.c:785
#define OPINFEGAL
Definition: sl_gram.c:117
#define MOINS
Definition: sl_gram.c:198
short int cote
indique le sens de l'inegalite sens = -1 ==> l'operateur est soit > ,soit >=, sens = 1 ==> l'operateu...
Definition: sc_gram.c:103
static const yytype_int8 yytable[]
YYTABLE[YYPACT[STATE-NUM]] – What to do in state STATE-NUM.
Definition: sl_gram.c:747
int sens
facteur multiplicatif suivant qu'on analyse un terme
Definition: sc_gram.c:100
Psyslist sl_yacc
Definition: sl_gram.c:113
#define YYPTRDIFF_T
Definition: sl_gram.c:363
#define OPSUPEGAL
Definition: sl_gram.c:119
#define yynerrs
Definition: sl_gram.c:72
#define OPEGAL
Definition: sl_gram.c:118
Pcontrainte eq
element du vecteur colonne du systeme donne par l'analyse d'une contrainte
Definition: sc_gram.c:108
#define YYACCEPT
Definition: sl_gram.c:800
#define yytable_value_is_error(Yyn)
Definition: sl_gram.c:702
int slx_error()
#define SUP
Definition: sl_gram.c:200
#define YYTRANSLATE(YYX)
YYTRANSLATE(TOKEN-NUM) – Symbol number corresponding to TOKEN-NUM as returned by yylex,...
Definition: sl_gram.c:619
static const yytype_int8 yystos[]
YYSTOS[STATE-NUM] – The symbol kind of the accessing symbol of state STATE-NUM.
Definition: sl_gram.c:765
#define YY_ATTRIBUTE_UNUSED
Definition: sl_gram.c:421
static const yytype_int8 yypgoto[]
YYPGOTO[NTERM-NUM].
Definition: sl_gram.c:729
@ YYENOMEM
Definition: sl_gram.c:795
#define VAR
Definition: sl_gram.c:202
#define OPINF
ode des operateurs de comparaison
Definition: sl_gram.c:116
int slx_lex()
First part of user prologue.
static const yytype_int8 yyr1[]
YYR1[RULE-NUM] – Symbol kind of the left-hand side of rule RULE-NUM.
Definition: sl_gram.c:775
enum yytokentype yytoken_kind_t
Definition: sl_gram.c:184
Pbase ba_yacc
Definition: sl_gram.c:113
Psysteme ps_yacc
package sc
Definition: sc_gram.c:95
YYSTYPE slx_lval
char * slx_text
#define YYPOPSTACK(N)
int yy_state_fast_t
State numbers in computations.
Definition: sl_gram.c:394
int slx_parse(void)
unsigned short yytype_uint16
Definition: sl_gram.c:347
static const yytype_int8 yydefgoto[]
YYDEFGOTO[NTERM-NUM].
Definition: sl_gram.c:737
Pvecteur cp
pointeur sur l'egalite ou l'inegalite courante
Definition: sc_read.c:87
#define YYEMPTY
Token kinds.
Definition: sl_gram.c:187
Value fac
Definition: sc_gram.c:97
Pcontrainte p_ineg_fin
pointeur sur la derniere inegalite
Definition: sc_read.c:79
#define YYLAST
YYLAST – Last index in YYTABLE.
Definition: sl_gram.c:602
#define YYSTACK_RELOCATE(Stack_alloc, Stack)
Relocate STACK from its old location to the new one.
Definition: sl_gram.c:566
#define yypact_value_is_default(Yyn)
Definition: sl_gram.c:697
#define YYINITDEPTH
!YYDEBUG
Definition: sl_gram.c:959
signed char yytype_int8
On compilers that do not define PTRDIFF_MAX etc., make sure <limits.h> and (if available) <stdint....
Definition: sl_gram.c:307
void free(void *)
#define GAUCHE
Definition: sl_gram.c:122
#define YYERROR
Definition: sl_gram.c:802
#define YYSIZEOF(X)
Definition: sl_gram.c:387
Pvecteur p_membre_courant
Definition: sc_read.c:84
#define YYSTACK_ALLOC
The parser invokes alloca or malloc; define the necessary symbols.
Definition: sl_gram.c:511
yytype_int8 yy_state_t
Stored state numbers (used for stacks).
Definition: sl_gram.c:391
#define YYDPRINTF(Args)
Enable debugging if requested.
Definition: sl_gram.c:950
#define YY_USE(E)
Suppress unused-variable warnings by "using" E.
Definition: sl_gram.c:427
#define yyerror
Definition: sl_gram.c:70
#define uint_least8_t
Definition: stdint.in.h:229
#define int_least16_t
Definition: stdint.in.h:230
#define int_least8_t
7.18.1.2.
Definition: stdint.in.h:228
#define uint_least16_t
Definition: stdint.in.h:231
Pvecteur vecteur
Warning! Do not modify this file that is automatically generated!
Definition: union-local.h:3
Pbase base
Definition: sc-local.h:75
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
Definition: vecteur-local.h:89
Value type.
Definition: genread.h:115
Value Value
Definition: sc_gram.c:212
Variable Variable
Definition: sc_gram.c:213
INFRINGES ON USER NAME SPACE.
Definition: genread_yacc.c:608
YYSTYPE yyvs_alloc
Definition: genread_yacc.c:610
yy_state_t yyss_alloc
Definition: genread_yacc.c:609
#define TCST
VARIABLE REPRESENTANT LE TERME CONSTANT.
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....
Definition: vecteur-local.h:60
#define VARIABLE_UNDEFINED_P(v)
Definition: vecteur-local.h:65
void vect_rm(Pvecteur v)
void vect_rm(Pvecteur v): desallocation des couples de v;
Definition: alloc.c:78
void vect_add_elem(Pvecteur *pvect, Variable var, Value val)
void vect_add_elem(Pvecteur * pvect, Variable var, Value val): addition d'un vecteur colineaire au ve...
Definition: unaires.c:72