source: git/Singular/grammar.cc @ d721b0

spielwiese
Last change on this file since d721b0 was d721b0, checked in by Hans Schönemann <hannes@…>, 18 years ago
*hannes: listvar and packages git-svn-id: file:///usr/local/Singular/svn/trunk@9320 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 107.5 KB
Line 
1
2/*  A Bison parser, made from grammar.y
3    by GNU Bison version 1.28  */
4
5#define YYBISON 1  /* Identify Bison output.  */
6
7#define DOTDOT  257
8#define EQUAL_EQUAL     258
9#define GE      259
10#define LE      260
11#define MINUSMINUS      261
12#define NOT     262
13#define NOTEQUAL        263
14#define PLUSPLUS        264
15#define COLONCOLON      265
16#define GRING_CMD       266
17#define INTMAT_CMD      267
18#define PROC_CMD        268
19#define RING_CMD        269
20#define BEGIN_RING      270
21#define IDEAL_CMD       271
22#define MAP_CMD 272
23#define MATRIX_CMD      273
24#define MODUL_CMD       274
25#define NUMBER_CMD      275
26#define POLY_CMD        276
27#define RESOLUTION_CMD  277
28#define VECTOR_CMD      278
29#define BETTI_CMD       279
30#define COEFFS_CMD      280
31#define COEF_CMD        281
32#define CONTRACT_CMD    282
33#define DEGREE_CMD      283
34#define DEG_CMD 284
35#define DIFF_CMD        285
36#define DIM_CMD 286
37#define DIVISION_CMD    287
38#define ELIMINATION_CMD 288
39#define E_CMD   289
40#define FETCH_CMD       290
41#define FREEMODULE_CMD  291
42#define KEEPRING_CMD    292
43#define HILBERT_CMD     293
44#define HOMOG_CMD       294
45#define IMAP_CMD        295
46#define INDEPSET_CMD    296
47#define INTERRED_CMD    297
48#define INTERSECT_CMD   298
49#define JACOB_CMD       299
50#define JET_CMD 300
51#define KBASE_CMD       301
52#define KOSZUL_CMD      302
53#define LEADCOEF_CMD    303
54#define LEADEXP_CMD     304
55#define LEAD_CMD        305
56#define LEADMONOM_CMD   306
57#define LIFTSTD_CMD     307
58#define LIFT_CMD        308
59#define MAXID_CMD       309
60#define MINBASE_CMD     310
61#define MINOR_CMD       311
62#define MINRES_CMD      312
63#define MODULO_CMD      313
64#define MRES_CMD        314
65#define MULTIPLICITY_CMD        315
66#define ORD_CMD 316
67#define PAR_CMD 317
68#define PARDEG_CMD      318
69#define PREIMAGE_CMD    319
70#define QUOTIENT_CMD    320
71#define QHWEIGHT_CMD    321
72#define REDUCE_CMD      322
73#define REGULARITY_CMD  323
74#define RES_CMD 324
75#define SIMPLIFY_CMD    325
76#define SORTVEC_CMD     326
77#define SRES_CMD        327
78#define STD_CMD 328
79#define SUBST_CMD       329
80#define SYZYGY_CMD      330
81#define VAR_CMD 331
82#define VDIM_CMD        332
83#define WEDGE_CMD       333
84#define WEIGHT_CMD      334
85#define VALTVARS        335
86#define VMAXDEG 336
87#define VMAXMULT        337
88#define VNOETHER        338
89#define VMINPOLY        339
90#define END_RING        340
91#define CMD_1   341
92#define CMD_2   342
93#define CMD_3   343
94#define CMD_12  344
95#define CMD_13  345
96#define CMD_23  346
97#define CMD_123 347
98#define CMD_M   348
99#define ROOT_DECL       349
100#define ROOT_DECL_LIST  350
101#define RING_DECL       351
102#define EXAMPLE_CMD     352
103#define EXPORT_CMD      353
104#define HELP_CMD        354
105#define KILL_CMD        355
106#define LIB_CMD 356
107#define LISTVAR_CMD     357
108#define SETRING_CMD     358
109#define TYPE_CMD        359
110#define STRINGTOK       360
111#define BLOCKTOK        361
112#define INT_CONST       362
113#define UNKNOWN_IDENT   363
114#define RINGVAR 364
115#define PROC_DEF        365
116#define BREAK_CMD       366
117#define CONTINUE_CMD    367
118#define ELSE_CMD        368
119#define EVAL    369
120#define QUOTE   370
121#define FOR_CMD 371
122#define IF_CMD  372
123#define SYS_BREAK       373
124#define WHILE_CMD       374
125#define RETURN  375
126#define PARAMETER       376
127#define SYSVAR  377
128#define UMINUS  378
129
130#line 8 "grammar.y"
131
132
133#include <stdio.h>
134#include <stddef.h>
135#include <stdlib.h>
136#include <stdarg.h>
137#include <string.h>
138
139#include "mod2.h"
140#include <mylimits.h>
141#include "omalloc.h"
142#include "tok.h"
143#include "stype.h"
144#include "ipid.h"
145#include "intvec.h"
146#include "febase.h"
147#include "matpol.h"
148#include "ring.h"
149#include "kstd1.h"
150#include "subexpr.h"
151#include "ipshell.h"
152#include "ipconv.h"
153#include "sdb.h"
154#include "ideals.h"
155#include "numbers.h"
156#include "polys.h"
157#include "weight.h"
158#include "stairc.h"
159#include "timer.h"
160#include "cntrlc.h"
161#include "maps.h"
162#include "syz.h"
163#include "lists.h"
164#include "libparse.h"
165
166#if 0
167void debug_list(leftv v)
168{
169  idhdl r=basePackHdl;
170  idhdl h;
171  BOOLEAN found=FALSE;
172  const char *nn=v->name;
173  h=IDROOT->get(nn,myynest);
174  if (h!=NULL)
175  {
176     Print("Curr::%s, (%s)\n",nn,Tok2Cmdname((int)IDTYP(h)));
177     found=TRUE;
178  }
179  else         Print("`%s` not found in IDROOT\n",nn);
180  while (r!=NULL)
181  {
182    if ((IDTYP(r)==PACKAGE_CMD)
183    || (IDTYP(r)==RING_CMD)
184    || (IDTYP(r)==QRING_CMD))
185    {
186      h=IDPACKAGE(r)->idroot->get(nn,myynest);
187      if (h!=NULL)
188      {
189        Print("%s::%s, (%s)\n",r->id,nn,Tok2Cmdname((int)IDTYP(h)));
190        found=TRUE;
191      }
192      else         Print("%s::%s not found\n",r->id,nn);
193    }
194    if (r==basePackHdl) r=IDPACKAGE(r)->idroot;
195    r=r->next;
196   if (r==basePackHdl) break;
197  }
198  if (!found)
199  {
200    listall(TRUE);
201  }
202}
203#endif
204
205/* From the bison docu:
206
207     By defining the macro `YYMAXDEPTH', you can control how deep the
208parser stack can become before a stack overflow occurs.  Define the
209macro with a value that is an integer.  This value is the maximum number
210of tokens that can be shifted (and not reduced) before overflow.  It
211must be a constant expression whose value is known at compile time.
212
213   The stack space allowed is not necessarily allocated.  If you
214specify a large value for `YYMAXDEPTH', the parser actually allocates a
215small stack at first, and then makes it bigger by stages as needed.
216This increasing allocation happens automatically and silently.
217Therefore, you do not need to make `YYMAXDEPTH' painfully small merely
218to save space for ordinary inputs that do not need much stack.
219
220   The default value of `YYMAXDEPTH', if you do not define it, is 10000.
221*/
222#define YYMAXDEPTH INT_MAX
223
224extern int   yylineno;
225extern FILE* yyin;
226
227char       my_yylinebuf[80];
228char *     currid;
229BOOLEAN    yyInRingConstruction=FALSE;
230BOOLEAN    expected_parms;
231int        cmdtok;
232int        inerror = 0;
233
234#define TESTSETINT(a,i)                                \
235   if ((a).Typ() != INT_CMD)                           \
236   {                                                   \
237     WerrorS("no int expression");                     \
238     YYERROR;                                          \
239   }                                                   \
240   (i) = (int)((long)(a).Data());
241
242#define MYYERROR(a) { WerrorS(a); YYERROR; }
243
244void yyerror(char * fmt)
245{
246
247  BOOLEAN old_errorreported=errorreported;
248  errorreported = TRUE;
249  if (currid!=NULL)
250  {
251    killid(currid,&IDROOT);
252    currid = NULL;
253  }
254  if(inerror==0)
255  {
256    #ifdef HAVE_TCL
257    if (tclmode)
258    { /* omit output of line number if tclmode and stdin */
259      const char *n=VoiceName();
260      if (strcmp(n,"STDIN")==0)
261        Werror( "error occurred in %s: `%s`"
262               ,n, my_yylinebuf);
263      else
264        Werror( "error occurred in %s line %d: `%s`"
265               ,n, yylineno, my_yylinebuf);
266    }
267    else
268    #endif
269    {
270      if ((strlen(fmt)>1)
271      && (strncmp(fmt,"parse",5)!=0)
272      && (strncmp(fmt,"syntax",6)!=0))
273        WerrorS(fmt);
274      Werror( "error occurred in %s line %d: `%s`"
275             ,VoiceName(), yylineno, my_yylinebuf);
276    }
277    if (cmdtok!=0)
278    {
279      char *s=Tok2Cmdname(cmdtok);
280      if (expected_parms)
281      {
282        Werror("expected %s-expression. type \'help %s;\'",s,s);
283      }
284      else
285      {
286        Werror("wrong type declaration. type \'help %s;\'",s);
287      }
288    }
289    if (!old_errorreported && (lastreserved!=NULL))
290    {
291      Werror("last reserved name was `%s`",lastreserved);
292    }
293    inerror=1;
294  }
295  if ((currentVoice!=NULL)
296  && (currentVoice->prev!=NULL)
297  && (myynest>0)
298#ifdef HAVE_SDB
299  && ((sdb_flags &1)==0)
300#endif
301  )
302  {
303    Werror("leaving %s",VoiceName());
304  }
305}
306
307#ifndef YYDEBUG
308#define YYDEBUG 1
309#endif
310
311#include <stdio.h>
312
313#ifndef __cplusplus
314#ifndef __STDC__
315#define const
316#endif
317#endif
318
319
320
321#define YYFINAL         367
322#define YYFLAG          -32768
323#define YYNTBASE        140
324
325#define YYTRANSLATE(x) ((unsigned)(x) <= 378 ? yytranslate[x] : 183)
326
327static const short yytranslate[] = {     0,
328     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
329     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
330     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
331     2,     2,     2,     2,     2,     2,     2,   135,     2,   137,
332   138,     2,   127,   133,   128,     2,   129,     2,     2,     2,
333     2,     2,     2,     2,     2,     2,     2,     2,   134,   125,
334   124,   126,     2,     2,     2,     2,     2,     2,     2,     2,
335     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
336     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
337   130,     2,   131,   132,     2,   139,     2,     2,     2,     2,
338     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
339     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
340     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
341     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
342     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
343     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
344     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
345     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
346     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
347     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
348     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
349     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
350     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
351     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
352     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
353     2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
354     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
355    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
356    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
357    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
358    47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
359    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
360    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
361    77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
362    87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
363    97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
364   107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
365   117,   118,   119,   120,   121,   122,   123,   136
366};
367
368#if YYDEBUG != 0
369static const short yyprhs[] = {     0,
370     0,     1,     4,     6,     9,    12,    14,    16,    18,    21,
371    23,    25,    27,    29,    31,    33,    35,    37,    40,    42,
372    44,    46,    48,    50,    52,    54,    56,    58,    61,    63,
373    65,    69,    73,    78,    82,    84,    86,    88,    92,    94,
374    96,    98,   102,   109,   114,   119,   124,   128,   133,   138,
375   142,   147,   154,   163,   170,   179,   184,   189,   196,   201,
376   208,   217,   226,   230,   235,   244,   249,   258,   263,   272,
377   277,   281,   287,   288,   294,   297,   299,   302,   305,   309,
378   313,   317,   321,   325,   329,   333,   337,   341,   344,   347,
379   350,   353,   355,   359,   361,   363,   366,   369,   372,   375,
380   384,   387,   396,   399,   403,   406,   408,   410,   416,   418,
381   420,   425,   427,   431,   433,   437,   439,   440,   445,   449,
382   452,   456,   459,   462,   466,   471,   476,   481,   486,   491,
383   496,   501,   506,   511,   518,   525,   532,   539,   546,   553,
384   560,   567,   571,   573,   582,   585,   588,   590,   592,   595,
385   598,   600,   606,   609,   615,   617,   619,   623,   629,   633,
386   637,   642,   645,   648,   653
387};
388
389static const short yyrhs[] = {    -1,
390   140,   141,     0,   142,     0,   144,   134,     0,   156,   134,
391     0,   182,     0,   119,     0,   134,     0,     1,   134,     0,
392   177,     0,   178,     0,   143,     0,   179,     0,   180,     0,
393   164,     0,   166,     0,   167,     0,    98,   107,     0,   145,
394     0,   168,     0,   169,     0,   170,     0,   181,     0,   172,
395     0,   173,     0,   175,     0,   176,     0,   153,   147,     0,
396   110,     0,   154,     0,   146,    11,   146,     0,   146,   137,
397   138,     0,   146,   137,   147,   138,     0,   130,   147,   131,
398     0,   108,     0,   123,     0,   157,     0,   147,   133,   148,
399     0,   148,     0,   152,     0,   146,     0,   137,   147,   138,
400     0,   148,   130,   148,   133,   148,   131,     0,   148,   130,
401   148,   131,     0,    95,   137,   148,   138,     0,    96,   137,
402   147,   138,     0,    96,   137,   138,     0,    97,   137,   148,
403   138,     0,   155,   137,   147,   138,     0,   155,   137,   138,
404     0,    87,   137,   148,   138,     0,    88,   137,   148,   133,
405   148,   138,     0,    89,   137,   148,   133,   148,   133,   148,
406   138,     0,    92,   137,   148,   133,   148,   138,     0,    92,
407   137,   148,   133,   148,   133,   148,   138,     0,    90,   137,
408   148,   138,     0,    91,   137,   148,   138,     0,    90,   137,
409   148,   133,   148,   138,     0,    93,   137,   148,   138,     0,
410    93,   137,   148,   133,   148,   138,     0,    91,   137,   148,
411   133,   148,   133,   148,   138,     0,    93,   137,   148,   133,
412   148,   133,   148,   138,     0,    94,   137,   138,     0,    94,
413   137,   147,   138,     0,    19,   137,   148,   133,   148,   133,
414   148,   138,     0,    19,   137,   148,   138,     0,    13,   137,
415   148,   133,   148,   133,   148,   138,     0,    13,   137,   148,
416   138,     0,    15,   137,   158,   133,   158,   133,   162,   138,
417     0,    15,   137,   148,   138,     0,   150,   148,   151,     0,
418   150,   148,   124,   148,   151,     0,     0,   115,   137,   149,
419   148,   138,     0,   116,   137,     0,   138,     0,   148,    10,
420     0,   148,     7,     0,   148,   127,   148,     0,   148,   128,
421   148,     0,   148,   129,   148,     0,   148,   132,   148,     0,
422   148,   125,   148,     0,   148,   135,   148,     0,   148,     9,
423   148,     0,   148,     4,   148,     0,   148,     3,   148,     0,
424     8,   148,     0,   128,   148,     0,   156,   163,     0,   147,
425   124,     0,   109,     0,   139,   148,   139,     0,    17,     0,
426    20,     0,    95,   146,     0,    96,   146,     0,    97,   146,
427     0,   155,   146,     0,    19,   146,   130,   148,   131,   130,
428   148,   131,     0,    19,   146,     0,    13,   146,   130,   148,
429   131,   130,   148,   131,     0,    13,   146,     0,   156,   133,
430   146,     0,    14,   146,     0,   106,     0,   148,     0,   137,
431   148,   133,   147,   138,     0,   109,     0,   159,     0,   159,
432   137,   147,   138,     0,   160,     0,   160,   133,   161,     0,
433   160,     0,   137,   161,   138,     0,   124,     0,     0,   125,
434   157,   165,   134,     0,   100,   106,   134,     0,   100,   134,
435     0,    98,   106,   134,     0,    99,   147,     0,   101,   146,
436     0,   169,   133,   146,     0,   103,   137,    95,   138,     0,
437   103,   137,    96,   138,     0,   103,   137,    97,   138,     0,
438   103,   137,   155,   138,     0,   103,   137,    15,   138,     0,
439   103,   137,    19,   138,     0,   103,   137,    13,   138,     0,
440   103,   137,    14,   138,     0,   103,   137,   146,   138,     0,
441   103,   137,   146,   133,    95,   138,     0,   103,   137,   146,
442   133,    96,   138,     0,   103,   137,   146,   133,    97,   138,
443     0,   103,   137,   146,   133,   155,   138,     0,   103,   137,
444   146,   133,    15,   138,     0,   103,   137,   146,   133,    19,
445   138,     0,   103,   137,   146,   133,    13,   138,     0,   103,
446   137,   146,   133,    14,   138,     0,   103,   137,   138,     0,
447    15,     0,   171,   146,   163,   158,   133,   158,   133,   162,
448     0,   171,   146,     0,   123,   157,     0,   104,     0,    38,
449     0,   174,   148,     0,   105,   148,     0,   147,     0,   118,
450   137,   148,   138,   107,     0,   114,   107,     0,   118,   137,
451   148,   138,   112,     0,   112,     0,   113,     0,   120,   106,
452   107,     0,   117,   106,   106,   106,   107,     0,    14,   154,
453   107,     0,   111,   106,   107,     0,   111,   106,   106,   107,
454     0,   122,   156,     0,   122,   148,     0,   121,   137,   147,
455   138,     0,   121,   137,   138,     0
456};
457
458#endif
459
460#if YYDEBUG != 0
461static const short yyrline[] = { 0,
462   361,   363,   397,   399,   401,   403,   407,   412,   414,   462,
463   463,   464,   465,   466,   467,   468,   469,   473,   476,   477,
464   478,   479,   480,   481,   482,   483,   484,   487,   493,   499,
465   503,   507,   511,   531,   559,   587,   593,   601,   613,   619,
466   624,   625,   626,   630,   634,   638,   642,   646,   650,   654,
467   658,   662,   666,   670,   674,   678,   682,   686,   690,   694,
468   698,   702,   706,   710,   714,   718,   722,   726,   730,   734,
469   738,   742,   759,   765,   777,   785,   793,   798,   802,   806,
470   810,   814,   818,   822,   826,   830,   834,   838,   845,   851,
471   853,   865,   867,   878,   879,   883,   893,   902,   906,   910,
472   926,   930,   950,   968,   993,  1004,  1008,  1010,  1023,  1031,
473  1041,  1085,  1087,  1095,  1097,  1103,  1114,  1119,  1122,  1128,
474  1134,  1142,  1156,  1177,  1199,  1204,  1208,  1213,  1217,  1221,
475  1225,  1229,  1233,  1238,  1247,  1256,  1265,  1274,  1283,  1292,
476  1301,  1319,  1325,  1329,  1373,  1383,  1397,  1397,  1399,  1475,
477  1482,  1511,  1524,  1541,  1550,  1555,  1562,  1574,  1593,  1605,
478  1625,  1648,  1655,  1666,  1674
479};
480#endif
481
482
483#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
484
485static const char * const yytname[] = {   "$","error","$undefined.","DOTDOT",
486"EQUAL_EQUAL","GE","LE","MINUSMINUS","NOT","NOTEQUAL","PLUSPLUS","COLONCOLON",
487"GRING_CMD","INTMAT_CMD","PROC_CMD","RING_CMD","BEGIN_RING","IDEAL_CMD","MAP_CMD",
488"MATRIX_CMD","MODUL_CMD","NUMBER_CMD","POLY_CMD","RESOLUTION_CMD","VECTOR_CMD",
489"BETTI_CMD","COEFFS_CMD","COEF_CMD","CONTRACT_CMD","DEGREE_CMD","DEG_CMD","DIFF_CMD",
490"DIM_CMD","DIVISION_CMD","ELIMINATION_CMD","E_CMD","FETCH_CMD","FREEMODULE_CMD",
491"KEEPRING_CMD","HILBERT_CMD","HOMOG_CMD","IMAP_CMD","INDEPSET_CMD","INTERRED_CMD",
492"INTERSECT_CMD","JACOB_CMD","JET_CMD","KBASE_CMD","KOSZUL_CMD","LEADCOEF_CMD",
493"LEADEXP_CMD","LEAD_CMD","LEADMONOM_CMD","LIFTSTD_CMD","LIFT_CMD","MAXID_CMD",
494"MINBASE_CMD","MINOR_CMD","MINRES_CMD","MODULO_CMD","MRES_CMD","MULTIPLICITY_CMD",
495"ORD_CMD","PAR_CMD","PARDEG_CMD","PREIMAGE_CMD","QUOTIENT_CMD","QHWEIGHT_CMD",
496"REDUCE_CMD","REGULARITY_CMD","RES_CMD","SIMPLIFY_CMD","SORTVEC_CMD","SRES_CMD",
497"STD_CMD","SUBST_CMD","SYZYGY_CMD","VAR_CMD","VDIM_CMD","WEDGE_CMD","WEIGHT_CMD",
498"VALTVARS","VMAXDEG","VMAXMULT","VNOETHER","VMINPOLY","END_RING","CMD_1","CMD_2",
499"CMD_3","CMD_12","CMD_13","CMD_23","CMD_123","CMD_M","ROOT_DECL","ROOT_DECL_LIST",
500"RING_DECL","EXAMPLE_CMD","EXPORT_CMD","HELP_CMD","KILL_CMD","LIB_CMD","LISTVAR_CMD",
501"SETRING_CMD","TYPE_CMD","STRINGTOK","BLOCKTOK","INT_CONST","UNKNOWN_IDENT",
502"RINGVAR","PROC_DEF","BREAK_CMD","CONTINUE_CMD","ELSE_CMD","EVAL","QUOTE","FOR_CMD",
503"IF_CMD","SYS_BREAK","WHILE_CMD","RETURN","PARAMETER","SYSVAR","'='","'<'","'>'",
504"'+'","'-'","'/'","'['","']'","'^'","','","';'","'&'","UMINUS","'('","')'","'`'",
505"lines","pprompt","flowctrl","example_dummy","command","assign","elemexpr","exprlist",
506"expr","@1","quote_start","quote_end","expr_arithmetic","left_value","extendedid",
507"currring_lists","declare_ip_variable","stringexpr","rlist","ordername","orderelem",
508"OrderingList","ordering","cmdeq","filecmd","@2","helpcmd","examplecmd","exportcmd",
509"killcmd","listcmd","ringcmd1","ringcmd","scriptcmd","setrings","setringcmd",
510"typecmd","ifcmd","whilecmd","forcmd","proccmd","parametercmd","returncmd", NULL
511};
512#endif
513
514static const short yyr1[] = {     0,
515   140,   140,   141,   141,   141,   141,   141,   141,   141,   142,
516   142,   142,   142,   142,   142,   142,   142,   143,   144,   144,
517   144,   144,   144,   144,   144,   144,   144,   145,   146,   146,
518   146,   146,   146,   146,   146,   146,   146,   147,   147,   148,
519   148,   148,   148,   148,   148,   148,   148,   148,   148,   148,
520   148,   148,   148,   148,   148,   148,   148,   148,   148,   148,
521   148,   148,   148,   148,   148,   148,   148,   148,   148,   148,
522   148,   148,   149,   148,   150,   151,   152,   152,   152,   152,
523   152,   152,   152,   152,   152,   152,   152,   152,   152,   153,
524   153,   154,   154,   155,   155,   156,   156,   156,   156,   156,
525   156,   156,   156,   156,   156,   157,   158,   158,   159,   160,
526   160,   161,   161,   162,   162,   163,   165,   164,   166,   166,
527   167,   168,   169,   169,   170,   170,   170,   170,   170,   170,
528   170,   170,   170,   170,   170,   170,   170,   170,   170,   170,
529   170,   170,   171,   172,   172,   173,   174,   174,   175,   176,
530   176,   177,   177,   177,   177,   177,   178,   179,   180,   180,
531   180,   181,   181,   182,   182
532};
533
534static const short yyr2[] = {     0,
535     0,     2,     1,     2,     2,     1,     1,     1,     2,     1,
536     1,     1,     1,     1,     1,     1,     1,     2,     1,     1,
537     1,     1,     1,     1,     1,     1,     1,     2,     1,     1,
538     3,     3,     4,     3,     1,     1,     1,     3,     1,     1,
539     1,     3,     6,     4,     4,     4,     3,     4,     4,     3,
540     4,     6,     8,     6,     8,     4,     4,     6,     4,     6,
541     8,     8,     3,     4,     8,     4,     8,     4,     8,     4,
542     3,     5,     0,     5,     2,     1,     2,     2,     3,     3,
543     3,     3,     3,     3,     3,     3,     3,     2,     2,     2,
544     2,     1,     3,     1,     1,     2,     2,     2,     2,     8,
545     2,     8,     2,     3,     2,     1,     1,     5,     1,     1,
546     4,     1,     3,     1,     3,     1,     0,     4,     3,     2,
547     3,     2,     2,     3,     4,     4,     4,     4,     4,     4,
548     4,     4,     4,     6,     6,     6,     6,     6,     6,     6,
549     6,     3,     1,     8,     2,     2,     1,     1,     2,     2,
550     1,     5,     2,     5,     1,     1,     3,     5,     3,     3,
551     4,     2,     2,     4,     3
552};
553
554static const short yydefact[] = {     1,
555     0,     0,     0,     0,     0,   143,    94,     0,    95,   148,
556     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
557     0,     0,     0,     0,     0,     0,   147,     0,   106,    35,
558    92,    29,     0,   155,   156,     0,     0,     0,     0,     0,
559     7,     0,     0,     0,    36,     0,     0,     0,     8,     0,
560     0,     2,     3,    12,     0,    19,    41,   151,    39,     0,
561    40,     0,    30,     0,     0,    37,    15,    16,    17,    20,
562    21,    22,     0,    24,    25,     0,    26,    27,    10,    11,
563    13,    14,    23,     6,     9,     0,     0,     0,     0,     0,
564     0,    36,    88,     0,     0,   103,   105,    30,     0,     0,
565   101,     0,     0,     0,     0,     0,     0,     0,     0,     0,
566    96,     0,    97,     0,    98,     0,    18,   122,     0,   120,
567   123,     0,   150,     0,   153,    73,    75,     0,     0,     0,
568     0,     0,   163,   162,   146,   117,    89,     0,     0,     0,
569     4,     0,     0,    91,     0,     0,     0,    78,     0,    77,
570     0,     0,     0,     0,     0,     0,     0,     0,    28,     0,
571    99,   116,     0,     5,    90,     0,   145,   149,     0,     0,
572   159,     0,   107,     0,     0,     0,     0,     0,     0,     0,
573     0,     0,     0,    63,     0,     0,    47,     0,     0,   121,
574   119,     0,     0,     0,     0,     0,     0,     0,   142,     0,
575     0,     0,   160,     0,     0,     0,   157,   165,     0,     0,
576    34,    42,    93,    31,    32,     0,    38,    87,    86,    85,
577    83,    79,    80,    81,     0,    82,    84,     0,    76,    71,
578    50,     0,   104,   124,     0,     0,    68,     0,    39,    70,
579     0,     0,    66,     0,    51,     0,     0,     0,    56,     0,
580    57,     0,     0,    59,    64,    45,    46,    48,   131,   132,
581   129,   130,   125,   126,   127,     0,   133,   128,   161,     0,
582     0,     0,   164,   118,    33,    44,     0,     0,    49,   107,
583     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
584     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
585     0,    74,   158,   152,   154,     0,    72,     0,     0,     0,
586     0,     0,     0,     0,    52,     0,    58,     0,     0,    54,
587     0,    60,   140,   141,   138,   139,   134,   135,   136,   137,
588    43,     0,     0,     0,   108,   109,     0,   110,   114,     0,
589     0,     0,     0,     0,     0,     0,     0,    67,   102,   112,
590     0,     0,    69,    65,   100,    53,    61,    55,    62,   144,
591     0,   115,     0,   113,   111,     0,     0
592};
593
594static const short yydefgoto[] = {     1,
595    52,    53,    54,    55,    56,    57,   139,    59,   204,    60,
596   230,    61,    62,    63,    94,    65,    66,   174,   338,   339,
597   351,   340,   165,    67,   210,    68,    69,    70,    71,    72,
598    73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
599    83,    84
600};
601
602static const short yypact[] = {-32768,
603   271,  -130,  1484,   933,  1142,  -129,-32768,  1063,-32768,-32768,
604   -81,   -77,   -74,   -64,   -43,   -40,   -34,   -31,  1068,  1073,
605  1123,   -68,  1484,  -100,  1142,   -21,-32768,  1484,-32768,-32768,
606-32768,-32768,   -60,-32768,-32768,   -58,   -13,    -9,    25,    26,
607-32768,    34,    28,  1148,    87,    87,  1484,  1484,-32768,  1484,
608  1484,-32768,-32768,-32768,    40,-32768,   -10,   -91,  1016,  1484,
609-32768,  1484,-32768,  1235,   -80,-32768,-32768,-32768,-32768,-32768,
610   -20,-32768,  1142,-32768,-32768,  1484,-32768,-32768,-32768,-32768,
611-32768,-32768,-32768,-32768,-32768,    72,  -129,    77,    89,    92,
612    97,-32768,    58,   103,  1484,    68,   -10,   125,  1537,  1484,
613   101,  1484,  1484,  1484,  1484,  1484,  1484,  1484,  1201,  1484,
614   -10,  1260,   -10,  1484,   -10,    70,-32768,   111,   112,-32768,
615   -10,  1589,  1016,   -22,-32768,-32768,-32768,   139,  1484,   140,
616  1313,  1142,  1016,   115,-32768,-32768,    58,   -24,  -131,    67,
617-32768,  1142,  1372,-32768,  1484,  1484,  1484,-32768,  1484,-32768,
618  1484,  1484,  1484,  1484,  1484,  1484,  1484,    83,   111,  1425,
619   -10,-32768,  1142,-32768,-32768,  1142,    19,  1016,    48,  1484,
620-32768,  1484,   479,   116,    95,  1484,   491,   772,   781,   290,
621   304,   790,   334,-32768,  -110,   503,-32768,   -88,   515,-32768,
622-32768,   114,   117,   120,   121,   122,   126,   128,-32768,     8,
623   131,   146,-32768,  1484,   148,   527,-32768,-32768,   -69,   141,
624-32768,-32768,-32768,-32768,-32768,   -66,  1016,  1025,   325,   325,
625   470,    71,    71,    58,    22,     3,     7,  1484,-32768,-32768,
626-32768,   -50,   -10,   -10,  1537,  1484,-32768,   811,   820,-32768,
627  1537,  1484,-32768,   923,-32768,  1484,  1484,  1484,-32768,  1484,
628-32768,  1484,  1484,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
629-32768,-32768,-32768,-32768,-32768,   222,-32768,-32768,-32768,   539,
630   166,   -12,-32768,-32768,-32768,-32768,  1484,   551,-32768,  1016,
631   143,   953,   144,  1484,   145,   962,   147,   570,   971,   582,
632   980,   346,   437,   142,   149,   151,   157,   158,   160,   163,
633   164,-32768,-32768,-32768,-32768,   989,-32768,  1537,  1484,  1484,
634   -37,   -97,  1484,  1484,-32768,  1484,-32768,  1484,  1484,-32768,
635  1484,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
636-32768,   170,   681,   998,-32768,-32768,   172,   167,-32768,   168,
637   712,  1007,   724,   736,   748,   760,   -97,-32768,-32768,   177,
638   174,  1484,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
639   172,-32768,    51,-32768,-32768,   282,-32768
640};
641
642static const short yypgoto[] = {-32768,
643-32768,-32768,-32768,-32768,-32768,    16,    -1,    15,-32768,-32768,
644    27,-32768,-32768,   310,     4,   272,   171,  -226,-32768,  -334,
645   -41,   -26,   155,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
646-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
647-32768,-32768
648};
649
650
651#define YYLAST          1728
652
653
654static const short yytable[] = {    58,
655   142,   145,   350,    85,    64,   119,   212,    99,   281,   148,
656   147,   336,   150,   148,   285,   149,   150,    93,   142,    96,
657    97,   118,   145,   101,   146,   147,   350,   255,   148,   142,
658   149,   150,   144,   120,   111,   113,   115,   116,   117,   337,
659   121,   145,   123,   162,   145,   124,   138,    64,   125,   257,
660   146,   147,   163,   164,   148,   102,   149,   150,   133,   103,
661   159,   137,   104,   145,   148,   140,   145,   150,   273,   146,
662   147,   275,   105,   148,   158,   149,   150,   148,   142,   161,
663   150,   332,   145,   202,   203,   146,   147,   279,   167,   148,
664   168,   149,   150,   106,   304,   145,   107,   146,   147,   305,
665   335,   148,   108,   149,   150,   109,   211,   185,   145,   169,
666   188,   142,   166,   173,   175,   122,   177,   178,   179,   180,
667   181,   182,   183,   126,   186,   201,   143,   127,   189,   209,
668   128,   151,   155,   152,   153,   154,   155,   200,   156,   130,
669   266,   216,   162,   206,   143,   267,   151,    97,   152,   153,
670   154,   155,   276,   156,   277,   143,   157,   214,   232,   217,
671   218,   219,   129,   220,   131,   221,   222,   223,   224,   225,
672   226,   227,   151,   141,   152,   153,   154,   155,   233,   156,
673   236,   234,   157,   145,   238,   237,   239,   155,   365,   156,
674   244,   151,    29,   152,   153,   154,   155,   170,   156,   154,
675   155,   157,   156,   190,   143,   213,   228,   151,    95,   152,
676   153,   154,   155,   100,   156,   135,   136,   157,   270,   151,
677   229,   152,   153,   154,   155,   110,   156,   242,   112,   157,
678   176,   171,   243,   114,   294,   295,   296,   143,     7,   160,
679   297,     9,   278,   145,   205,   191,   207,   163,   241,   280,
680   282,   259,   269,   271,   260,   280,   286,   261,   262,   263,
681   288,   289,   290,   264,   291,   265,   292,   293,   268,   301,
682   366,     2,   303,   310,   274,   308,   314,   312,     3,   323,
683   336,   367,   311,     4,     5,     6,   324,     7,   325,     8,
684     9,   306,   146,   147,   326,   327,   148,   328,   149,   150,
685   329,   330,   347,   352,   307,   353,   146,   147,    10,   361,
686   148,   362,   149,   150,    98,   134,   298,   299,   300,   364,
687   360,   235,   280,   333,   334,     0,     0,   341,   342,     0,
688   343,   148,   344,   345,   150,   346,   146,   147,     0,     0,
689   148,     0,   149,   150,     0,     0,     0,     0,   146,   147,
690   363,     0,   148,     0,   149,   150,     0,    11,    12,    13,
691    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
692    24,    25,     0,    26,    27,    28,    29,     0,    30,    31,
693    32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
694    42,    43,    44,    45,     0,    46,     0,     0,    47,     0,
695    48,     0,     0,     0,    49,     0,     0,    50,     0,    51,
696     0,     0,     0,     0,   151,     0,   152,   153,   154,   155,
697     0,   156,   248,     0,   157,     0,     0,   249,   151,     0,
698   152,   153,   154,   155,     0,   156,   250,     0,   157,   146,
699   147,   251,     0,   148,     0,   149,   150,     0,     0,   151,
700     0,   152,   153,   154,   155,     0,   156,     0,   151,     0,
701   152,   153,   154,   155,     0,   156,   253,     0,   157,     0,
702   151,   254,   152,   153,   154,   155,   148,   156,   319,   150,
703   157,   146,   147,   320,     0,   148,     0,   149,   150,     0,
704     0,     0,     0,   146,   147,     0,     0,   148,     0,   149,
705   150,     0,     0,     0,     0,   146,   147,     0,     0,   148,
706     0,   149,   150,     0,     0,     0,     0,   146,   147,     0,
707     0,   148,     0,   149,   150,     0,     0,     0,     0,   146,
708   147,     0,     0,   148,     0,   149,   150,     0,     0,     0,
709     0,   146,   147,     0,     0,   148,     0,   149,   150,     0,
710     0,     0,     0,   146,   147,     0,     0,   148,     0,   149,
711   150,   151,     0,   152,   153,   154,   155,     0,   156,   321,
712     0,   157,   146,   147,   322,     0,   148,     0,   149,   150,
713     0,     0,     0,     0,   146,   147,     0,     0,   148,     0,
714   149,   150,     0,     0,     0,     0,   152,   153,   154,   155,
715     0,   156,     0,   151,     0,   152,   153,   154,   155,     0,
716   156,     0,     0,   157,     0,   151,   240,   152,   153,   154,
717   155,     0,   156,     0,     0,   157,     0,   151,   245,   152,
718   153,   154,   155,     0,   156,     0,     0,   157,     0,   151,
719   256,   152,   153,   154,   155,     0,   156,     0,     0,   157,
720     0,   151,   258,   152,   153,   154,   155,     0,   156,     0,
721     0,   157,     0,   151,   272,   152,   153,   154,   155,     0,
722   156,     0,     0,   157,     0,   151,   302,   152,   153,   154,
723   155,     0,   156,   146,   147,   157,     0,   148,   229,   149,
724   150,     0,     0,     0,   151,     0,   152,   153,   154,   155,
725     0,   156,     0,     0,   157,     0,   151,   315,   152,   153,
726   154,   155,     0,   156,   146,   147,   157,     0,   148,   317,
727   149,   150,     0,     0,     0,     0,   146,   147,     0,     0,
728   148,     0,   149,   150,     0,     0,     0,     0,   146,   147,
729     0,     0,   148,     0,   149,   150,     0,     0,     0,     0,
730   146,   147,     0,     0,   148,     0,   149,   150,     0,     0,
731     0,     0,   146,   147,     0,     0,   148,     0,   149,   150,
732     0,     0,     0,     0,   146,   147,     0,     0,   148,     0,
733   149,   150,     0,   146,   147,     0,     0,   148,     0,   149,
734   150,     0,   146,   147,     0,     0,   148,     0,   149,   150,
735     0,     0,     0,     0,     0,   151,     0,   152,   153,   154,
736   155,     0,   156,   146,   147,   157,     0,   148,   348,   149,
737   150,     0,   146,   147,     0,     0,   148,     0,   149,   150,
738     0,     0,     0,     0,     0,     0,   151,     0,   152,   153,
739   154,   155,     0,   156,     0,     0,   157,     0,   151,   354,
740   152,   153,   154,   155,     0,   156,     0,     0,   157,     0,
741   151,   356,   152,   153,   154,   155,     0,   156,     0,     0,
742   157,     0,   151,   357,   152,   153,   154,   155,     0,   156,
743     0,     0,   157,     0,   151,   358,   152,   153,   154,   155,
744     0,   156,     0,     0,   157,     0,   151,   359,   152,   153,
745   154,   155,     0,   156,   246,   151,   157,   152,   153,   154,
746   155,     0,   156,   247,   151,   157,   152,   153,   154,   155,
747     0,   156,   252,     0,   157,   146,   147,     0,     0,   148,
748     0,   149,   150,     0,     0,   151,     0,   152,   153,   154,
749   155,   283,   156,     0,   151,   157,   152,   153,   154,   155,
750     0,   156,   284,     0,   157,   146,   147,     0,     0,   148,
751     0,   149,   150,     0,   146,   147,     0,     0,   148,     0,
752   149,   150,     0,   146,   147,     0,     0,   148,     0,   149,
753   150,     0,   146,   147,     0,     0,   148,     0,   149,   150,
754     0,   146,   147,     0,     0,   148,     0,   149,   150,     0,
755   146,   147,     0,     0,   148,     0,   149,   150,     0,   146,
756   147,     0,     0,   148,     0,   149,   150,     0,   146,   147,
757     0,     0,   148,     0,   149,   150,     0,-32768,   147,     0,
758     0,   148,     0,   149,   150,     0,     0,     0,    29,     0,
759    30,    31,    32,     0,     0,     0,     0,   151,     0,   152,
760   153,   154,   155,   287,   156,    92,     0,   157,     0,     0,
761     0,     0,    48,     0,     0,     0,     0,     0,     0,    95,
762     0,    51,     0,     0,     0,     0,     0,   151,     0,   152,
763   153,   154,   155,     0,   156,   309,   151,   157,   152,   153,
764   154,   155,     0,   156,   313,   151,   157,   152,   153,   154,
765   155,     0,   156,   316,   151,   157,   152,   153,   154,   155,
766     0,   156,   318,   151,   157,   152,   153,   154,   155,   331,
767   156,     0,   151,   157,   152,   153,   154,   155,   349,   156,
768     0,   151,   157,   152,   153,   154,   155,   355,   156,     0,
769   151,   157,   152,   153,   154,   155,     0,   156,     0,   151,
770   157,   152,   153,   154,   155,     3,   156,     0,     0,   157,
771     4,   132,    87,     0,     7,     0,     8,     9,    29,     0,
772    30,    31,    32,    29,     0,    30,    31,    32,    29,     0,
773    30,    31,    32,     0,     0,    92,     0,     0,     0,     0,
774    92,     0,    48,     0,     0,    92,     0,    48,     0,   100,
775     0,    51,    48,     0,   110,     0,    51,     0,     3,   112,
776     0,    51,     0,    86,     0,    87,     0,     7,     0,    88,
777     9,     0,     0,     0,     0,     0,     0,     0,    29,     0,
778    30,    31,    32,     0,    11,    12,    13,    14,    15,    16,
779    17,    18,    19,    20,    21,    92,     0,    29,     0,    30,
780    31,    32,    48,    29,     0,    30,    31,    32,     0,   114,
781     0,    51,    37,    38,    92,     0,     0,     3,     0,     0,
782    92,    48,    86,     0,    87,    47,     7,    48,    88,     9,
783    51,     0,     0,     0,    50,     0,    51,    11,    12,    13,
784    14,    15,    16,    17,    18,    89,    90,    91,     0,     0,
785     0,     0,     0,     0,     0,     0,    29,     0,    30,    31,
786    32,     0,     0,     0,     0,    37,    38,     0,     0,     0,
787     3,     0,     0,    92,     0,    86,     0,    87,    47,     7,
788    48,    88,     9,     0,     0,     0,     0,    50,   184,    51,
789    29,     0,    30,    31,    32,     0,    11,    12,    13,    14,
790    15,    16,    17,    18,    89,    90,    91,    92,     0,     0,
791     0,     0,     0,     0,    48,    29,     0,    30,    31,    32,
792     0,   160,     0,    51,    37,    38,     0,     0,     0,     3,
793     0,     0,    92,     0,    86,     0,    87,    47,     7,    48,
794    88,     9,     0,     0,     0,     0,    50,   187,    51,    11,
795    12,    13,    14,    15,    16,    17,    18,    89,    90,    91,
796     0,     0,     0,     0,     0,     0,     0,     0,    29,     0,
797    30,    31,    32,     0,     0,     0,     0,    37,    38,     0,
798     0,     0,     3,     0,     0,    92,     0,    86,     0,    87,
799    47,     7,    48,    88,     9,     0,     0,     0,     0,    50,
800   208,    51,     0,     0,     0,     0,     0,     0,    11,    12,
801    13,    14,    15,    16,    17,    18,    89,    90,    91,     0,
802     0,     0,     0,     0,     0,     0,     0,    29,     0,    30,
803    31,    32,     0,     0,     0,     0,    37,    38,     0,     0,
804     0,     3,     0,     0,    92,     0,    86,     0,    87,    47,
805     7,    48,    88,     9,     0,     0,     0,     0,    50,   215,
806    51,    11,    12,    13,    14,    15,    16,    17,    18,    89,
807    90,    91,     0,     0,     0,     0,     0,     0,     0,     0,
808    29,     0,    30,    31,    32,     0,     0,     0,     0,    37,
809    38,     0,     0,     0,     3,     0,     0,    92,     0,    86,
810     0,    87,    47,     7,    48,    88,     9,     0,     0,     0,
811     0,    50,   231,    51,     0,     0,     0,     0,     0,     0,
812    11,    12,    13,    14,    15,    16,    17,    18,    89,    90,
813    91,     0,     0,     0,     0,     0,     0,     0,     0,    29,
814     0,    30,    31,    32,     0,     0,     0,     0,    37,    38,
815     0,   192,   193,   194,     0,     7,    92,   195,     9,     0,
816     0,    47,     0,    48,     0,     0,     0,     0,     0,     0,
817    50,     0,    51,    11,    12,    13,    14,    15,    16,    17,
818    18,    89,    90,    91,     0,     0,     0,     0,     0,     0,
819     0,     0,    29,     0,    30,    31,    32,     0,     0,     0,
820     0,    37,    38,     0,     0,     0,     0,     0,     0,    92,
821     0,     0,     0,     0,    47,     0,    48,     0,     0,     0,
822     0,     0,     0,   172,     0,    51,     0,     0,     0,     0,
823     0,     0,     0,   196,   197,   198,     0,     0,     0,     0,
824     0,     0,     0,     0,    29,     0,    30,    31,    32,     0,
825     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
826     0,    92,     0,     0,     0,     0,     0,     0,    48,     0,
827     0,     0,     0,     0,     0,     0,   199,    51
828};
829
830static const short yycheck[] = {     1,
831    11,   133,   337,   134,     1,   106,   138,   137,   235,     7,
832     4,   109,    10,     7,   241,     9,    10,     3,    11,     4,
833     5,    23,   133,     8,     3,     4,   361,   138,     7,    11,
834     9,    10,   124,   134,    19,    20,    21,   106,   107,   137,
835    25,   133,    28,   124,   133,   106,    48,    44,   107,   138,
836     3,     4,   133,   134,     7,   137,     9,    10,    44,   137,
837    62,    47,   137,   133,     7,    51,   133,    10,   138,     3,
838     4,   138,   137,     7,    60,     9,    10,     7,    11,    64,
839    10,   308,   133,   106,   107,     3,     4,   138,    73,     7,
840    76,     9,    10,   137,   107,   133,   137,     3,     4,   112,
841   138,     7,   137,     9,    10,   137,   131,   109,   133,    95,
842   112,    11,   133,    99,   100,   137,   102,   103,   104,   105,
843   106,   107,   108,   137,   110,   122,   137,   137,   114,   131,
844   106,   125,   130,   127,   128,   129,   130,   122,   132,   106,
845   133,   143,   124,   129,   137,   138,   125,   132,   127,   128,
846   129,   130,   131,   132,   133,   137,   135,   142,   160,   145,
847   146,   147,   137,   149,   137,   151,   152,   153,   154,   155,
848   156,   157,   125,   134,   127,   128,   129,   130,   163,   132,
849   133,   166,   135,   133,   170,   138,   172,   130,   138,   132,
850   176,   125,   106,   127,   128,   129,   130,   130,   132,   129,
851   130,   135,   132,   134,   137,   139,   124,   125,   137,   127,
852   128,   129,   130,   137,   132,    45,    46,   135,   204,   125,
853   138,   127,   128,   129,   130,   137,   132,   133,   137,   135,
854   130,   107,   138,   137,    13,    14,    15,   137,    17,   137,
855    19,    20,   228,   133,   106,   134,   107,   133,   133,   235,
856   236,   138,   107,   106,   138,   241,   242,   138,   138,   138,
857   246,   247,   248,   138,   250,   138,   252,   253,   138,   266,
858     0,     1,   107,   130,   134,   133,   130,   133,     8,   138,
859   109,     0,   284,    13,    14,    15,   138,    17,   138,    19,
860    20,   277,     3,     4,   138,   138,     7,   138,     9,    10,
861   138,   138,   133,   137,   278,   138,     3,     4,    38,   133,
862     7,   138,     9,    10,     5,    44,    95,    96,    97,   361,
863   347,   167,   308,   309,   310,    -1,    -1,   313,   314,    -1,
864   316,     7,   318,   319,    10,   321,     3,     4,    -1,    -1,
865     7,    -1,     9,    10,    -1,    -1,    -1,    -1,     3,     4,
866   352,    -1,     7,    -1,     9,    10,    -1,    87,    88,    89,
867    90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
868   100,   101,    -1,   103,   104,   105,   106,    -1,   108,   109,
869   110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
870   120,   121,   122,   123,    -1,   125,    -1,    -1,   128,    -1,
871   130,    -1,    -1,    -1,   134,    -1,    -1,   137,    -1,   139,
872    -1,    -1,    -1,    -1,   125,    -1,   127,   128,   129,   130,
873    -1,   132,   133,    -1,   135,    -1,    -1,   138,   125,    -1,
874   127,   128,   129,   130,    -1,   132,   133,    -1,   135,     3,
875     4,   138,    -1,     7,    -1,     9,    10,    -1,    -1,   125,
876    -1,   127,   128,   129,   130,    -1,   132,    -1,   125,    -1,
877   127,   128,   129,   130,    -1,   132,   133,    -1,   135,    -1,
878   125,   138,   127,   128,   129,   130,     7,   132,   133,    10,
879   135,     3,     4,   138,    -1,     7,    -1,     9,    10,    -1,
880    -1,    -1,    -1,     3,     4,    -1,    -1,     7,    -1,     9,
881    10,    -1,    -1,    -1,    -1,     3,     4,    -1,    -1,     7,
882    -1,     9,    10,    -1,    -1,    -1,    -1,     3,     4,    -1,
883    -1,     7,    -1,     9,    10,    -1,    -1,    -1,    -1,     3,
884     4,    -1,    -1,     7,    -1,     9,    10,    -1,    -1,    -1,
885    -1,     3,     4,    -1,    -1,     7,    -1,     9,    10,    -1,
886    -1,    -1,    -1,     3,     4,    -1,    -1,     7,    -1,     9,
887    10,   125,    -1,   127,   128,   129,   130,    -1,   132,   133,
888    -1,   135,     3,     4,   138,    -1,     7,    -1,     9,    10,
889    -1,    -1,    -1,    -1,     3,     4,    -1,    -1,     7,    -1,
890     9,    10,    -1,    -1,    -1,    -1,   127,   128,   129,   130,
891    -1,   132,    -1,   125,    -1,   127,   128,   129,   130,    -1,
892   132,    -1,    -1,   135,    -1,   125,   138,   127,   128,   129,
893   130,    -1,   132,    -1,    -1,   135,    -1,   125,   138,   127,
894   128,   129,   130,    -1,   132,    -1,    -1,   135,    -1,   125,
895   138,   127,   128,   129,   130,    -1,   132,    -1,    -1,   135,
896    -1,   125,   138,   127,   128,   129,   130,    -1,   132,    -1,
897    -1,   135,    -1,   125,   138,   127,   128,   129,   130,    -1,
898   132,    -1,    -1,   135,    -1,   125,   138,   127,   128,   129,
899   130,    -1,   132,     3,     4,   135,    -1,     7,   138,     9,
900    10,    -1,    -1,    -1,   125,    -1,   127,   128,   129,   130,
901    -1,   132,    -1,    -1,   135,    -1,   125,   138,   127,   128,
902   129,   130,    -1,   132,     3,     4,   135,    -1,     7,   138,
903     9,    10,    -1,    -1,    -1,    -1,     3,     4,    -1,    -1,
904     7,    -1,     9,    10,    -1,    -1,    -1,    -1,     3,     4,
905    -1,    -1,     7,    -1,     9,    10,    -1,    -1,    -1,    -1,
906     3,     4,    -1,    -1,     7,    -1,     9,    10,    -1,    -1,
907    -1,    -1,     3,     4,    -1,    -1,     7,    -1,     9,    10,
908    -1,    -1,    -1,    -1,     3,     4,    -1,    -1,     7,    -1,
909     9,    10,    -1,     3,     4,    -1,    -1,     7,    -1,     9,
910    10,    -1,     3,     4,    -1,    -1,     7,    -1,     9,    10,
911    -1,    -1,    -1,    -1,    -1,   125,    -1,   127,   128,   129,
912   130,    -1,   132,     3,     4,   135,    -1,     7,   138,     9,
913    10,    -1,     3,     4,    -1,    -1,     7,    -1,     9,    10,
914    -1,    -1,    -1,    -1,    -1,    -1,   125,    -1,   127,   128,
915   129,   130,    -1,   132,    -1,    -1,   135,    -1,   125,   138,
916   127,   128,   129,   130,    -1,   132,    -1,    -1,   135,    -1,
917   125,   138,   127,   128,   129,   130,    -1,   132,    -1,    -1,
918   135,    -1,   125,   138,   127,   128,   129,   130,    -1,   132,
919    -1,    -1,   135,    -1,   125,   138,   127,   128,   129,   130,
920    -1,   132,    -1,    -1,   135,    -1,   125,   138,   127,   128,
921   129,   130,    -1,   132,   133,   125,   135,   127,   128,   129,
922   130,    -1,   132,   133,   125,   135,   127,   128,   129,   130,
923    -1,   132,   133,    -1,   135,     3,     4,    -1,    -1,     7,
924    -1,     9,    10,    -1,    -1,   125,    -1,   127,   128,   129,
925   130,   131,   132,    -1,   125,   135,   127,   128,   129,   130,
926    -1,   132,   133,    -1,   135,     3,     4,    -1,    -1,     7,
927    -1,     9,    10,    -1,     3,     4,    -1,    -1,     7,    -1,
928     9,    10,    -1,     3,     4,    -1,    -1,     7,    -1,     9,
929    10,    -1,     3,     4,    -1,    -1,     7,    -1,     9,    10,
930    -1,     3,     4,    -1,    -1,     7,    -1,     9,    10,    -1,
931     3,     4,    -1,    -1,     7,    -1,     9,    10,    -1,     3,
932     4,    -1,    -1,     7,    -1,     9,    10,    -1,     3,     4,
933    -1,    -1,     7,    -1,     9,    10,    -1,     3,     4,    -1,
934    -1,     7,    -1,     9,    10,    -1,    -1,    -1,   106,    -1,
935   108,   109,   110,    -1,    -1,    -1,    -1,   125,    -1,   127,
936   128,   129,   130,   131,   132,   123,    -1,   135,    -1,    -1,
937    -1,    -1,   130,    -1,    -1,    -1,    -1,    -1,    -1,   137,
938    -1,   139,    -1,    -1,    -1,    -1,    -1,   125,    -1,   127,
939   128,   129,   130,    -1,   132,   133,   125,   135,   127,   128,
940   129,   130,    -1,   132,   133,   125,   135,   127,   128,   129,
941   130,    -1,   132,   133,   125,   135,   127,   128,   129,   130,
942    -1,   132,   133,   125,   135,   127,   128,   129,   130,   131,
943   132,    -1,   125,   135,   127,   128,   129,   130,   131,   132,
944    -1,   125,   135,   127,   128,   129,   130,   131,   132,    -1,
945   125,   135,   127,   128,   129,   130,    -1,   132,    -1,   125,
946   135,   127,   128,   129,   130,     8,   132,    -1,    -1,   135,
947    13,    14,    15,    -1,    17,    -1,    19,    20,   106,    -1,
948   108,   109,   110,   106,    -1,   108,   109,   110,   106,    -1,
949   108,   109,   110,    -1,    -1,   123,    -1,    -1,    -1,    -1,
950   123,    -1,   130,    -1,    -1,   123,    -1,   130,    -1,   137,
951    -1,   139,   130,    -1,   137,    -1,   139,    -1,     8,   137,
952    -1,   139,    -1,    13,    -1,    15,    -1,    17,    -1,    19,
953    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,    -1,
954   108,   109,   110,    -1,    87,    88,    89,    90,    91,    92,
955    93,    94,    95,    96,    97,   123,    -1,   106,    -1,   108,
956   109,   110,   130,   106,    -1,   108,   109,   110,    -1,   137,
957    -1,   139,   115,   116,   123,    -1,    -1,     8,    -1,    -1,
958   123,   130,    13,    -1,    15,   128,    17,   130,    19,    20,
959   139,    -1,    -1,    -1,   137,    -1,   139,    87,    88,    89,
960    90,    91,    92,    93,    94,    95,    96,    97,    -1,    -1,
961    -1,    -1,    -1,    -1,    -1,    -1,   106,    -1,   108,   109,
962   110,    -1,    -1,    -1,    -1,   115,   116,    -1,    -1,    -1,
963     8,    -1,    -1,   123,    -1,    13,    -1,    15,   128,    17,
964   130,    19,    20,    -1,    -1,    -1,    -1,   137,   138,   139,
965   106,    -1,   108,   109,   110,    -1,    87,    88,    89,    90,
966    91,    92,    93,    94,    95,    96,    97,   123,    -1,    -1,
967    -1,    -1,    -1,    -1,   130,   106,    -1,   108,   109,   110,
968    -1,   137,    -1,   139,   115,   116,    -1,    -1,    -1,     8,
969    -1,    -1,   123,    -1,    13,    -1,    15,   128,    17,   130,
970    19,    20,    -1,    -1,    -1,    -1,   137,   138,   139,    87,
971    88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
972    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,    -1,
973   108,   109,   110,    -1,    -1,    -1,    -1,   115,   116,    -1,
974    -1,    -1,     8,    -1,    -1,   123,    -1,    13,    -1,    15,
975   128,    17,   130,    19,    20,    -1,    -1,    -1,    -1,   137,
976   138,   139,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,
977    89,    90,    91,    92,    93,    94,    95,    96,    97,    -1,
978    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,    -1,   108,
979   109,   110,    -1,    -1,    -1,    -1,   115,   116,    -1,    -1,
980    -1,     8,    -1,    -1,   123,    -1,    13,    -1,    15,   128,
981    17,   130,    19,    20,    -1,    -1,    -1,    -1,   137,   138,
982   139,    87,    88,    89,    90,    91,    92,    93,    94,    95,
983    96,    97,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
984   106,    -1,   108,   109,   110,    -1,    -1,    -1,    -1,   115,
985   116,    -1,    -1,    -1,     8,    -1,    -1,   123,    -1,    13,
986    -1,    15,   128,    17,   130,    19,    20,    -1,    -1,    -1,
987    -1,   137,   138,   139,    -1,    -1,    -1,    -1,    -1,    -1,
988    87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
989    97,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,
990    -1,   108,   109,   110,    -1,    -1,    -1,    -1,   115,   116,
991    -1,    13,    14,    15,    -1,    17,   123,    19,    20,    -1,
992    -1,   128,    -1,   130,    -1,    -1,    -1,    -1,    -1,    -1,
993   137,    -1,   139,    87,    88,    89,    90,    91,    92,    93,
994    94,    95,    96,    97,    -1,    -1,    -1,    -1,    -1,    -1,
995    -1,    -1,   106,    -1,   108,   109,   110,    -1,    -1,    -1,
996    -1,   115,   116,    -1,    -1,    -1,    -1,    -1,    -1,   123,
997    -1,    -1,    -1,    -1,   128,    -1,   130,    -1,    -1,    -1,
998    -1,    -1,    -1,   137,    -1,   139,    -1,    -1,    -1,    -1,
999    -1,    -1,    -1,    95,    96,    97,    -1,    -1,    -1,    -1,
1000    -1,    -1,    -1,    -1,   106,    -1,   108,   109,   110,    -1,
1001    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1002    -1,   123,    -1,    -1,    -1,    -1,    -1,    -1,   130,    -1,
1003    -1,    -1,    -1,    -1,    -1,    -1,   138,   139
1004};
1005#define YYPURE 1
1006
1007/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
1008#line 3 "/usr/lib/bison.simple"
1009/* This file comes from bison-1.28.  */
1010
1011/* Skeleton output parser for bison,
1012   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
1013
1014   This program is free software; you can redistribute it and/or modify
1015   it under the terms of the GNU General Public License as published by
1016   the Free Software Foundation; either version 2, or (at your option)
1017   any later version.
1018
1019   This program is distributed in the hope that it will be useful,
1020   but WITHOUT ANY WARRANTY; without even the implied warranty of
1021   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1022   GNU General Public License for more details.
1023
1024   You should have received a copy of the GNU General Public License
1025   along with this program; if not, write to the Free Software
1026   Foundation, Inc., 59 Temple Place - Suite 330,
1027   Boston, MA 02111-1307, USA.  */
1028
1029/* As a special exception, when this file is copied by Bison into a
1030   Bison output file, you may use that output file without restriction.
1031   This special exception was added by the Free Software Foundation
1032   in version 1.24 of Bison.  */
1033
1034/* This is the parser code that is written into each bison parser
1035  when the %semantic_parser declaration is not specified in the grammar.
1036  It was written by Richard Stallman by simplifying the hairy parser
1037  used when %semantic_parser is specified.  */
1038
1039#ifndef YYSTACK_USE_ALLOCA
1040#ifdef alloca
1041#define YYSTACK_USE_ALLOCA
1042#else /* alloca not defined */
1043#ifdef __GNUC__
1044#define YYSTACK_USE_ALLOCA
1045#define alloca __builtin_alloca
1046#else /* not GNU C.  */
1047#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
1048#define YYSTACK_USE_ALLOCA
1049#include <alloca.h>
1050#else /* not sparc */
1051/* We think this test detects Watcom and Microsoft C.  */
1052/* This used to test MSDOS, but that is a bad idea
1053   since that symbol is in the user namespace.  */
1054#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
1055#if 0 /* No need for malloc.h, which pollutes the namespace;
1056         instead, just don't use alloca.  */
1057#include <malloc.h>
1058#endif
1059#else /* not MSDOS, or __TURBOC__ */
1060#if defined(_AIX)
1061/* I don't know what this was needed for, but it pollutes the namespace.
1062   So I turned it off.   rms, 2 May 1997.  */
1063/* #include <malloc.h>  */
1064 #pragma alloca
1065#define YYSTACK_USE_ALLOCA
1066#else /* not MSDOS, or __TURBOC__, or _AIX */
1067#if 0
1068#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
1069                 and on HPUX 10.  Eventually we can turn this on.  */
1070#define YYSTACK_USE_ALLOCA
1071#define alloca __builtin_alloca
1072#endif /* __hpux */
1073#endif
1074#endif /* not _AIX */
1075#endif /* not MSDOS, or __TURBOC__ */
1076#endif /* not sparc */
1077#endif /* not GNU C */
1078#endif /* alloca not defined */
1079#endif /* YYSTACK_USE_ALLOCA not defined */
1080
1081#ifdef YYSTACK_USE_ALLOCA
1082#define YYSTACK_ALLOC alloca
1083#else
1084#define YYSTACK_ALLOC malloc
1085#endif
1086
1087/* Note: there must be only one dollar sign in this file.
1088   It is replaced by the list of actions, each action
1089   as one case of the switch.  */
1090
1091#define yyerrok         (yyerrstatus = 0)
1092#define yyclearin       (yychar = YYEMPTY)
1093#define YYEMPTY         -2
1094#define YYEOF           0
1095#define YYACCEPT        goto yyacceptlab
1096#define YYABORT         goto yyabortlab
1097#define YYERROR         goto yyerrlab1
1098/* Like YYERROR except do call yyerror.
1099   This remains here temporarily to ease the
1100   transition to the new meaning of YYERROR, for GCC.
1101   Once GCC version 2 has supplanted version 1, this can go.  */
1102#define YYFAIL          goto yyerrlab
1103#define YYRECOVERING()  (!!yyerrstatus)
1104#define YYBACKUP(token, value) \
1105do                                                              \
1106  if (yychar == YYEMPTY && yylen == 1)                          \
1107    { yychar = (token), yylval = (value);                       \
1108      yychar1 = YYTRANSLATE (yychar);                           \
1109      YYPOPSTACK;                                               \
1110      goto yybackup;                                            \
1111    }                                                           \
1112  else                                                          \
1113    { yyerror ("syntax error: cannot back up"); YYERROR; }      \
1114while (0)
1115
1116#define YYTERROR        1
1117#define YYERRCODE       256
1118
1119#ifndef YYPURE
1120#define YYLEX           yylex()
1121#endif
1122
1123#ifdef YYPURE
1124#ifdef YYLSP_NEEDED
1125#ifdef YYLEX_PARAM
1126#define YYLEX           yylex(&yylval, &yylloc, YYLEX_PARAM)
1127#else
1128#define YYLEX           yylex(&yylval, &yylloc)
1129#endif
1130#else /* not YYLSP_NEEDED */
1131#ifdef YYLEX_PARAM
1132#define YYLEX           yylex(&yylval, YYLEX_PARAM)
1133#else
1134#define YYLEX           yylex(&yylval)
1135#endif
1136#endif /* not YYLSP_NEEDED */
1137#endif
1138
1139/* If nonreentrant, generate the variables here */
1140
1141#ifndef YYPURE
1142
1143int     yychar;                 /*  the lookahead symbol                */
1144YYSTYPE yylval;                 /*  the semantic value of the           */
1145                                /*  lookahead symbol                    */
1146
1147#ifdef YYLSP_NEEDED
1148YYLTYPE yylloc;                 /*  location data for the lookahead     */
1149                                /*  symbol                              */
1150#endif
1151
1152int yynerrs;                    /*  number of parse errors so far       */
1153#endif  /* not YYPURE */
1154
1155#if YYDEBUG != 0
1156int yydebug;                    /*  nonzero means print parse trace     */
1157/* Since this is uninitialized, it does not stop multiple parsers
1158   from coexisting.  */
1159#endif
1160
1161/*  YYINITDEPTH indicates the initial size of the parser's stacks       */
1162
1163#ifndef YYINITDEPTH
1164#define YYINITDEPTH 200
1165#endif
1166
1167/*  YYMAXDEPTH is the maximum size the stacks can grow to
1168    (effective only if the built-in stack extension method is used).  */
1169
1170#if YYMAXDEPTH == 0
1171#undef YYMAXDEPTH
1172#endif
1173
1174#ifndef YYMAXDEPTH
1175#define YYMAXDEPTH 10000
1176#endif
1177
1178/* Define __yy_memcpy.  Note that the size argument
1179   should be passed with type unsigned int, because that is what the non-GCC
1180   definitions require.  With GCC, __builtin_memcpy takes an arg
1181   of type size_t, but it can handle unsigned int.  */
1182
1183#if __GNUC__ > 1                /* GNU C and GNU C++ define this.  */
1184#define __yy_memcpy(TO,FROM,COUNT)      __builtin_memcpy(TO,FROM,COUNT)
1185#else                           /* not GNU C or C++ */
1186#ifndef __cplusplus
1187
1188/* This is the most reliable way to avoid incompatibilities
1189   in available built-in functions on various systems.  */
1190static void
1191__yy_memcpy (to, from, count)
1192     char *to;
1193     char *from;
1194     unsigned int count;
1195{
1196  register char *f = from;
1197  register char *t = to;
1198  register int i = count;
1199
1200  while (i-- > 0)
1201    *t++ = *f++;
1202}
1203
1204#else /* __cplusplus */
1205
1206/* This is the most reliable way to avoid incompatibilities
1207   in available built-in functions on various systems.  */
1208static void
1209__yy_memcpy (char *to, char *from, unsigned int count)
1210{
1211  register char *t = to;
1212  register char *f = from;
1213  register int i = count;
1214
1215  while (i-- > 0)
1216    *t++ = *f++;
1217}
1218
1219#endif
1220#endif
1221
1222#line 217 "/usr/lib/bison.simple"
1223
1224/* The user can define YYPARSE_PARAM as the name of an argument to be passed
1225   into yyparse.  The argument should have type void *.
1226   It should actually point to an object.
1227   Grammar actions can access the variable by casting it
1228   to the proper pointer type.  */
1229
1230#ifdef YYPARSE_PARAM
1231#ifdef __cplusplus
1232#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
1233#define YYPARSE_PARAM_DECL
1234#else /* not __cplusplus */
1235#define YYPARSE_PARAM_ARG YYPARSE_PARAM
1236#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
1237#endif /* not __cplusplus */
1238#else /* not YYPARSE_PARAM */
1239#define YYPARSE_PARAM_ARG
1240#define YYPARSE_PARAM_DECL
1241#endif /* not YYPARSE_PARAM */
1242
1243/* Prevent warning if -Wstrict-prototypes.  */
1244#ifdef __GNUC__
1245#ifdef YYPARSE_PARAM
1246int yyparse (void *);
1247#else
1248int yyparse (void);
1249#endif
1250#endif
1251
1252int
1253yyparse(YYPARSE_PARAM_ARG)
1254     YYPARSE_PARAM_DECL
1255{
1256  register int yystate;
1257  register int yyn;
1258  register short *yyssp;
1259  register YYSTYPE *yyvsp;
1260  int yyerrstatus;      /*  number of tokens to shift before error messages enabled */
1261  int yychar1 = 0;              /*  lookahead token as an internal (translated) token number */
1262
1263  short yyssa[YYINITDEPTH];     /*  the state stack                     */
1264  YYSTYPE yyvsa[YYINITDEPTH];   /*  the semantic value stack            */
1265
1266  short *yyss = yyssa;          /*  refer to the stacks thru separate pointers */
1267  YYSTYPE *yyvs = yyvsa;        /*  to allow yyoverflow to reallocate them elsewhere */
1268
1269#ifdef YYLSP_NEEDED
1270  YYLTYPE yylsa[YYINITDEPTH];   /*  the location stack                  */
1271  YYLTYPE *yyls = yylsa;
1272  YYLTYPE *yylsp;
1273
1274#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
1275#else
1276#define YYPOPSTACK   (yyvsp--, yyssp--)
1277#endif
1278
1279  int yystacksize = YYINITDEPTH;
1280  int yyfree_stacks = 0;
1281
1282#ifdef YYPURE
1283  int yychar;
1284  YYSTYPE yylval;
1285  int yynerrs;
1286#ifdef YYLSP_NEEDED
1287  YYLTYPE yylloc;
1288#endif
1289#endif
1290
1291  YYSTYPE yyval;                /*  the variable used to return         */
1292                                /*  semantic values from the action     */
1293                                /*  routines                            */
1294
1295  int yylen;
1296
1297#if YYDEBUG != 0
1298  if (yydebug)
1299    fprintf(stderr, "Starting parse\n");
1300#endif
1301
1302  yystate = 0;
1303  yyerrstatus = 0;
1304  yynerrs = 0;
1305  yychar = YYEMPTY;             /* Cause a token to be read.  */
1306
1307  /* Initialize stack pointers.
1308     Waste one element of value and location stack
1309     so that they stay on the same level as the state stack.
1310     The wasted elements are never initialized.  */
1311
1312  yyssp = yyss - 1;
1313  yyvsp = yyvs;
1314#ifdef YYLSP_NEEDED
1315  yylsp = yyls;
1316#endif
1317
1318/* Push a new state, which is found in  yystate  .  */
1319/* In all cases, when you get here, the value and location stacks
1320   have just been pushed. so pushing a state here evens the stacks.  */
1321yynewstate:
1322
1323  *++yyssp = yystate;
1324
1325  if (yyssp >= yyss + yystacksize - 1)
1326    {
1327      /* Give user a chance to reallocate the stack */
1328      /* Use copies of these so that the &'s don't force the real ones into memory. */
1329      YYSTYPE *yyvs1 = yyvs;
1330      short *yyss1 = yyss;
1331#ifdef YYLSP_NEEDED
1332      YYLTYPE *yyls1 = yyls;
1333#endif
1334
1335      /* Get the current used size of the three stacks, in elements.  */
1336      int size = yyssp - yyss + 1;
1337
1338#ifdef yyoverflow
1339      /* Each stack pointer address is followed by the size of
1340         the data in use in that stack, in bytes.  */
1341#ifdef YYLSP_NEEDED
1342      /* This used to be a conditional around just the two extra args,
1343         but that might be undefined if yyoverflow is a macro.  */
1344      yyoverflow("parser stack overflow",
1345                 &yyss1, size * sizeof (*yyssp),
1346                 &yyvs1, size * sizeof (*yyvsp),
1347                 &yyls1, size * sizeof (*yylsp),
1348                 &yystacksize);
1349#else
1350      yyoverflow("parser stack overflow",
1351                 &yyss1, size * sizeof (*yyssp),
1352                 &yyvs1, size * sizeof (*yyvsp),
1353                 &yystacksize);
1354#endif
1355
1356      yyss = yyss1; yyvs = yyvs1;
1357#ifdef YYLSP_NEEDED
1358      yyls = yyls1;
1359#endif
1360#else /* no yyoverflow */
1361      /* Extend the stack our own way.  */
1362      if (yystacksize >= YYMAXDEPTH)
1363        {
1364          yyerror("parser stack overflow");
1365          if (yyfree_stacks)
1366            {
1367              free (yyss);
1368              free (yyvs);
1369#ifdef YYLSP_NEEDED
1370              free (yyls);
1371#endif
1372            }
1373          return 2;
1374        }
1375      yystacksize *= 2;
1376      if (yystacksize > YYMAXDEPTH)
1377        yystacksize = YYMAXDEPTH;
1378#ifndef YYSTACK_USE_ALLOCA
1379      yyfree_stacks = 1;
1380#endif
1381      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
1382      __yy_memcpy ((char *)yyss, (char *)yyss1,
1383                   size * (unsigned int) sizeof (*yyssp));
1384      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
1385      __yy_memcpy ((char *)yyvs, (char *)yyvs1,
1386                   size * (unsigned int) sizeof (*yyvsp));
1387#ifdef YYLSP_NEEDED
1388      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
1389      __yy_memcpy ((char *)yyls, (char *)yyls1,
1390                   size * (unsigned int) sizeof (*yylsp));
1391#endif
1392#endif /* no yyoverflow */
1393
1394      yyssp = yyss + size - 1;
1395      yyvsp = yyvs + size - 1;
1396#ifdef YYLSP_NEEDED
1397      yylsp = yyls + size - 1;
1398#endif
1399
1400#if YYDEBUG != 0
1401      if (yydebug)
1402        fprintf(stderr, "Stack size increased to %d\n", yystacksize);
1403#endif
1404
1405      if (yyssp >= yyss + yystacksize - 1)
1406        YYABORT;
1407    }
1408
1409#if YYDEBUG != 0
1410  if (yydebug)
1411    fprintf(stderr, "Entering state %d\n", yystate);
1412#endif
1413
1414  goto yybackup;
1415 yybackup:
1416
1417/* Do appropriate processing given the current state.  */
1418/* Read a lookahead token if we need one and don't already have one.  */
1419/* yyresume: */
1420
1421  /* First try to decide what to do without reference to lookahead token.  */
1422
1423  yyn = yypact[yystate];
1424  if (yyn == YYFLAG)
1425    goto yydefault;
1426
1427  /* Not known => get a lookahead token if don't already have one.  */
1428
1429  /* yychar is either YYEMPTY or YYEOF
1430     or a valid token in external form.  */
1431
1432  if (yychar == YYEMPTY)
1433    {
1434#if YYDEBUG != 0
1435      if (yydebug)
1436        fprintf(stderr, "Reading a token: ");
1437#endif
1438      yychar = YYLEX;
1439    }
1440
1441  /* Convert token to internal form (in yychar1) for indexing tables with */
1442
1443  if (yychar <= 0)              /* This means end of input. */
1444    {
1445      yychar1 = 0;
1446      yychar = YYEOF;           /* Don't call YYLEX any more */
1447
1448#if YYDEBUG != 0
1449      if (yydebug)
1450        fprintf(stderr, "Now at end of input.\n");
1451#endif
1452    }
1453  else
1454    {
1455      yychar1 = YYTRANSLATE(yychar);
1456
1457#if YYDEBUG != 0
1458      if (yydebug)
1459        {
1460          fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
1461          /* Give the individual parser a way to print the precise meaning
1462             of a token, for further debugging info.  */
1463#ifdef YYPRINT
1464          YYPRINT (stderr, yychar, yylval);
1465#endif
1466          fprintf (stderr, ")\n");
1467        }
1468#endif
1469    }
1470
1471  yyn += yychar1;
1472  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
1473    goto yydefault;
1474
1475  yyn = yytable[yyn];
1476
1477  /* yyn is what to do for this token type in this state.
1478     Negative => reduce, -yyn is rule number.
1479     Positive => shift, yyn is new state.
1480       New state is final state => don't bother to shift,
1481       just return success.
1482     0, or most negative number => error.  */
1483
1484  if (yyn < 0)
1485    {
1486      if (yyn == YYFLAG)
1487        goto yyerrlab;
1488      yyn = -yyn;
1489      goto yyreduce;
1490    }
1491  else if (yyn == 0)
1492    goto yyerrlab;
1493
1494  if (yyn == YYFINAL)
1495    YYACCEPT;
1496
1497  /* Shift the lookahead token.  */
1498
1499#if YYDEBUG != 0
1500  if (yydebug)
1501    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
1502#endif
1503
1504  /* Discard the token being shifted unless it is eof.  */
1505  if (yychar != YYEOF)
1506    yychar = YYEMPTY;
1507
1508  *++yyvsp = yylval;
1509#ifdef YYLSP_NEEDED
1510  *++yylsp = yylloc;
1511#endif
1512
1513  /* count tokens shifted since error; after three, turn off error status.  */
1514  if (yyerrstatus) yyerrstatus--;
1515
1516  yystate = yyn;
1517  goto yynewstate;
1518
1519/* Do the default action for the current state.  */
1520yydefault:
1521
1522  yyn = yydefact[yystate];
1523  if (yyn == 0)
1524    goto yyerrlab;
1525
1526/* Do a reduction.  yyn is the number of a rule to reduce with.  */
1527yyreduce:
1528  yylen = yyr2[yyn];
1529  if (yylen > 0)
1530    yyval = yyvsp[1-yylen]; /* implement default value of the action */
1531
1532#if YYDEBUG != 0
1533  if (yydebug)
1534    {
1535      int i;
1536
1537      fprintf (stderr, "Reducing via rule %d (line %d), ",
1538               yyn, yyrline[yyn]);
1539
1540      /* Print the symbols being reduced, and their result.  */
1541      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
1542        fprintf (stderr, "%s ", yytname[yyrhs[i]]);
1543      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
1544    }
1545#endif
1546
1547
1548  switch (yyn) {
1549
1550case 2:
1551#line 364 "grammar.y"
1552{
1553            if (timerv)
1554            {
1555              writeTime("used time:");
1556              startTimer();
1557            }
1558            #ifdef HAVE_RTIMER
1559            if (rtimerv)
1560            {
1561              writeRTime("used real time:");
1562              startRTimer();
1563            }
1564            #endif
1565            prompt_char = '>';
1566#ifdef HAVE_SDB
1567            if (sdb_flags & 2) { sdb_flags=1; YYERROR; }
1568#endif
1569            if(siCntrlc)
1570            {
1571              siCntrlc=FALSE;
1572              MYYERROR("abort...");
1573            }
1574            if (errorreported)
1575            {
1576              yyerror("");
1577            }
1578            if (inerror==2) PrintLn();
1579            errorreported = inerror = cmdtok = 0;
1580            lastreserved = currid = NULL;
1581            expected_parms = siCntrlc = FALSE;
1582          ;
1583    break;}
1584case 4:
1585#line 400 "grammar.y"
1586{currentVoice->ifsw=0;;
1587    break;}
1588case 5:
1589#line 402 "grammar.y"
1590{ yyvsp[-1].lv.CleanUp(); currentVoice->ifsw=0;;
1591    break;}
1592case 6:
1593#line 404 "grammar.y"
1594{
1595            YYACCEPT;
1596          ;
1597    break;}
1598case 7:
1599#line 408 "grammar.y"
1600{
1601            currentVoice->ifsw=0;
1602            iiDebug();
1603          ;
1604    break;}
1605case 8:
1606#line 413 "grammar.y"
1607{currentVoice->ifsw=0;;
1608    break;}
1609case 9:
1610#line 415 "grammar.y"
1611{
1612            #ifdef SIQ
1613            siq=0;
1614            #endif
1615            yyInRingConstruction = FALSE;
1616            currentVoice->ifsw=0;
1617            if (inerror)
1618            {
1619              if ((inerror!=3) && (yyvsp[-1].i<UMINUS) && (yyvsp[-1].i>' '))
1620              {
1621                // 1: yyerror called
1622                // 2: scanner put actual string
1623                // 3: error rule put token+\n
1624                inerror=3;
1625                Print(" error at token `%s`\n",iiTwoOps(yyvsp[-1].i));
1626              }
1627            }
1628            if (!errorreported) WerrorS("...parse error");
1629            yyerror("");
1630            yyerrok;
1631#ifdef HAVE_SDB
1632            if ((sdb_flags & 1) && currentVoice->pi!=NULL)
1633            {
1634              currentVoice->pi->trace_flag |=1;
1635            }
1636            else
1637#endif
1638            if (myynest>0)
1639            {
1640              feBufferTypes t=currentVoice->Typ();
1641              //PrintS("leaving yyparse\n");
1642              exitBuffer(BT_proc);
1643              if (t==BT_example)
1644                YYACCEPT;
1645              else
1646                YYABORT;
1647            }
1648            else if (currentVoice->prev!=NULL)
1649            {
1650              exitVoice();
1651            }
1652#ifdef HAVE_SDB
1653            if (sdb_flags &2) sdb_flags=1;
1654#endif
1655          ;
1656    break;}
1657case 17:
1658#line 470 "grammar.y"
1659{currentVoice->ifsw=0;;
1660    break;}
1661case 18:
1662#line 473 "grammar.y"
1663{ omFree((ADDRESS)yyvsp[0].name); ;
1664    break;}
1665case 28:
1666#line 488 "grammar.y"
1667{
1668            if(iiAssign(&yyvsp[-1].lv,&yyvsp[0].lv)) YYERROR;
1669          ;
1670    break;}
1671case 29:
1672#line 495 "grammar.y"
1673{
1674            if (currRing==NULL) MYYERROR("no ring active");
1675            syMake(&yyval.lv,omStrDup(yyvsp[0].name));
1676          ;
1677    break;}
1678case 30:
1679#line 500 "grammar.y"
1680{
1681            syMake(&yyval.lv,yyvsp[0].name);
1682          ;
1683    break;}
1684case 31:
1685#line 504 "grammar.y"
1686{
1687            if(iiExprArith2(&yyval.lv, &yyvsp[-2].lv, COLONCOLON, &yyvsp[0].lv)) YYERROR;
1688          ;
1689    break;}
1690case 32:
1691#line 508 "grammar.y"
1692{
1693            if(iiExprArith1(&yyval.lv,&yyvsp[-2].lv,'(')) YYERROR;
1694          ;
1695    break;}
1696case 33:
1697#line 512 "grammar.y"
1698{
1699            if (yyvsp[-3].lv.rtyp==LIB_CMD)
1700            {
1701              if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,LIB_CMD)) YYERROR;
1702            }
1703            else
1704            {
1705              if (yyvsp[-3].lv.Typ()==UNKNOWN)
1706              {
1707                if(iiExprArith2(&yyval.lv,&yyvsp[-3].lv,'(',&yyvsp[-1].lv)) YYERROR;
1708              }
1709              else
1710              {
1711                yyvsp[-3].lv.next=(leftv)omAllocBin(sleftv_bin);
1712                memcpy(yyvsp[-3].lv.next,&yyvsp[-1].lv,sizeof(sleftv));
1713                if(iiExprArithM(&yyval.lv,&yyvsp[-3].lv,'(')) YYERROR;
1714              }
1715            }
1716          ;
1717    break;}
1718case 34:
1719#line 532 "grammar.y"
1720{
1721            if (currRingHdl==NULL) MYYERROR("no ring active");
1722            int j = 0;
1723            memset(&yyval.lv,0,sizeof(sleftv));
1724            yyval.lv.rtyp=VECTOR_CMD;
1725            leftv v = &yyvsp[-1].lv;
1726            while (v!=NULL)
1727            {
1728              int i,t;
1729              sleftv tmp;
1730              memset(&tmp,0,sizeof(tmp));
1731              i=iiTestConvert((t=v->Typ()),POLY_CMD);
1732              if((i==0) || (iiConvert(t /*v->Typ()*/,POLY_CMD,i,v,&tmp)))
1733              {
1734                pDelete((poly *)&yyval.lv.data);
1735                yyvsp[-1].lv.CleanUp();
1736                MYYERROR("expected '[poly,...'");
1737              }
1738              poly p = (poly)tmp.CopyD(POLY_CMD);
1739              pSetCompP(p,++j);
1740              yyval.lv.data = (void *)pAdd((poly)yyval.lv.data,p);
1741              v->next=tmp.next;tmp.next=NULL;
1742              tmp.CleanUp();
1743              v=v->next;
1744            }
1745            yyvsp[-1].lv.CleanUp();
1746          ;
1747    break;}
1748case 35:
1749#line 560 "grammar.y"
1750{
1751            memset(&yyval.lv,0,sizeof(yyval.lv));
1752            int i = atoi(yyvsp[0].name);
1753            /*remember not to omFree($1)
1754            *because it is a part of the scanner buffer*/
1755            yyval.lv.rtyp  = INT_CMD;
1756            yyval.lv.data = (void *)i;
1757
1758            /* check: out of range input */
1759            int l = strlen(yyvsp[0].name)+2;
1760            if (l >= MAX_INT_LEN)
1761            {
1762              char tmp[MAX_INT_LEN+5];
1763              sprintf(tmp,"%d",i);
1764              if (strcmp(tmp,yyvsp[0].name)!=0)
1765              {
1766                if (currRing==NULL)
1767                {
1768                  Werror("`%s` greater than %d(max. integer representation)"
1769                         ,yyvsp[0].name,MAX_INT_VAL);
1770                  YYERROR;
1771                }
1772                char *t1=omStrDup(yyvsp[0].name);
1773                syMake(&yyval.lv,t1);
1774              }
1775            }
1776          ;
1777    break;}
1778case 36:
1779#line 588 "grammar.y"
1780{
1781            memset(&yyval.lv,0,sizeof(yyval.lv));
1782            yyval.lv.rtyp = yyvsp[0].i;
1783            yyval.lv.data = yyval.lv.Data();
1784          ;
1785    break;}
1786case 37:
1787#line 594 "grammar.y"
1788{
1789            memset(&yyval.lv,0,sizeof(yyval.lv));
1790            yyval.lv.rtyp  = STRING_CMD;
1791            yyval.lv.data = yyvsp[0].name;
1792          ;
1793    break;}
1794case 38:
1795#line 603 "grammar.y"
1796{
1797            leftv v = &yyvsp[-2].lv;
1798            while (v->next!=NULL)
1799            {
1800              v=v->next;
1801            }
1802            v->next = (leftv)omAllocBin(sleftv_bin);
1803            memcpy(v->next,&(yyvsp[0].lv),sizeof(sleftv));
1804            yyval.lv = yyvsp[-2].lv;
1805          ;
1806    break;}
1807case 39:
1808#line 614 "grammar.y"
1809{
1810            yyval.lv = yyvsp[0].lv;
1811          ;
1812    break;}
1813case 40:
1814#line 620 "grammar.y"
1815{
1816            /*if ($1.typ == eunknown) YYERROR;*/
1817            yyval.lv = yyvsp[0].lv;
1818          ;
1819    break;}
1820case 41:
1821#line 624 "grammar.y"
1822{ yyval.lv = yyvsp[0].lv; ;
1823    break;}
1824case 42:
1825#line 625 "grammar.y"
1826{ yyval.lv = yyvsp[-1].lv; ;
1827    break;}
1828case 43:
1829#line 627 "grammar.y"
1830{
1831            if(iiExprArith3(&yyval.lv,'[',&yyvsp[-5].lv,&yyvsp[-3].lv,&yyvsp[-1].lv)) YYERROR;
1832          ;
1833    break;}
1834case 44:
1835#line 631 "grammar.y"
1836{
1837            if(iiExprArith2(&yyval.lv,&yyvsp[-3].lv,'[',&yyvsp[-1].lv)) YYERROR;
1838          ;
1839    break;}
1840case 45:
1841#line 635 "grammar.y"
1842{
1843            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,yyvsp[-3].i)) YYERROR;
1844          ;
1845    break;}
1846case 46:
1847#line 639 "grammar.y"
1848{
1849            if(iiExprArithM(&yyval.lv,&yyvsp[-1].lv,yyvsp[-3].i)) YYERROR;
1850          ;
1851    break;}
1852case 47:
1853#line 643 "grammar.y"
1854{
1855            if(iiExprArithM(&yyval.lv,NULL,yyvsp[-2].i)) YYERROR;
1856          ;
1857    break;}
1858case 48:
1859#line 647 "grammar.y"
1860{
1861            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,yyvsp[-3].i)) YYERROR;
1862          ;
1863    break;}
1864case 49:
1865#line 651 "grammar.y"
1866{
1867            if(iiExprArithM(&yyval.lv,&yyvsp[-1].lv,yyvsp[-3].i)) YYERROR;
1868          ;
1869    break;}
1870case 50:
1871#line 655 "grammar.y"
1872{
1873            if(iiExprArithM(&yyval.lv,NULL,yyvsp[-2].i)) YYERROR;
1874          ;
1875    break;}
1876case 51:
1877#line 659 "grammar.y"
1878{
1879            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,yyvsp[-3].i)) YYERROR;
1880          ;
1881    break;}
1882case 52:
1883#line 663 "grammar.y"
1884{
1885            if(iiExprArith2(&yyval.lv,&yyvsp[-3].lv,yyvsp[-5].i,&yyvsp[-1].lv,TRUE)) YYERROR;
1886          ;
1887    break;}
1888case 53:
1889#line 667 "grammar.y"
1890{
1891            if(iiExprArith3(&yyval.lv,yyvsp[-7].i,&yyvsp[-5].lv,&yyvsp[-3].lv,&yyvsp[-1].lv)) YYERROR;
1892          ;
1893    break;}
1894case 54:
1895#line 671 "grammar.y"
1896{
1897            if(iiExprArith2(&yyval.lv,&yyvsp[-3].lv,yyvsp[-5].i,&yyvsp[-1].lv,TRUE)) YYERROR;
1898          ;
1899    break;}
1900case 55:
1901#line 675 "grammar.y"
1902{
1903            if(iiExprArith3(&yyval.lv,yyvsp[-7].i,&yyvsp[-5].lv,&yyvsp[-3].lv,&yyvsp[-1].lv)) YYERROR;
1904          ;
1905    break;}
1906case 56:
1907#line 679 "grammar.y"
1908{
1909            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,yyvsp[-3].i)) YYERROR;
1910          ;
1911    break;}
1912case 57:
1913#line 683 "grammar.y"
1914{
1915            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,yyvsp[-3].i)) YYERROR;
1916          ;
1917    break;}
1918case 58:
1919#line 687 "grammar.y"
1920{
1921            if(iiExprArith2(&yyval.lv,&yyvsp[-3].lv,yyvsp[-5].i,&yyvsp[-1].lv,TRUE)) YYERROR;
1922          ;
1923    break;}
1924case 59:
1925#line 691 "grammar.y"
1926{
1927            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,yyvsp[-3].i)) YYERROR;
1928          ;
1929    break;}
1930case 60:
1931#line 695 "grammar.y"
1932{
1933            if(iiExprArith2(&yyval.lv,&yyvsp[-3].lv,yyvsp[-5].i,&yyvsp[-1].lv,TRUE)) YYERROR;
1934          ;
1935    break;}
1936case 61:
1937#line 699 "grammar.y"
1938{
1939            if(iiExprArith3(&yyval.lv,yyvsp[-7].i,&yyvsp[-5].lv,&yyvsp[-3].lv,&yyvsp[-1].lv)) YYERROR;
1940          ;
1941    break;}
1942case 62:
1943#line 703 "grammar.y"
1944{
1945            if(iiExprArith3(&yyval.lv,yyvsp[-7].i,&yyvsp[-5].lv,&yyvsp[-3].lv,&yyvsp[-1].lv)) YYERROR;
1946          ;
1947    break;}
1948case 63:
1949#line 707 "grammar.y"
1950{
1951            if(iiExprArithM(&yyval.lv,NULL,yyvsp[-2].i)) YYERROR;
1952          ;
1953    break;}
1954case 64:
1955#line 711 "grammar.y"
1956{
1957            if(iiExprArithM(&yyval.lv,&yyvsp[-1].lv,yyvsp[-3].i)) YYERROR;
1958          ;
1959    break;}
1960case 65:
1961#line 715 "grammar.y"
1962{
1963            if(iiExprArith3(&yyval.lv,MATRIX_CMD,&yyvsp[-5].lv,&yyvsp[-3].lv,&yyvsp[-1].lv)) YYERROR;
1964          ;
1965    break;}
1966case 66:
1967#line 719 "grammar.y"
1968{
1969            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,MATRIX_CMD)) YYERROR;
1970          ;
1971    break;}
1972case 67:
1973#line 723 "grammar.y"
1974{
1975            if(iiExprArith3(&yyval.lv,INTMAT_CMD,&yyvsp[-5].lv,&yyvsp[-3].lv,&yyvsp[-1].lv)) YYERROR;
1976          ;
1977    break;}
1978case 68:
1979#line 727 "grammar.y"
1980{
1981            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,INTMAT_CMD)) YYERROR;
1982          ;
1983    break;}
1984case 69:
1985#line 731 "grammar.y"
1986{
1987            if(iiExprArith3(&yyval.lv,RING_CMD,&yyvsp[-5].lv,&yyvsp[-3].lv,&yyvsp[-1].lv)) YYERROR;
1988          ;
1989    break;}
1990case 70:
1991#line 735 "grammar.y"
1992{
1993            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,RING_CMD)) YYERROR;
1994          ;
1995    break;}
1996case 71:
1997#line 739 "grammar.y"
1998{
1999            yyval.lv=yyvsp[-1].lv;
2000          ;
2001    break;}
2002case 72:
2003#line 743 "grammar.y"
2004{
2005            #ifdef SIQ
2006            siq++;
2007            if (siq>0)
2008            { if (iiExprArith2(&yyval.lv,&yyvsp[-3].lv,'=',&yyvsp[-1].lv)) YYERROR; }
2009            else
2010            #endif
2011            {
2012              memset(&yyval.lv,0,sizeof(yyval.lv));
2013              yyval.lv.rtyp=NONE;
2014              if (iiAssign(&yyvsp[-3].lv,&yyvsp[-1].lv)) YYERROR;
2015            }
2016            #ifdef SIQ
2017            siq--;
2018            #endif
2019          ;
2020    break;}
2021case 73:
2022#line 760 "grammar.y"
2023{
2024            #ifdef SIQ
2025            siq--;
2026            #endif
2027          ;
2028    break;}
2029case 74:
2030#line 766 "grammar.y"
2031{
2032            #ifdef SIQ
2033            if (siq<=0) yyvsp[-1].lv.Eval();
2034            #endif
2035            yyval.lv=yyvsp[-1].lv;
2036            #ifdef SIQ
2037            siq++;
2038            #endif
2039          ;
2040    break;}
2041case 75:
2042#line 778 "grammar.y"
2043{
2044            #ifdef SIQ
2045            siq++;
2046            #endif
2047          ;
2048    break;}
2049case 76:
2050#line 786 "grammar.y"
2051{
2052            #ifdef SIQ
2053            siq--;
2054            #endif
2055          ;
2056    break;}
2057case 77:
2058#line 795 "grammar.y"
2059{
2060            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,PLUSPLUS)) YYERROR;
2061          ;
2062    break;}
2063case 78:
2064#line 799 "grammar.y"
2065{
2066            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,MINUSMINUS)) YYERROR;
2067          ;
2068    break;}
2069case 79:
2070#line 803 "grammar.y"
2071{
2072            if(iiExprArith2(&yyval.lv,&yyvsp[-2].lv,'+',&yyvsp[0].lv)) YYERROR;
2073          ;
2074    break;}
2075case 80:
2076#line 807 "grammar.y"
2077{
2078            if(iiExprArith2(&yyval.lv,&yyvsp[-2].lv,'-',&yyvsp[0].lv)) YYERROR;
2079          ;
2080    break;}
2081case 81:
2082#line 811 "grammar.y"
2083{
2084            if(iiExprArith2(&yyval.lv,&yyvsp[-2].lv,yyvsp[-1].i,&yyvsp[0].lv)) YYERROR;
2085          ;
2086    break;}
2087case 82:
2088#line 815 "grammar.y"
2089{
2090            if(iiExprArith2(&yyval.lv,&yyvsp[-2].lv,'^',&yyvsp[0].lv)) YYERROR;
2091          ;
2092    break;}
2093case 83:
2094#line 819 "grammar.y"
2095{
2096            if(iiExprArith2(&yyval.lv,&yyvsp[-2].lv,yyvsp[-1].i,&yyvsp[0].lv)) YYERROR;
2097          ;
2098    break;}
2099case 84:
2100#line 823 "grammar.y"
2101{
2102            if(iiExprArith2(&yyval.lv,&yyvsp[-2].lv,yyvsp[-1].i,&yyvsp[0].lv)) YYERROR;
2103          ;
2104    break;}
2105case 85:
2106#line 827 "grammar.y"
2107{
2108            if(iiExprArith2(&yyval.lv,&yyvsp[-2].lv,NOTEQUAL,&yyvsp[0].lv)) YYERROR;
2109          ;
2110    break;}
2111case 86:
2112#line 831 "grammar.y"
2113{
2114            if(iiExprArith2(&yyval.lv,&yyvsp[-2].lv,EQUAL_EQUAL,&yyvsp[0].lv)) YYERROR;
2115          ;
2116    break;}
2117case 87:
2118#line 835 "grammar.y"
2119{
2120            if(iiExprArith2(&yyval.lv,&yyvsp[-2].lv,DOTDOT,&yyvsp[0].lv)) YYERROR;
2121          ;
2122    break;}
2123case 88:
2124#line 839 "grammar.y"
2125{
2126            memset(&yyval.lv,0,sizeof(yyval.lv));
2127            int i; TESTSETINT(yyvsp[0].lv,i);
2128            yyval.lv.rtyp  = INT_CMD;
2129            yyval.lv.data = (void *)(i == 0 ? 1 : 0);
2130          ;
2131    break;}
2132case 89:
2133#line 846 "grammar.y"
2134{
2135            if(iiExprArith1(&yyval.lv,&yyvsp[0].lv,'-')) YYERROR;
2136          ;
2137    break;}
2138case 90:
2139#line 852 "grammar.y"
2140{ yyval.lv = yyvsp[-1].lv; ;
2141    break;}
2142case 91:
2143#line 854 "grammar.y"
2144{
2145            if (yyvsp[-1].lv.rtyp==0)
2146            {
2147              Werror("`%s` is undefined",yyvsp[-1].lv.Fullname());
2148              YYERROR;
2149            }
2150            yyval.lv = yyvsp[-1].lv;
2151          ;
2152    break;}
2153case 93:
2154#line 868 "grammar.y"
2155{
2156            if (yyvsp[-1].lv.Typ()!=STRING_CMD)
2157            {
2158              MYYERROR("string expression expected");
2159            }
2160            yyval.name = (char *)yyvsp[-1].lv.CopyD(STRING_CMD);
2161            yyvsp[-1].lv.CleanUp();
2162          ;
2163    break;}
2164case 96:
2165#line 885 "grammar.y"
2166{
2167            #ifdef HAVE_NS
2168            if (iiDeclCommand(&yyval.lv,&yyvsp[0].lv,myynest,yyvsp[-1].i,&(yyvsp[0].lv.req_packhdl->idroot)))
2169              YYERROR;
2170            #else
2171            if (iiDeclCommand(&yyval.lv,&yyvsp[0].lv,myynest,yyvsp[-1].i,&IDROOT)) YYERROR;
2172            #endif
2173          ;
2174    break;}
2175case 97:
2176#line 894 "grammar.y"
2177{
2178            #ifdef HAVE_NS
2179            if (iiDeclCommand(&yyval.lv,&yyvsp[0].lv,myynest,yyvsp[-1].i,&(yyvsp[0].lv.req_packhdl->idroot)))
2180              YYERROR;
2181            #else
2182            if (iiDeclCommand(&yyval.lv,&yyvsp[0].lv,myynest,yyvsp[-1].i,&IDROOT)) YYERROR;
2183            #endif
2184          ;
2185    break;}
2186case 98:
2187#line 903 "grammar.y"
2188{
2189            if (iiDeclCommand(&yyval.lv,&yyvsp[0].lv,myynest,yyvsp[-1].i,&(currRing->idroot), TRUE)) YYERROR;
2190          ;
2191    break;}
2192case 99:
2193#line 907 "grammar.y"
2194{
2195            if (iiDeclCommand(&yyval.lv,&yyvsp[0].lv,myynest,yyvsp[-1].i,&(currRing->idroot), TRUE)) YYERROR;
2196          ;
2197    break;}
2198case 100:
2199#line 911 "grammar.y"
2200{
2201            if (iiDeclCommand(&yyval.lv,&yyvsp[-6].lv,myynest,yyvsp[-7].i,&(currRing->idroot), TRUE)) YYERROR;
2202            int r; TESTSETINT(yyvsp[-4].lv,r);
2203            int c; TESTSETINT(yyvsp[-1].lv,c);
2204            if (r < 1)
2205              MYYERROR("rows must be greater than 0");
2206            if (c < 0)
2207              MYYERROR("cols must be greater than -1");
2208            leftv v=&yyval.lv;
2209            //while (v->next!=NULL) { v=v->next; }
2210            idhdl h=(idhdl)v->data;
2211            idDelete(&IDIDEAL(h));
2212            IDMATRIX(h) = mpNew(r,c);
2213            if (IDMATRIX(h)==NULL) YYERROR;
2214          ;
2215    break;}
2216case 101:
2217#line 927 "grammar.y"
2218{
2219            if (iiDeclCommand(&yyval.lv,&yyvsp[0].lv,myynest,yyvsp[-1].i,&(currRing->idroot), TRUE)) YYERROR;
2220          ;
2221    break;}
2222case 102:
2223#line 931 "grammar.y"
2224{
2225            int r; TESTSETINT(yyvsp[-4].lv,r);
2226            int c; TESTSETINT(yyvsp[-1].lv,c);
2227            if (r < 1)
2228              MYYERROR("rows must be greater than 0");
2229            if (c < 0)
2230              MYYERROR("cols must be greater than -1");
2231            #ifdef HAVE_NS
2232            if (iiDeclCommand(&yyval.lv,&yyvsp[-6].lv,myynest,yyvsp[-7].i,&(yyvsp[-6].lv.req_packhdl->idroot)))
2233              YYERROR;
2234            #else
2235            if (iiDeclCommand(&yyval.lv,&yyvsp[-6].lv,myynest,yyvsp[-7].i,&IDROOT)) YYERROR;
2236            #endif
2237            leftv v=&yyval.lv;
2238            idhdl h=(idhdl)v->data;
2239            delete IDINTVEC(h);
2240            IDINTVEC(h) = new intvec(r,c,0);
2241            if (IDINTVEC(h)==NULL) YYERROR;
2242          ;
2243    break;}
2244case 103:
2245#line 951 "grammar.y"
2246{
2247            #ifdef HAVE_NS
2248            if (iiDeclCommand(&yyval.lv,&yyvsp[0].lv,myynest,yyvsp[-1].i,&(yyvsp[0].lv.req_packhdl->idroot)))
2249              YYERROR;
2250            #else
2251            if (iiDeclCommand(&yyval.lv,&yyvsp[0].lv,myynest,yyvsp[-1].i,&IDROOT)) YYERROR;
2252            #endif
2253            leftv v=&yyval.lv;
2254            idhdl h;
2255            do
2256            {
2257               h=(idhdl)v->data;
2258               delete IDINTVEC(h);
2259               IDINTVEC(h) = new intvec(1,1,0);
2260               v=v->next;
2261            } while (v!=NULL);
2262          ;
2263    break;}
2264case 104:
2265#line 969 "grammar.y"
2266{
2267            int t=yyvsp[-2].lv.Typ();
2268            sleftv r;
2269            memset(&r,0,sizeof(sleftv));
2270            if ((BEGIN_RING<t) && (t<END_RING))
2271            {
2272              if (iiDeclCommand(&r,&yyvsp[0].lv,myynest,t,&(currRing->idroot), TRUE))
2273                YYERROR;
2274            }
2275            else
2276            {
2277              #ifdef HAVE_NS
2278              if (iiDeclCommand(&r,&yyvsp[0].lv,myynest,t,&(yyvsp[0].lv.req_packhdl->idroot)))
2279                YYERROR;
2280              #else
2281              if (iiDeclCommand(&r,&yyvsp[0].lv,myynest,t,&IDROOT)) YYERROR;
2282              #endif
2283            }
2284            leftv v=&yyvsp[-2].lv;
2285            while (v->next!=NULL) v=v->next;
2286            v->next=(leftv)omAllocBin(sleftv_bin);
2287            memcpy(v->next,&r,sizeof(sleftv));
2288            yyval.lv=yyvsp[-2].lv;
2289          ;
2290    break;}
2291case 105:
2292#line 994 "grammar.y"
2293{
2294            #ifdef HAVE_NS
2295            if (iiDeclCommand(&yyval.lv,&yyvsp[0].lv,myynest,yyvsp[-1].i,&(yyvsp[0].lv.req_packhdl->idroot)))
2296              YYERROR;
2297            #else
2298            if (iiDeclCommand(&yyval.lv,&yyvsp[0].lv,myynest,yyvsp[-1].i,&IDROOT)) YYERROR;
2299            #endif
2300          ;
2301    break;}
2302case 108:
2303#line 1011 "grammar.y"
2304{
2305            leftv v = &yyvsp[-3].lv;
2306            while (v->next!=NULL)
2307            {
2308              v=v->next;
2309            }
2310            v->next = (leftv)omAllocBin(sleftv_bin);
2311            memcpy(v->next,&(yyvsp[-1].lv),sizeof(sleftv));
2312            yyval.lv = yyvsp[-3].lv;
2313          ;
2314    break;}
2315case 109:
2316#line 1025 "grammar.y"
2317{
2318          // let rInit take care of any errors
2319          yyval.i=rOrderName(yyvsp[0].name);
2320        ;
2321    break;}
2322case 110:
2323#line 1033 "grammar.y"
2324{
2325            memset(&yyval.lv,0,sizeof(yyval.lv));
2326            intvec *iv = new intvec(2);
2327            (*iv)[0] = 1;
2328            (*iv)[1] = yyvsp[0].i;
2329            yyval.lv.rtyp = INTVEC_CMD;
2330            yyval.lv.data = (void *)iv;
2331          ;
2332    break;}
2333case 111:
2334#line 1042 "grammar.y"
2335{
2336            memset(&yyval.lv,0,sizeof(yyval.lv));
2337            leftv sl = &yyvsp[-1].lv;
2338            int slLength;
2339            {
2340              slLength =  exprlist_length(sl);
2341              int l = 2 +  slLength;
2342              intvec *iv = new intvec(l);
2343              (*iv)[0] = slLength;
2344              (*iv)[1] = yyvsp[-3].i;
2345
2346              int i = 2;
2347              while ((i<l) && (sl!=NULL))
2348              {
2349                if (sl->Typ() == INT_CMD)
2350                {
2351                  (*iv)[i++] = (int)((long)(sl->Data()));
2352                }
2353                else if ((sl->Typ() == INTVEC_CMD)
2354                ||(sl->Typ() == INTMAT_CMD))
2355                {
2356                  intvec *ivv = (intvec *)(sl->Data());
2357                  int ll = 0,l = ivv->length();
2358                  for (; l>0; l--)
2359                  {
2360                    (*iv)[i++] = (*ivv)[ll++];
2361                  }
2362                }
2363                else
2364                {
2365                  delete iv;
2366                  yyvsp[-1].lv.CleanUp();
2367                  MYYERROR("wrong type in ordering");
2368                }
2369                sl = sl->next;
2370              }
2371              yyval.lv.rtyp = INTVEC_CMD;
2372              yyval.lv.data = (void *)iv;
2373            }
2374            yyvsp[-1].lv.CleanUp();
2375          ;
2376    break;}
2377case 113:
2378#line 1088 "grammar.y"
2379{
2380            yyval.lv = yyvsp[-2].lv;
2381            yyval.lv.next = (sleftv *)omAllocBin(sleftv_bin);
2382            memcpy(yyval.lv.next,&yyvsp[0].lv,sizeof(sleftv));
2383          ;
2384    break;}
2385case 115:
2386#line 1098 "grammar.y"
2387{
2388            yyval.lv = yyvsp[-1].lv;
2389          ;
2390    break;}
2391case 116:
2392#line 1104 "grammar.y"
2393{
2394            expected_parms = TRUE;
2395          ;
2396    break;}
2397case 117:
2398#line 1116 "grammar.y"
2399{ if (yyvsp[-1].i != '<') YYERROR;
2400            if((feFilePending=feFopen(yyvsp[0].name,"r",NULL,TRUE))==NULL) YYERROR; ;
2401    break;}
2402case 118:
2403#line 1119 "grammar.y"
2404{ newFile(yyvsp[-2].name,feFilePending); ;
2405    break;}
2406case 119:
2407#line 1124 "grammar.y"
2408{
2409            feHelp(yyvsp[-1].name);
2410            omFree((ADDRESS)yyvsp[-1].name);
2411          ;
2412    break;}
2413case 120:
2414#line 1129 "grammar.y"
2415{
2416            feHelp(NULL);
2417          ;
2418    break;}
2419case 121:
2420#line 1136 "grammar.y"
2421{
2422            singular_example(yyvsp[-1].name);
2423            omFree((ADDRESS)yyvsp[-1].name);
2424          ;
2425    break;}
2426case 122:
2427#line 1144 "grammar.y"
2428{
2429#ifdef HAVE_NS
2430          if (basePack!=yyvsp[0].lv.req_packhdl)
2431          {
2432            if(iiExport(&yyvsp[0].lv,0,currPackHdl)) YYERROR;
2433          }
2434          else
2435#endif /* HAVE_NS */
2436            if (iiExport(&yyvsp[0].lv,0)) YYERROR;
2437        ;
2438    break;}
2439case 123:
2440#line 1158 "grammar.y"
2441{
2442          leftv v=&yyvsp[0].lv;
2443          if (v->rtyp!=IDHDL)
2444          {
2445            if (v->name!=NULL)
2446            {
2447               Werror("`%s` is undefined in kill",v->name);
2448            }
2449            else               WerrorS("kill what ?");
2450          }
2451          else
2452          {
2453            #ifdef HAVE_NS
2454            killhdl((idhdl)v->data,v->req_packhdl);
2455            #else
2456            killhdl((idhdl)v->data);
2457            #endif
2458          }
2459        ;
2460    break;}
2461case 124:
2462#line 1178 "grammar.y"
2463{
2464          leftv v=&yyvsp[0].lv;
2465          if (v->rtyp!=IDHDL)
2466          {
2467            if (v->name!=NULL)
2468            {
2469               Werror("`%s` is undefined in kill",v->name);
2470            }
2471            else               WerrorS("kill what ?");
2472          }
2473          else
2474          {
2475            #ifdef HAVE_NS
2476            killhdl((idhdl)v->data,v->req_packhdl);
2477            #else
2478            killhdl((idhdl)v->data);
2479            #endif
2480          }
2481        ;
2482    break;}
2483case 125:
2484#line 1201 "grammar.y"
2485{
2486            list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
2487          ;
2488    break;}
2489case 126:
2490#line 1205 "grammar.y"
2491{
2492            list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
2493          ;
2494    break;}
2495case 127:
2496#line 1209 "grammar.y"
2497{
2498            if (yyvsp[-1].i==QRING_CMD) yyvsp[-1].i=RING_CMD;
2499            list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
2500          ;
2501    break;}
2502case 128:
2503#line 1214 "grammar.y"
2504{
2505            list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
2506          ;
2507    break;}
2508case 129:
2509#line 1218 "grammar.y"
2510{
2511            list_cmd(RING_CMD,NULL,"// ",TRUE);
2512          ;
2513    break;}
2514case 130:
2515#line 1222 "grammar.y"
2516{
2517            list_cmd(MATRIX_CMD,NULL,"// ",TRUE);
2518           ;
2519    break;}
2520case 131:
2521#line 1226 "grammar.y"
2522{
2523            list_cmd(INTMAT_CMD,NULL,"// ",TRUE);
2524          ;
2525    break;}
2526case 132:
2527#line 1230 "grammar.y"
2528{
2529            list_cmd(PROC_CMD,NULL,"// ",TRUE);
2530          ;
2531    break;}
2532case 133:
2533#line 1234 "grammar.y"
2534{
2535            list_cmd(0,yyvsp[-1].lv.Fullname(),"// ",TRUE);
2536            yyvsp[-1].lv.CleanUp();
2537          ;
2538    break;}
2539case 134:
2540#line 1239 "grammar.y"
2541{
2542#ifdef HAVE_NS
2543            //PrintS("?????\n");
2544            if(yyvsp[-3].lv.Typ() == PACKAGE_CMD)
2545              list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
2546#endif /* HAVE_NS */
2547            yyvsp[-3].lv.CleanUp();
2548          ;
2549    break;}
2550case 135:
2551#line 1248 "grammar.y"
2552{
2553#ifdef HAVE_NS
2554            //PrintS("?????\n");
2555            if(yyvsp[-3].lv.Typ() == PACKAGE_CMD)
2556              list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
2557#endif /* HAVE_NS */
2558            yyvsp[-3].lv.CleanUp();
2559          ;
2560    break;}
2561case 136:
2562#line 1257 "grammar.y"
2563{
2564#ifdef HAVE_NS
2565            //PrintS("?????\n");
2566            if(yyvsp[-3].lv.Typ() == PACKAGE_CMD)
2567              list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
2568#endif /* HAVE_NS */
2569            yyvsp[-3].lv.CleanUp();
2570          ;
2571    break;}
2572case 137:
2573#line 1266 "grammar.y"
2574{
2575#ifdef HAVE_NS
2576            //PrintS("?????\n");
2577            if(yyvsp[-3].lv.Typ() == PACKAGE_CMD)
2578              list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
2579#endif /* HAVE_NS */
2580            yyvsp[-3].lv.CleanUp();
2581          ;
2582    break;}
2583case 138:
2584#line 1275 "grammar.y"
2585{
2586#ifdef HAVE_NS
2587            //PrintS("?????\n");
2588            if(yyvsp[-3].lv.Typ() == PACKAGE_CMD)
2589              list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
2590#endif /* HAVE_NS */
2591            yyvsp[-3].lv.CleanUp();
2592          ;
2593    break;}
2594case 139:
2595#line 1284 "grammar.y"
2596{
2597#ifdef HAVE_NS
2598            //PrintS("?????\n");
2599            if(yyvsp[-3].lv.Typ() == PACKAGE_CMD)
2600              list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
2601#endif /* HAVE_NS */
2602            yyvsp[-3].lv.CleanUp();
2603          ;
2604    break;}
2605case 140:
2606#line 1293 "grammar.y"
2607{
2608#ifdef HAVE_NS
2609            //PrintS("?????\n");
2610            if(yyvsp[-3].lv.Typ() == PACKAGE_CMD)
2611              list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
2612#endif /* HAVE_NS */
2613            yyvsp[-3].lv.CleanUp();
2614          ;
2615    break;}
2616case 141:
2617#line 1302 "grammar.y"
2618{
2619#ifdef HAVE_NS
2620            //PrintS("?????\n");
2621            if(yyvsp[-3].lv.Typ() == PACKAGE_CMD)
2622              list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
2623#endif /* HAVE_NS */
2624            yyvsp[-3].lv.CleanUp();
2625          ;
2626    break;}
2627case 142:
2628#line 1320 "grammar.y"
2629{
2630            list_cmd(-1,NULL,"// ",TRUE);
2631          ;
2632    break;}
2633case 143:
2634#line 1326 "grammar.y"
2635{ yyInRingConstruction = TRUE; ;
2636    break;}
2637case 144:
2638#line 1335 "grammar.y"
2639{
2640            BOOLEAN do_pop = FALSE;
2641            char *ring_name = yyvsp[-6].lv.name;
2642            ring b=
2643            rInit(&yyvsp[-4].lv,            /* characteristik and list of parameters*/
2644                  &yyvsp[-2].lv,            /* names of ringvariables */
2645                  &yyvsp[0].lv);            /* ordering */
2646            idhdl newRingHdl=NULL;
2647
2648            if (b!=NULL)
2649            {
2650              #ifdef HAVE_NS
2651                newRingHdl=enterid(ring_name, myynest, RING_CMD, 
2652                                   &(yyvsp[-6].lv.req_packhdl->idroot));
2653              #else
2654                newRingHdl=enterid(ring_name, myynest, RING_CMD, &IDROOT);
2655              #endif
2656              yyvsp[-6].lv.CleanUp();
2657              if (newRingHdl!=NULL)
2658              {
2659                omFreeSize(IDRING(newRingHdl),sizeof(ip_sring));
2660                IDRING(newRingHdl)=b;
2661              }
2662              else
2663              {
2664                rKill(b);
2665              }
2666            }
2667            yyInRingConstruction = FALSE;
2668            if (newRingHdl==NULL)
2669            {
2670              MYYERROR("cannot make ring");
2671            }
2672            else
2673            {
2674              rSetHdl(newRingHdl);
2675            }
2676          ;
2677    break;}
2678case 145:
2679#line 1374 "grammar.y"
2680{
2681            BOOLEAN do_pop = FALSE;
2682            char *ring_name = yyvsp[0].lv.name;
2683            if (!inerror) rDefault(ring_name);
2684            yyInRingConstruction = FALSE;
2685            yyvsp[0].lv.CleanUp();
2686          ;
2687    break;}
2688case 146:
2689#line 1385 "grammar.y"
2690{
2691            if ((yyvsp[-1].i!=LIB_CMD)||(iiLibCmd(yyvsp[0].name,TRUE,TRUE,TRUE)))
2692            //if ($1==LIB_CMD)
2693            //{
2694            //  sleftv tmp;
2695            //  if(iiExprArith1(&tmp,&$2,LIB_CMD)) YYERROR;
2696            //}
2697            //else
2698                YYERROR;
2699          ;
2700    break;}
2701case 149:
2702#line 1401 "grammar.y"
2703{
2704            if ((yyvsp[-1].i==KEEPRING_CMD) && (myynest==0))
2705               MYYERROR("only inside a proc allowed");
2706            const char * n=yyvsp[0].lv.Name();
2707            if (((yyvsp[0].lv.Typ()==RING_CMD)||(yyvsp[0].lv.Typ()==QRING_CMD))
2708            && (yyvsp[0].lv.rtyp==IDHDL))
2709            {
2710              idhdl h=(idhdl)yyvsp[0].lv.data;
2711              if (yyvsp[0].lv.e!=NULL) h=rFindHdl((ring)yyvsp[0].lv.Data(),NULL, NULL);
2712              //Print("setring %s lev %d (ptr:%x)\n",IDID(h),IDLEV(h),IDRING(h));
2713              if (yyvsp[-1].i==KEEPRING_CMD)
2714              {
2715                if (h!=NULL)
2716                {
2717                  if (IDLEV(h)!=0)
2718                  {
2719                    if (iiExport(&yyvsp[0].lv,myynest-1)) YYERROR;
2720#if 1
2721                    //if (TEST_OPT_KEEPVARS)
2722                    //{
2723                      idhdl p=IDRING(h)->idroot;
2724                      idhdl root=p;
2725                      int prevlev=myynest-1;
2726                      while (p!=NULL)
2727                      {
2728                        if (IDLEV(p)==myynest)
2729                        {
2730                          idhdl old=root->get(IDID(p),prevlev);
2731                          if (old!=NULL)
2732                          {
2733                            if (BVERBOSE(V_REDEFINE))
2734                              Warn("redefining %s",IDID(p));
2735                            killhdl2(old,&root,IDRING(h));
2736                            IDRING(h)->idroot=root;
2737                          }
2738                          IDLEV(p)=prevlev;
2739                        }
2740                        p=IDNEXT(p);
2741                      }
2742                      //IDRING(h)->idroot=root;
2743#endif
2744                    //}
2745                  }
2746#ifdef USE_IILOCALRING
2747                  iiLocalRing[myynest-1]=IDRING(h);
2748#endif
2749                  procstack->cRing=IDRING(h);
2750                  procstack->cRingHdl=h;
2751                }
2752                else
2753                {
2754                  Werror("%s is no identifier",n);
2755                  yyvsp[0].lv.CleanUp();
2756                  YYERROR;
2757                }
2758              }
2759              if (h!=NULL) rSetHdl(h);
2760              else
2761              {
2762                Werror("cannot find the name of the basering %s",n);
2763                yyvsp[0].lv.CleanUp();
2764                YYERROR;
2765              }
2766              yyvsp[0].lv.CleanUp();
2767            }
2768            else
2769            {
2770              Werror("%s is no name of a ring/qring",n);
2771              yyvsp[0].lv.CleanUp();
2772              YYERROR;
2773            }
2774          ;
2775    break;}
2776case 150:
2777#line 1477 "grammar.y"
2778{
2779            if (yyvsp[0].lv.rtyp!=IDHDL) MYYERROR("identifier expected");
2780            idhdl h = (idhdl)yyvsp[0].lv.data;
2781            type_cmd(h);
2782          ;
2783    break;}
2784case 151:
2785#line 1483 "grammar.y"
2786{
2787            //Print("typ is %d, rtyp:%d\n",$1.Typ(),$1.rtyp);
2788            #ifdef SIQ
2789            if (yyvsp[0].lv.rtyp!=COMMAND)
2790            {
2791            #endif
2792              if (yyvsp[0].lv.Typ()==UNKNOWN)
2793              {
2794                if (yyvsp[0].lv.name!=NULL)
2795                {
2796                  Werror("`%s` is undefined",yyvsp[0].lv.name);
2797                  omFree((ADDRESS)yyvsp[0].lv.name);
2798                }
2799                YYERROR;
2800              }
2801            #ifdef SIQ
2802            }
2803            #endif
2804            yyvsp[0].lv.Print(&sLastPrinted);
2805            yyvsp[0].lv.CleanUp(currRing);
2806            if (errorreported) YYERROR;
2807          ;
2808    break;}
2809case 152:
2810#line 1512 "grammar.y"
2811{
2812            int i; TESTSETINT(yyvsp[-2].lv,i);
2813            if (i!=0)
2814            {
2815              newBuffer( yyvsp[0].name, BT_if);
2816            }
2817            else
2818            {
2819              omFree((ADDRESS)yyvsp[0].name);
2820              currentVoice->ifsw=1;
2821            }
2822          ;
2823    break;}
2824case 153:
2825#line 1525 "grammar.y"
2826{
2827            if (currentVoice->ifsw==1)
2828            {
2829              currentVoice->ifsw=0;
2830              newBuffer( yyvsp[0].name, BT_else);
2831            }
2832            else
2833            {
2834              if (currentVoice->ifsw!=2)
2835              {
2836                Warn("`else` without `if` in level %d",myynest);
2837              }
2838              omFree((ADDRESS)yyvsp[0].name);
2839            }
2840            currentVoice->ifsw=0;
2841          ;
2842    break;}
2843case 154:
2844#line 1542 "grammar.y"
2845{
2846            int i; TESTSETINT(yyvsp[-2].lv,i);
2847            if (i)
2848            {
2849              if (exitBuffer(BT_break)) YYERROR;
2850            }
2851            currentVoice->ifsw=0;
2852          ;
2853    break;}
2854case 155:
2855#line 1551 "grammar.y"
2856{
2857            if (exitBuffer(BT_break)) YYERROR;
2858            currentVoice->ifsw=0;
2859          ;
2860    break;}
2861case 156:
2862#line 1556 "grammar.y"
2863{
2864            if (contBuffer(BT_break)) YYERROR;
2865            currentVoice->ifsw=0;
2866          ;
2867    break;}
2868case 157:
2869#line 1564 "grammar.y"
2870{
2871            /* -> if(!$2) break; $3; continue;*/
2872            char * s = (char *)omAlloc( strlen(yyvsp[-1].name) + strlen(yyvsp[0].name) + 36);
2873            sprintf(s,"whileif (!(%s)) break;\n%scontinue;\n " ,yyvsp[-1].name,yyvsp[0].name);
2874            newBuffer(s,BT_break);
2875            omFree((ADDRESS)yyvsp[-1].name);
2876            omFree((ADDRESS)yyvsp[0].name);
2877          ;
2878    break;}
2879case 158:
2880#line 1576 "grammar.y"
2881{
2882            /* $2 */
2883            /* if (!$3) break; $5; $4; continue; */
2884            char * s = (char *)omAlloc( strlen(yyvsp[-2].name)+strlen(yyvsp[-1].name)+strlen(yyvsp[0].name)+36);
2885            sprintf(s,"forif (!(%s)) break;\n%s%s;\ncontinue;\n "
2886                   ,yyvsp[-2].name,yyvsp[0].name,yyvsp[-1].name);
2887            omFree((ADDRESS)yyvsp[-2].name);
2888            omFree((ADDRESS)yyvsp[-1].name);
2889            omFree((ADDRESS)yyvsp[0].name);
2890            newBuffer(s,BT_break);
2891            s = (char *)omAlloc( strlen(yyvsp[-3].name) + 3);
2892            sprintf(s,"%s;\n",yyvsp[-3].name);
2893            omFree((ADDRESS)yyvsp[-3].name);
2894            newBuffer(s,BT_if);
2895          ;
2896    break;}
2897case 159:
2898#line 1595 "grammar.y"
2899{
2900            procinfov pi;
2901            idhdl h = enterid(yyvsp[-1].name,myynest,PROC_CMD,&IDROOT,TRUE);
2902            if (h==NULL) {omFree((ADDRESS)yyvsp[-1].name);omFree((ADDRESS)yyvsp[0].name); YYERROR;}
2903            iiInitSingularProcinfo(IDPROC(h),"", yyvsp[-1].name, 0, 0);
2904            IDPROC(h)->data.s.body = (char *)omAlloc(strlen(yyvsp[0].name)+31);;
2905            sprintf(IDPROC(h)->data.s.body,"parameter list #;\n%s;return();\n\n",yyvsp[0].name);
2906            omFree((ADDRESS)yyvsp[0].name);
2907            omFree((ADDRESS)yyvsp[-1].name);
2908          ;
2909    break;}
2910case 160:
2911#line 1606 "grammar.y"
2912{
2913            idhdl h = enterid(yyvsp[-2].name,myynest,PROC_CMD,&IDROOT,TRUE);
2914            if (h==NULL)
2915            {
2916              omFree((ADDRESS)yyvsp[-2].name);
2917              omFree((ADDRESS)yyvsp[-1].name);
2918              omFree((ADDRESS)yyvsp[0].name);
2919              YYERROR;
2920            }
2921            char *args=iiProcArgs(yyvsp[-1].name,FALSE);
2922            omFree((ADDRESS)yyvsp[-1].name);
2923            procinfov pi;
2924            iiInitSingularProcinfo(IDPROC(h),"", yyvsp[-2].name, 0, 0);
2925            IDPROC(h)->data.s.body = (char *)omAlloc(strlen(yyvsp[0].name)+strlen(args)+14);;
2926            sprintf(IDPROC(h)->data.s.body,"%s\n%s;return();\n\n",args,yyvsp[0].name);
2927            omFree((ADDRESS)args);
2928            omFree((ADDRESS)yyvsp[0].name);
2929            omFree((ADDRESS)yyvsp[-2].name);
2930          ;
2931    break;}
2932case 161:
2933#line 1626 "grammar.y"
2934{
2935            omFree((ADDRESS)yyvsp[-1].name);
2936            idhdl h = enterid(yyvsp[-3].name,myynest,PROC_CMD,&IDROOT,TRUE);
2937            if (h==NULL)
2938            {
2939              omFree((ADDRESS)yyvsp[-3].name);
2940              omFree((ADDRESS)yyvsp[-2].name);
2941              omFree((ADDRESS)yyvsp[0].name);
2942              YYERROR;
2943            }
2944            char *args=iiProcArgs(yyvsp[-2].name,FALSE);
2945            omFree((ADDRESS)yyvsp[-2].name);
2946            procinfov pi;
2947            iiInitSingularProcinfo(IDPROC(h),"", yyvsp[-3].name, 0, 0);
2948            omFree((ADDRESS)yyvsp[-3].name);
2949            IDPROC(h)->data.s.body = (char *)omAlloc(strlen(yyvsp[0].name)+strlen(args)+14);;
2950            sprintf(IDPROC(h)->data.s.body,"%s\n%s;return();\n\n",args,yyvsp[0].name);
2951            omFree((ADDRESS)args);
2952            omFree((ADDRESS)yyvsp[0].name);
2953          ;
2954    break;}
2955case 162:
2956#line 1650 "grammar.y"
2957{
2958            //Print("par:%s, %d\n",$2.Name(),$2.Typ());
2959            //yylineno--;
2960            if (iiParameter(&yyvsp[0].lv)) YYERROR;
2961          ;
2962    break;}
2963case 163:
2964#line 1656 "grammar.y"
2965{
2966            //Print("par:%s, %d\n",$2.Name(),$2.Typ());
2967            sleftv tmp_expr;
2968            //yylineno--;
2969            if ((iiDeclCommand(&tmp_expr,&yyvsp[0].lv,myynest,DEF_CMD,&IDROOT))
2970            || (iiParameter(&tmp_expr)))
2971              YYERROR;
2972          ;
2973    break;}
2974case 164:
2975#line 1668 "grammar.y"
2976{
2977            if(iiRETURNEXPR==NULL) YYERROR;
2978            iiRETURNEXPR[myynest].Copy(&yyvsp[-1].lv);
2979            yyvsp[-1].lv.CleanUp();
2980            if (exitBuffer(BT_proc)) YYERROR;
2981          ;
2982    break;}
2983case 165:
2984#line 1675 "grammar.y"
2985{
2986            if (yyvsp[-2].i==RETURN)
2987            {
2988              if(iiRETURNEXPR==NULL) YYERROR;
2989              iiRETURNEXPR[myynest].Init();
2990              iiRETURNEXPR[myynest].rtyp=NONE;
2991              if (exitBuffer(BT_proc)) YYERROR;
2992            }
2993          ;
2994    break;}
2995}
2996   /* the action file gets copied in in place of this dollarsign */
2997#line 543 "/usr/lib/bison.simple"
2998
2999  yyvsp -= yylen;
3000  yyssp -= yylen;
3001#ifdef YYLSP_NEEDED
3002  yylsp -= yylen;
3003#endif
3004
3005#if YYDEBUG != 0
3006  if (yydebug)
3007    {
3008      short *ssp1 = yyss - 1;
3009      fprintf (stderr, "state stack now");
3010      while (ssp1 != yyssp)
3011        fprintf (stderr, " %d", *++ssp1);
3012      fprintf (stderr, "\n");
3013    }
3014#endif
3015
3016  *++yyvsp = yyval;
3017
3018#ifdef YYLSP_NEEDED
3019  yylsp++;
3020  if (yylen == 0)
3021    {
3022      yylsp->first_line = yylloc.first_line;
3023      yylsp->first_column = yylloc.first_column;
3024      yylsp->last_line = (yylsp-1)->last_line;
3025      yylsp->last_column = (yylsp-1)->last_column;
3026      yylsp->text = 0;
3027    }
3028  else
3029    {
3030      yylsp->last_line = (yylsp+yylen-1)->last_line;
3031      yylsp->last_column = (yylsp+yylen-1)->last_column;
3032    }
3033#endif
3034
3035  /* Now "shift" the result of the reduction.
3036     Determine what state that goes to,
3037     based on the state we popped back to
3038     and the rule number reduced by.  */
3039
3040  yyn = yyr1[yyn];
3041
3042  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
3043  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3044    yystate = yytable[yystate];
3045  else
3046    yystate = yydefgoto[yyn - YYNTBASE];
3047
3048  goto yynewstate;
3049
3050yyerrlab:   /* here on detecting error */
3051
3052  if (! yyerrstatus)
3053    /* If not already recovering from an error, report this error.  */
3054    {
3055      ++yynerrs;
3056
3057#ifdef YYERROR_VERBOSE
3058      yyn = yypact[yystate];
3059
3060      if (yyn > YYFLAG && yyn < YYLAST)
3061        {
3062          int size = 0;
3063          char *msg;
3064          int x, count;
3065
3066          count = 0;
3067          /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
3068          for (x = (yyn < 0 ? -yyn : 0);
3069               x < (sizeof(yytname) / sizeof(char *)); x++)
3070            if (yycheck[x + yyn] == x)
3071              size += strlen(yytname[x]) + 15, count++;
3072          msg = (char *) malloc(size + 15);
3073          if (msg != 0)
3074            {
3075              strcpy(msg, "parse error");
3076
3077              if (count < 5)
3078                {
3079                  count = 0;
3080                  for (x = (yyn < 0 ? -yyn : 0);
3081                       x < (sizeof(yytname) / sizeof(char *)); x++)
3082                    if (yycheck[x + yyn] == x)
3083                      {
3084                        strcat(msg, count == 0 ? ", expecting `" : " or `");
3085                        strcat(msg, yytname[x]);
3086                        strcat(msg, "'");
3087                        count++;
3088                      }
3089                }
3090              yyerror(msg);
3091              free(msg);
3092            }
3093          else
3094            yyerror ("parse error; also virtual memory exceeded");
3095        }
3096      else
3097#endif /* YYERROR_VERBOSE */
3098        yyerror("parse error");
3099    }
3100
3101  goto yyerrlab1;
3102yyerrlab1:   /* here on error raised explicitly by an action */
3103
3104  if (yyerrstatus == 3)
3105    {
3106      /* if just tried and failed to reuse lookahead token after an error, discard it.  */
3107
3108      /* return failure if at end of input */
3109      if (yychar == YYEOF)
3110        YYABORT;
3111
3112#if YYDEBUG != 0
3113      if (yydebug)
3114        fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
3115#endif
3116
3117      yychar = YYEMPTY;
3118    }
3119
3120  /* Else will try to reuse lookahead token
3121     after shifting the error token.  */
3122
3123  yyerrstatus = 3;              /* Each real token shifted decrements this */
3124
3125  goto yyerrhandle;
3126
3127yyerrdefault:  /* current state does not do anything special for the error token. */
3128
3129#if 0
3130  /* This is wrong; only states that explicitly want error tokens
3131     should shift them.  */
3132  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
3133  if (yyn) goto yydefault;
3134#endif
3135
3136yyerrpop:   /* pop the current state because it cannot handle the error token */
3137
3138  if (yyssp == yyss) YYABORT;
3139  yyvsp--;
3140  yystate = *--yyssp;
3141#ifdef YYLSP_NEEDED
3142  yylsp--;
3143#endif
3144
3145#if YYDEBUG != 0
3146  if (yydebug)
3147    {
3148      short *ssp1 = yyss - 1;
3149      fprintf (stderr, "Error: state stack now");
3150      while (ssp1 != yyssp)
3151        fprintf (stderr, " %d", *++ssp1);
3152      fprintf (stderr, "\n");
3153    }
3154#endif
3155
3156yyerrhandle:
3157
3158  yyn = yypact[yystate];
3159  if (yyn == YYFLAG)
3160    goto yyerrdefault;
3161
3162  yyn += YYTERROR;
3163  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
3164    goto yyerrdefault;
3165
3166  yyn = yytable[yyn];
3167  if (yyn < 0)
3168    {
3169      if (yyn == YYFLAG)
3170        goto yyerrpop;
3171      yyn = -yyn;
3172      goto yyreduce;
3173    }
3174  else if (yyn == 0)
3175    goto yyerrpop;
3176
3177  if (yyn == YYFINAL)
3178    YYACCEPT;
3179
3180#if YYDEBUG != 0
3181  if (yydebug)
3182    fprintf(stderr, "Shifting error token, ");
3183#endif
3184
3185  *++yyvsp = yylval;
3186#ifdef YYLSP_NEEDED
3187  *++yylsp = yylloc;
3188#endif
3189
3190  yystate = yyn;
3191  goto yynewstate;
3192
3193 yyacceptlab:
3194  /* YYACCEPT comes here.  */
3195  if (yyfree_stacks)
3196    {
3197      free (yyss);
3198      free (yyvs);
3199#ifdef YYLSP_NEEDED
3200      free (yyls);
3201#endif
3202    }
3203  return 0;
3204
3205 yyabortlab:
3206  /* YYABORT comes here.  */
3207  if (yyfree_stacks)
3208    {
3209      free (yyss);
3210      free (yyvs);
3211#ifdef YYLSP_NEEDED
3212      free (yyls);
3213#endif
3214    }
3215  return 1;
3216}
3217#line 1685 "grammar.y"
Note: See TracBrowser for help on using the repository browser.