/***********************************************************************
* *
* This software is part of the ast package *
* Copyright (c) 1989-2012 AT&T Intellectual Property *
* and is licensed under the *
* Eclipse Public License, Version 1.0 *
* by AT&T Intellectual Property *
* *
* A copy of the License is available at *
* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
* *
* Information and Software Systems Research *
* AT&T Research *
* Florham Park NJ *
* *
* Glenn Fowler <gsf@research.att.com> *
* *
***********************************************************************/
/* : : generated by a yacc that works -- solaris take note : : */
#include "ast.h"
#ifndef lint
#endif
#include <stdlib.h>
#include <string.h>
extern int exparse(void);
static int exgrowstack(void);
/*
* Glenn Fowler
* AT&T Research
*
* expression library grammar and compiler
*/
#include <ast.h>
typedef union
{
double floating;
int op;
char* string;
} EXSTYPE;
#include "exgram.h"
/* #line 52 "y.tab.c" */
0, 25, 25, 27, 26, 2, 2, 1, 1, 28,
29, 1, 1, 1, 1, 1, 30, 1, 1, 1,
1, 31, 31, 14, 32, 32, 33, 33, 24, 24,
10, 10, 34, 11, 20, 20, 4, 4, 5, 5,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 35, 36, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 15, 15, 15, 15, 15, 21, 21, 21, 22,
22, 8, 8, 8, 23, 23, 12, 12, 7, 7,
3, 3, 16, 16, 16, 17, 17, 37, 18, 19,
19, 9, 9, 13, 38, 39, 13,
};
2, 0, 2, 0, 4, 0, 2, 3, 2, 0,
0, 6, 6, 5, 9, 5, 0, 8, 3, 3,
3, 0, 2, 2, 1, 2, 3, 2, 0, 1,
1, 3, 0, 5, 1, 1, 0, 2, 0, 1,
3, 4, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 0, 0, 7, 2, 2, 2, 2, 2, 5,
4, 4, 4, 4, 3, 2, 2, 2, 2, 2,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 3, 2, 1, 0, 2, 0, 3, 0, 1,
1, 3, 0, 1, 1, 1, 3, 0, 3, 0,
4, 0, 2, 1, 0, 0, 8,
};
0, 0, 84, 86, 83, 0, 30, 0, 82, 0,
0, 0, 0, 0, 94, 87, 0, 88, 0, 90,
89, 91, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 6, 7, 0, 0, 0, 81, 0, 0,
0, 10, 0, 0, 0, 0, 0, 93, 0, 0,
0, 0, 0, 0, 0, 69, 0, 68, 67, 65,
66, 77, 79, 0, 0, 0, 9, 0, 62, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 78, 80,
76, 0, 0, 0, 0, 0, 0, 3, 75, 19,
20, 0, 0, 0, 0, 0, 0, 0, 0, 21,
0, 0, 0, 41, 8, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 45, 46, 47, 0, 0, 0, 0, 0,
11, 4, 98, 71, 0, 0, 0, 0, 72, 0,
0, 42, 0, 0, 111, 73, 74, 110, 6, 0,
14, 0, 0, 0, 16, 63, 70, 0, 31, 0,
0, 0, 0, 13, 22, 0, 110, 12, 0, 33,
0, 38, 0, 0, 32, 0, 0, 0, 0, 0,
18, 23, 0, 25, 0, 0, 15, 85, 0, 28,
0, 26, 96, 115, 114, 34, 27, 0, 0, 116,
0, 106, 0, 0, 0, 36, 35, 109, 0, 108,
107, 6, 0, 117,
};
34, 2, 107, 174, 35, 36, 109, 37, 91, 168,
169, 48, 206, 192, 38, 210, 211, 212, 39, 218,
40, 41, 196, 42, 43, 98, 159, 96, 158, 150,
183, 193, 194, 187, 117, 176, 213, 208, 214,
};
short exsindex[] = { 0,
0, 181, 0, 0, 0, -24, 0, 376, 0, 376,
-62, -5, 2, 7, 0, 0, 21, 0, 376, 0,
0, 0, 49, 60, -244, 376, 376, 376, 376, -244,
-244, 310, 0, 0, 45, 936, -61, 0, -190, 66,
67, 0, -171, -168, 57, 58, 376, 0, 376, 376,
376, 376, 63, 376, 376, 0, -161, 0, 0, 0,
0, 0, 0, 82, 734, 75, 0, 376, 0, 376,
376, 376, 376, 376, 376, 376, 376, 376, 376, 376,
376, 376, 376, 376, 376, 376, 376, 376, 0, 0,
0, 93, -62, 376, 376, -138, 77, 0, 0, 0,
0, 761, 788, 78, 4, 799, 92, 963, 97, 0,
936, 834, 376, 0, 0, 963, 376, 994, 1095, 111,
1021, 1116, 123, 123, -30, -30, -30, -30, 56, 56,
-19, -19, 0, 0, 0, 963, 376, 95, 106, 118,
0, 0, 0, 0, 376, 181, 181, 376, 0, 121,
181, 0, 871, 126, 0, 0, 0, 0, 0, 110,
0, -103, 963, 64, 0, 0, 0, 15, 0, -214,
181, 376, 181, 0, 0, 376, 0, 0, -62, 0,
133, 0, -87, 963, 0, 95, 88, 181, -131, 130,
0, 0, -189, 0, 91, -29, 0, 0, 131, 0,
181, 0, 0, 0, 0, 0, 0, -91, 0, 0,
147, 0, -207, 151, -78, 0, 0, 0, 73, 0,
0, 0, 112, 0,
};
short exrindex[] = { 0,
0, 140, 0, 0, 0, 639, 0, -51, 0, -51,
472, 0, 0, 0, 0, 0, 0, 0, -51, 0,
0, 0, 0, 0, -83, -184, -184, -184, -184, -83,
-83, -184, 0, 0, 0, -22, 676, 0, 0, 0,
0, 0, 202, 0, 0, 0, -184, 0, -184, -51,
-184, -39, 0, -184, -184, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -55, 0, -184, 0, -184,
-184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
-184, -184, -184, -184, -184, -184, -184, -184, 0, 0,
0, 0, 445, -39, -39, 0, 0, 0, 0, 0,
0, 0, 0, 0, 900, 0, 162, -20, 0, 0,
163, 0, -184, 0, 0, 28, -184, -8, 149, 51,
600, 1398, 1400, 1426, 1257, 1301, 1330, 1341, 1136, 1225,
1162, 1199, 0, 0, 0, 84, -39, 499, 0, 0,
0, 0, 0, 0, -51, -55, -55, -184, 0, 0,
-55, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 61, 0, 0, 0, 0, 0, 0, 0,
339, -35, -55, 0, 0, -184, 0, 0, 160, 0,
0, 0, 0, 172, 0, 0, 14, -55, 0, 0,
0, 0, 38, 0, 0, 20, 0, 0, 0, 0,
626, 0, 0, 0, 0, 0, 0, 169, -38, 0,
170, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -55, 0,
};
short exgindex[] = { 0,
-120, -13, 0, 0, 6, 1550, -85, 32, 19, 0,
41, -88, 0, 0, 31, 0, 0, 13, 18, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 29, 0, 0, 0, 0, 0, 0,
};
37, 99, 104, 39, 138, 39, 87, 39, 139, 140,
204, 85, 83, 45, 84, 46, 86, 87, 40, 66,
101, 44, 85, 101, 53, 161, 162, 86, 47, 11,
165, 88, 60, 37, 49, 60, 40, 191, 37, 15,
37, 50, 57, 37, 146, 37, 51, 57, 57, 60,
60, 154, 182, 95, 60, 104, 56, 95, 177, 37,
52, 62, 63, 112, 88, 179, 216, 197, 61, 180,
6, 61, 95, 178, 95, 6, 217, 6, 112, 189,
6, 105, 6, 190, 60, 61, 61, 92, 54, 93,
186, 56, 87, 110, 56, 110, 6, 85, 83, 55,
84, 102, 86, 67, 102, 94, 95, 28, 56, 56,
97, 99, 25, 56, 32, 100, 101, 26, 93, 27,
61, 110, 113, 37, 113, 37, 37, 113, 3, 4,
5, 198, 137, 141, 142, 148, 145, 149, 9, 2,
155, 113, 113, 56, 28, 171, 156, 87, 74, 25,
160, 32, 85, 83, 26, 84, 27, 86, 157, 87,
6, 164, 6, 6, 85, 83, 167, 84, 172, 86,
77, 173, 78, 188, 56, 170, 113, 181, 195, 201,
209, 189, 77, 203, 78, 190, 175, 200, 207, 59,
215, 219, 59, 220, 170, 222, 110, 33, 39, 115,
29, 1, 100, 17, 73, 97, 59, 59, 223, 103,
105, 59, 64, 28, 205, 64, 29, 185, 25, 199,
32, 202, 110, 26, 110, 27, 110, 221, 110, 64,
64, 0, 0, 0, 33, 108, 224, 29, 110, 0,
110, 59, 110, 0, 110, 108, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 89, 90, 0,
37, 37, 37, 37, 64, 37, 0, 37, 0, 37,
37, 37, 37, 37, 37, 0, 37, 37, 37, 0,
37, 37, 37, 0, 37, 81, 82, 0, 37, 37,
37, 37, 37, 37, 37, 37, 37, 6, 6, 6,
6, 60, 6, 33, 6, 0, 29, 6, 6, 6,
0, 6, 0, 6, 6, 6, 0, 6, 6, 37,
37, 6, 89, 90, 0, 6, 6, 6, 6, 6,
6, 6, 6, 6, 3, 4, 5, 6, 5, 7,
0, 8, 28, 0, 9, 10, 0, 25, 11, 32,
12, 13, 26, 0, 27, 14, 6, 6, 15, 0,
56, 56, 16, 17, 18, 19, 20, 21, 22, 23,
24, 3, 4, 5, 6, 0, 7, 0, 8, 0,
0, 9, 10, 0, 0, 11, 0, 12, 13, 0,
0, 0, 14, 30, 31, 15, 0, 39, 0, 16,
17, 18, 19, 20, 21, 22, 23, 24, 28, 0,
0, 29, 0, 25, 0, 32, 0, 110, 26, 110,
27, 2, 75, 76, 79, 80, 81, 82, 0, 0,
30, 31, 0, 0, 0, 29, 79, 80, 81, 82,
3, 4, 5, 6, 0, 7, 0, 8, 0, 0,
9, 10, 0, 0, 11, 0, 12, 13, 59, 59,
0, 14, 0, 0, 15, 0, 0, 0, 16, 17,
18, 19, 20, 21, 22, 23, 24, 0, 0, 0,
0, 97, 97, 0, 0, 97, 97, 97, 97, 97,
97, 97, 0, 0, 0, 0, 0, 0, 0, 30,
31, 29, 97, 97, 97, 97, 97, 97, 97, 97,
0, 0, 97, 97, 97, 97, 97, 0, 97, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 97,
97, 97, 97, 97, 97, 92, 92, 97, 97, 92,
92, 92, 92, 92, 0, 92, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 92, 92, 92, 92,
92, 92, 0, 0, 97, 97, 0, 0, 97, 3,
4, 5, 6, 0, 0, 0, 0, 0, 0, 9,
0, 64, 0, 11, 0, 12, 0, 0, 0, 0,
0, 92, 92, 15, 0, 97, 0, 16, 17, 18,
0, 20, 21, 22, 0, 0, 0, 0, 0, 0,
29, 0, 0, 0, 0, 0, 110, 0, 110, 0,
5, 0, 92, 0, 0, 0, 0, 0, 30, 31,
0, 0, 0, 0, 0, 3, 4, 5, 6, 0,
57, 0, 0, 57, 0, 9, 0, 0, 0, 11,
0, 12, 0, 0, 0, 0, 0, 57, 57, 15,
0, 0, 57, 16, 17, 18, 0, 20, 21, 22,
0, 0, 0, 0, 0, 85, 85, 0, 0, 85,
85, 85, 85, 85, 39, 85, 0, 0, 0, 0,
0, 0, 57, 57, 30, 31, 85, 85, 85, 0,
85, 85, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 112, 112, 0, 0, 112, 112, 112, 112,
112, 0, 112, 57, 0, 0, 0, 0, 0, 0,
0, 85, 85, 112, 112, 112, 0, 112, 112, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
24, 0, 0, 0, 97, 97, 97, 97, 97, 97,
97, 97, 85, 97, 97, 0, 0, 0, 112, 112,
87, 74, 0, 0, 114, 85, 83, 68, 84, 0,
86, 97, 97, 97, 97, 97, 97, 97, 97, 0,
97, 97, 0, 77, 0, 78, 69, 87, 74, 112,
0, 0, 85, 83, 68, 84, 0, 86, 92, 92,
92, 92, 92, 92, 92, 92, 0, 92, 92, 0,
77, 0, 78, 69, 87, 74, 0, 73, 144, 85,
83, 68, 84, 0, 86, 87, 74, 0, 0, 147,
85, 83, 68, 84, 0, 86, 0, 77, 0, 78,
69, 0, 0, 143, 73, 0, 0, 72, 77, 0,
78, 69, 0, 0, 0, 0, 0, 0, 0, 0,
87, 74, 0, 0, 151, 85, 83, 68, 84, 0,
86, 73, 0, 0, 72, 0, 0, 0, 0, 0,
0, 0, 73, 77, 24, 78, 69, 29, 24, 0,
0, 0, 0, 110, 0, 110, 0, 87, 74, 57,
57, 72, 85, 83, 68, 84, 0, 86, 0, 0,
0, 0, 72, 0, 0, 0, 0, 73, 166, 0,
77, 0, 78, 69, 0, 0, 112, 112, 0, 0,
0, 112, 112, 112, 112, 0, 112, 0, 85, 85,
85, 85, 85, 85, 85, 85, 0, 72, 112, 112,
0, 112, 112, 0, 73, 0, 0, 0, 0, 0,
0, 0, 87, 74, 0, 0, 0, 85, 83, 68,
84, 0, 86, 0, 0, 112, 112, 112, 112, 112,
112, 112, 112, 112, 72, 77, 0, 78, 69, 87,
74, 0, 0, 0, 85, 83, 0, 84, 0, 86,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 77, 112, 78, 69, 0, 0, 0, 73,
87, 74, 0, 0, 0, 85, 83, 0, 84, 0,
86, 0, 0, 70, 71, 75, 76, 79, 80, 81,
82, 0, 0, 77, 0, 78, 73, 87, 74, 72,
0, 0, 85, 83, 0, 84, 0, 86, 0, 0,
70, 71, 75, 76, 79, 80, 81, 82, 0, 0,
77, 0, 78, 0, 0, 0, 72, 73, 0, 0,
0, 0, 0, 0, 0, 0, 0, 70, 71, 75,
76, 79, 80, 81, 82, 0, 0, 0, 70, 71,
75, 76, 79, 80, 81, 82, 0, 72, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 87, 74, 0, 0, 0, 85, 83, 0, 84,
0, 86, 0, 70, 71, 75, 76, 79, 80, 81,
82, 0, 87, 0, 77, 0, 78, 85, 83, 0,
84, 0, 86, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 48, 0, 77, 48, 78, 0, 48,
70, 71, 75, 76, 79, 80, 81, 82, 73, 0,
0, 0, 0, 48, 48, 48, 0, 48, 48, 58,
0, 0, 58, 0, 58, 58, 58, 0, 0, 112,
112, 112, 112, 112, 112, 112, 112, 0, 72, 58,
58, 58, 0, 58, 58, 0, 0, 0, 48, 48,
0, 0, 0, 0, 0, 0, 44, 0, 0, 44,
0, 44, 44, 44, 0, 70, 71, 75, 76, 79,
80, 81, 82, 0, 58, 58, 44, 44, 44, 48,
44, 44, 49, 0, 0, 49, 0, 0, 49, 0,
0, 0, 70, 71, 75, 76, 79, 80, 81, 82,
0, 0, 49, 49, 49, 58, 49, 49, 0, 0,
0, 44, 44, 0, 43, 0, 0, 43, 0, 0,
43, 0, 0, 0, 71, 75, 76, 79, 80, 81,
82, 0, 0, 0, 43, 43, 0, 49, 49, 43,
0, 0, 44, 0, 0, 0, 0, 0, 0, 0,
0, 0, 75, 76, 79, 80, 81, 82, 50, 0,
0, 50, 0, 0, 50, 0, 0, 0, 49, 43,
43, 0, 0, 0, 0, 0, 0, 0, 50, 50,
0, 0, 0, 50, 0, 0, 0, 51, 0, 0,
51, 0, 0, 51, 0, 0, 0, 0, 52, 0,
43, 52, 0, 0, 52, 0, 0, 51, 51, 0,
0, 0, 51, 50, 50, 0, 0, 0, 52, 52,
0, 0, 0, 52, 0, 0, 75, 76, 79, 80,
81, 82, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 51, 51, 50, 0, 0, 75, 76, 79,
80, 81, 82, 52, 52, 55, 0, 53, 55, 0,
53, 55, 0, 53, 0, 48, 48, 48, 48, 48,
48, 48, 48, 51, 0, 55, 55, 53, 53, 0,
55, 0, 53, 54, 52, 0, 54, 0, 0, 54,
0, 58, 58, 58, 58, 58, 58, 58, 58, 0,
0, 0, 0, 54, 54, 0, 0, 0, 54, 0,
55, 55, 53, 53, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 44, 44,
44, 44, 44, 44, 44, 44, 0, 0, 54, 54,
0, 55, 0, 53, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 49, 49, 49, 49, 49, 49,
49, 49, 0, 0, 0, 0, 0, 0, 0, 54,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 43, 43, 43, 43,
0, 0, 0, 0, 0, 58, 59, 60, 61, 0,
0, 65, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 102, 0, 103, 0,
106, 108, 0, 111, 112, 0, 0, 0, 0, 0,
50, 50, 50, 50, 0, 0, 0, 116, 0, 118,
119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
129, 130, 131, 132, 133, 134, 135, 136, 0, 51,
51, 51, 51, 108, 108, 0, 0, 0, 0, 0,
52, 52, 52, 52, 0, 0, 0, 0, 0, 0,
0, 0, 152, 0, 0, 0, 153, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 108, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 163, 0, 0,
0, 0, 0, 0, 0, 0, 0, 55, 55, 53,
53, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 184, 0, 0, 0, 0,
0, 0, 0, 0, 0, 54, 54,
};
0, 41, 41, 59, 93, 41, 37, 59, 94, 95,
40, 42, 43, 8, 45, 10, 47, 37, 41, 33,
41, 46, 42, 44, 19, 146, 147, 47, 91, 274,
151, 61, 41, 33, 40, 44, 59, 125, 38, 284,
40, 40, 25, 43, 41, 45, 40, 30, 31, 58,
59, 137, 173, 40, 63, 50, 25, 44, 44, 59,
40, 30, 31, 44, 61, 280, 274, 188, 41, 284,
33, 44, 59, 59, 61, 38, 284, 40, 59, 269,
43, 50, 45, 273, 93, 58, 59, 278, 40, 280,
179, 41, 37, 278, 44, 280, 59, 42, 43, 40,
45, 41, 47, 59, 44, 40, 40, 33, 58, 59,
282, 280, 38, 63, 40, 59, 59, 43, 280, 45,
93, 59, 41, 123, 41, 125, 126, 44, 260, 261,
262, 263, 40, 272, 58, 44, 59, 41, 270, 0,
46, 58, 59, 93, 33, 159, 41, 37, 38, 38,
145, 40, 42, 43, 43, 45, 45, 47, 41, 37,
123, 41, 125, 126, 42, 43, 41, 45, 59, 47,
60, 275, 62, 41, 124, 158, 93, 172, 91, 193,
272, 269, 60, 93, 62, 273, 123, 58, 58, 41,
44, 41, 44, 272, 177, 123, 280, 123, 59, 125,
126, 0, 41, 41, 94, 46, 58, 59, 222, 41,
41, 63, 41, 33, 196, 44, 272, 177, 38, 189,
40, 193, 278, 43, 280, 45, 278, 215, 280, 58,
59, -1, -1, -1, 123, 274, 125, 126, 278, -1,
280, 93, 278, -1, 280, 284, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 319, 320, -1,
260, 261, 262, 263, 93, 265, -1, 267, -1, 269,
270, 271, 272, 273, 274, -1, 276, 277, 278, -1,
280, 281, 282, -1, 284, 316, 317, -1, 288, 289,
290, 291, 292, 293, 294, 295, 296, 260, 261, 262,
263, 310, 265, 123, 267, -1, 126, 270, 271, 272,
-1, 274, -1, 276, 277, 278, -1, 280, 281, 319,
320, 284, 319, 320, -1, 288, 289, 290, 291, 292,
293, 294, 295, 296, 260, 261, 262, 263, 0, 265,
-1, 267, 33, -1, 270, 271, -1, 38, 274, 40,
276, 277, 43, -1, 45, 281, 319, 320, 284, -1,
310, 311, 288, 289, 290, 291, 292, 293, 294, 295,
296, 260, 261, 262, 263, -1, 265, -1, 267, -1,
-1, 270, 271, -1, -1, 274, -1, 276, 277, -1,
-1, -1, 281, 319, 320, 284, -1, 59, -1, 288,
289, 290, 291, 292, 293, 294, 295, 296, 33, -1,
-1, 272, -1, 38, -1, 40, -1, 278, 43, 280,
45, 282, 312, 313, 314, 315, 316, 317, -1, -1,
319, 320, -1, -1, -1, 126, 314, 315, 316, 317,
260, 261, 262, 263, -1, 265, -1, 267, -1, -1,
270, 271, -1, -1, 274, -1, 276, 277, 310, 311,
-1, 281, -1, -1, 284, -1, -1, -1, 288, 289,
290, 291, 292, 293, 294, 295, 296, -1, -1, -1,
-1, 37, 38, -1, -1, 41, 42, 43, 44, 45,
46, 47, -1, -1, -1, -1, -1, -1, -1, 319,
320, 126, 58, 59, 60, 61, 62, 63, 37, 38,
-1, -1, 41, 42, 43, 44, 45, -1, 47, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 58,
59, 60, 61, 62, 63, 37, 38, 93, 94, 41,
42, 43, 44, 45, -1, 47, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 58, 59, 60, 61,
62, 63, -1, -1, 93, 94, -1, -1, 124, 260,
261, 262, 263, -1, -1, -1, -1, -1, -1, 270,
-1, 272, -1, 274, -1, 276, -1, -1, -1, -1,
-1, 93, 94, 284, -1, 124, -1, 288, 289, 290,
-1, 292, 293, 294, -1, -1, -1, -1, -1, -1,
272, -1, -1, -1, -1, -1, 278, -1, 280, -1,
282, -1, 124, -1, -1, -1, -1, -1, 319, 320,
-1, -1, -1, -1, -1, 260, 261, 262, 263, -1,
41, -1, -1, 44, -1, 270, -1, -1, -1, 274,
-1, 276, -1, -1, -1, -1, -1, 58, 59, 284,
-1, -1, 63, 288, 289, 290, -1, 292, 293, 294,
-1, -1, -1, -1, -1, 37, 38, -1, -1, 41,
42, 43, 44, 45, 59, 47, -1, -1, -1, -1,
-1, -1, 93, 94, 319, 320, 58, 59, 60, -1,
62, 63, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 37, 38, -1, -1, 41, 42, 43, 44,
45, -1, 47, 124, -1, -1, -1, -1, -1, -1,
-1, 93, 94, 58, 59, 60, -1, 62, 63, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
125, -1, -1, -1, 310, 311, 312, 313, 314, 315,
316, 317, 124, 319, 320, -1, -1, -1, 93, 94,
37, 38, -1, -1, 41, 42, 43, 44, 45, -1,
47, 310, 311, 312, 313, 314, 315, 316, 317, -1,
319, 320, -1, 60, -1, 62, 63, 37, 38, 124,
-1, -1, 42, 43, 44, 45, -1, 47, 310, 311,
312, 313, 314, 315, 316, 317, -1, 319, 320, -1,
60, -1, 62, 63, 37, 38, -1, 94, 41, 42,
43, 44, 45, -1, 47, 37, 38, -1, -1, 41,
42, 43, 44, 45, -1, 47, -1, 60, -1, 62,
63, -1, -1, 93, 94, -1, -1, 124, 60, -1,
62, 63, -1, -1, -1, -1, -1, -1, -1, -1,
37, 38, -1, -1, 41, 42, 43, 44, 45, -1,
47, 94, -1, -1, 124, -1, -1, -1, -1, -1,
-1, -1, 94, 60, 269, 62, 63, 272, 273, -1,
-1, -1, -1, 278, -1, 280, -1, 37, 38, 310,
311, 124, 42, 43, 44, 45, -1, 47, -1, -1,
-1, -1, 124, -1, -1, -1, -1, 94, 58, -1,
60, -1, 62, 63, -1, -1, 37, 38, -1, -1,
-1, 42, 43, 44, 45, -1, 47, -1, 310, 311,
312, 313, 314, 315, 316, 317, -1, 124, 59, 60,
-1, 62, 63, -1, 94, -1, -1, -1, -1, -1,
-1, -1, 37, 38, -1, -1, -1, 42, 43, 44,
45, -1, 47, -1, -1, 310, 311, 312, 313, 314,
315, 316, 317, 94, 124, 60, -1, 62, 63, 37,
38, -1, -1, -1, 42, 43, -1, 45, -1, 47,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 60, 124, 62, 63, -1, -1, -1, 94,
37, 38, -1, -1, -1, 42, 43, -1, 45, -1,
47, -1, -1, 310, 311, 312, 313, 314, 315, 316,
317, -1, -1, 60, -1, 62, 94, 37, 38, 124,
-1, -1, 42, 43, -1, 45, -1, 47, -1, -1,
310, 311, 312, 313, 314, 315, 316, 317, -1, -1,
60, -1, 62, -1, -1, -1, 124, 94, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 310, 311, 312,
313, 314, 315, 316, 317, -1, -1, -1, 310, 311,
312, 313, 314, 315, 316, 317, -1, 124, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 37, 38, -1, -1, -1, 42, 43, -1, 45,
-1, 47, -1, 310, 311, 312, 313, 314, 315, 316,
317, -1, 37, -1, 60, -1, 62, 42, 43, -1,
45, -1, 47, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 38, -1, 60, 41, 62, -1, 44,
310, 311, 312, 313, 314, 315, 316, 317, 94, -1,
-1, -1, -1, 58, 59, 60, -1, 62, 63, 38,
-1, -1, 41, -1, 43, 44, 45, -1, -1, 310,
311, 312, 313, 314, 315, 316, 317, -1, 124, 58,
59, 60, -1, 62, 63, -1, -1, -1, 93, 94,
-1, -1, -1, -1, -1, -1, 38, -1, -1, 41,
-1, 43, 44, 45, -1, 310, 311, 312, 313, 314,
315, 316, 317, -1, 93, 94, 58, 59, 60, 124,
62, 63, 38, -1, -1, 41, -1, -1, 44, -1,
-1, -1, 310, 311, 312, 313, 314, 315, 316, 317,
-1, -1, 58, 59, 60, 124, 62, 63, -1, -1,
-1, 93, 94, -1, 38, -1, -1, 41, -1, -1,
44, -1, -1, -1, 311, 312, 313, 314, 315, 316,
317, -1, -1, -1, 58, 59, -1, 93, 94, 63,
-1, -1, 124, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 312, 313, 314, 315, 316, 317, 38, -1,
-1, 41, -1, -1, 44, -1, -1, -1, 124, 93,
94, -1, -1, -1, -1, -1, -1, -1, 58, 59,
-1, -1, -1, 63, -1, -1, -1, 38, -1, -1,
41, -1, -1, 44, -1, -1, -1, -1, 38, -1,
124, 41, -1, -1, 44, -1, -1, 58, 59, -1,
-1, -1, 63, 93, 94, -1, -1, -1, 58, 59,
-1, -1, -1, 63, -1, -1, 312, 313, 314, 315,
316, 317, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 93, 94, 124, -1, -1, 312, 313, 314,
315, 316, 317, 93, 94, 38, -1, 38, 41, -1,
41, 44, -1, 44, -1, 310, 311, 312, 313, 314,
315, 316, 317, 124, -1, 58, 59, 58, 59, -1,
63, -1, 63, 38, 124, -1, 41, -1, -1, 44,
-1, 310, 311, 312, 313, 314, 315, 316, 317, -1,
-1, -1, -1, 58, 59, -1, -1, -1, 63, -1,
93, 94, 93, 94, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 310, 311,
312, 313, 314, 315, 316, 317, -1, -1, 93, 94,
-1, 124, -1, 124, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 310, 311, 312, 313, 314, 315,
316, 317, -1, -1, -1, -1, -1, -1, -1, 124,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 310, 311, 312, 313,
-1, -1, -1, -1, -1, 26, 27, 28, 29, -1,
-1, 32, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 47, -1, 49, -1,
51, 52, -1, 54, 55, -1, -1, -1, -1, -1,
310, 311, 312, 313, -1, -1, -1, 68, -1, 70,
71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, 87, 88, -1, 310,
311, 312, 313, 94, 95, -1, -1, -1, -1, -1,
310, 311, 312, 313, -1, -1, -1, -1, -1, -1,
-1, -1, 113, -1, -1, -1, 117, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 137, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 148, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 310, 311, 310,
311, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 176, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 310, 311,
};
#ifndef EXDEBUG
#define EXDEBUG 0
#endif
#if EXDEBUG
char *exname[] = {
"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
"'!'",0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0,0,
0,0,0,0,0,0,0,"':'","';'","'<'","'='","'>'","'?'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,"'['",0,"']'","'^'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"'{'","'|'","'}'","'~'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"MINTOKEN",
"CHAR","INT","INTEGER","UNSIGNED","FLOATING","STRING","VOID","STATIC","ADDRESS",
"BREAK","CALL","CASE","CONSTANT","CONTINUE","DECLARE","DEFAULT","DYNAMIC",
"ELSE","EXIT","FOR","FUNCTION","ITERATE","ID","IF","LABEL","MEMBER","NAME",
"POS","PRAGMA","PRE","PRINTF","PROCEDURE","QUERY","RETURN","SCANF","SPRINTF",
"SSCANF","SWITCH","WHILE","F2I","F2S","I2F","I2S","S2B","S2F","S2I","F2X","I2X",
"S2X","X2F","X2I","X2S","OR","AND","EQ","NE","LE","GE","LS","RS","UNARY","INC",
"DEC","CAST","MAXTOKEN",
};
char *exrule[] = {
"$accept : program",
"program : statement_list action_list",
"action_list :",
"action_list : action_list action",
"$$1 :",
"action : LABEL ':' $$1 statement_list",
"statement_list :",
"statement_list : statement_list statement",
"statement : '{' statement_list '}'",
"statement : expr_opt ';'",
"$$2 :",
"$$3 :",
"statement : static $$2 DECLARE $$3 dcl_list ';'",
"statement : IF '(' expr ')' statement else_opt",
"statement : FOR '(' variable ')' statement",
"statement : FOR '(' expr_opt ';' expr_opt ';' expr_opt ')' statement",
"statement : WHILE '(' expr ')' statement",
"$$4 :",
"statement : SWITCH '(' expr $$4 ')' '{' switch_list '}'",
"statement : BREAK expr_opt ';'",
"statement : CONTINUE expr_opt ';'",
"statement : RETURN expr_opt ';'",
"switch_list :",
"switch_list : switch_list switch_item",
"switch_item : case_list statement_list",
"case_list : case_item",
"case_list : case_list case_item",
"case_item : CASE constant ':'",
"case_item : DEFAULT ':'",
"static :",
"static : STATIC",
"dcl_list : dcl_item",
"dcl_list : dcl_list ',' dcl_item",
"$$5 :",
"dcl_item : reference NAME $$5 array initialize",
"name : NAME",
"name : DYNAMIC",
"else_opt :",
"else_opt : ELSE statement",
"expr_opt :",
"expr_opt : expr",
"expr : '(' expr ')'",
"expr : '(' DECLARE ')' expr",
"expr : expr '<' expr",
"expr : expr '-' expr",
"expr : expr '*' expr",
"expr : expr '/' expr",
"expr : expr '%' expr",
"expr : expr LS expr",
"expr : expr RS expr",
"expr : expr '>' expr",
"expr : expr LE expr",
"expr : expr GE expr",
"expr : expr EQ expr",
"expr : expr NE expr",
"expr : expr '&' expr",
"expr : expr '|' expr",
"expr : expr '^' expr",
"expr : expr '+' expr",
"expr : expr AND expr",
"expr : expr OR expr",
"expr : expr ',' expr",
"$$6 :",
"$$7 :",
"expr : expr '?' $$6 expr ':' $$7 expr",
"expr : '!' expr",
"expr : '~' expr",
"expr : '-' expr",
"expr : '+' expr",
"expr : '&' variable",
"expr : reference FUNCTION '(' args ')'",
"expr : EXIT '(' expr ')'",
"expr : PROCEDURE '(' args ')'",
"expr : print '(' args ')'",
"expr : scan '(' args ')'",
"expr : STRING '.' ID",
"expr : variable assign",
"expr : INC variable",
"expr : variable INC",
"expr : DEC variable",
"expr : variable DEC",
"expr : constant",
"constant : CONSTANT",
"constant : FLOATING",
"constant : INTEGER",
"constant : STRING",
"constant : UNSIGNED",
"print : PRINTF",
"print : QUERY",
"print : SPRINTF",
"scan : SCANF",
"scan : SSCANF",
"variable : reference ID index",
"variable : DYNAMIC index",
"variable : NAME",
"array :",
"array : '[' ']'",
"index :",
"index : '[' expr ']'",
"args :",
"args : arg_list",
"arg_list : expr",
"arg_list : arg_list ',' expr",
"formals :",
"formals : DECLARE",
"formals : formal_list",
"formal_list : formal_item",
"formal_list : formal_list ',' formal_item",
"$$8 :",
"formal_item : DECLARE $$8 name",
"reference :",
"reference : reference ID index '.'",
"assign :",
"assign : '=' expr",
"initialize : assign",
"$$9 :",
"$$10 :",
"initialize : '(' $$9 formals $$10 ')' '{' statement_list '}'",
};
#endif
#if EXDEBUG
#include <stdio.h>
#endif
/* define the initial stack-sizes */
#ifdef EXSTACKSIZE
#else
#ifdef EXMAXDEPTH
#else
#endif
#endif
int exdebug;
int exnerrs;
int exerrflag;
int exchar;
short *exssp;
/* variables for the parser stack */
static short *exss;
static short *exsslim;
static int exstacksize;
#include "exgram.h"
/* #line 768 "y.tab.c" */
/* allocate initial stack or double stack size, up to EXMAXDEPTH */
static int exgrowstack(void)
{
int newsize, i;
short *newss;
if ((newsize = exstacksize) == 0)
else if (newsize >= EXMAXDEPTH)
return -1;
if (newss == 0)
return -1;
if (newvs == 0)
return -1;
return 0;
}
int
exparse(void)
{
#if EXDEBUG
register const char *exs;
{
}
#endif
exnerrs = 0;
exerrflag = 0;
if (exchar < 0)
{
#if EXDEBUG
if (exdebug)
{
exs = 0;
printf("%sdebug: state %d, reading %d (%s)\n",
}
#endif
}
{
#if EXDEBUG
if (exdebug)
printf("%sdebug: state %d, shifting to state %d\n",
#endif
{
goto exoverflow;
}
goto exloop;
}
{
goto exreduce;
}
if (exerrflag) goto exinrecovery;
exerror("syntax error");
#ifdef lint
goto exerrlab;
#endif
++exnerrs;
if (exerrflag < 3)
{
exerrflag = 3;
for (;;)
{
{
#if EXDEBUG
if (exdebug)
printf("%sdebug: state %d, error recovery shifting\
#endif
{
goto exoverflow;
}
goto exloop;
}
else
{
#if EXDEBUG
if (exdebug)
printf("%sdebug: error recovery discarding state %d\n",
#endif
--exssp;
--exvsp;
}
}
}
else
{
#if EXDEBUG
if (exdebug)
{
exs = 0;
printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
}
#endif
goto exloop;
}
#if EXDEBUG
if (exdebug)
printf("%sdebug: state %d, reducing by rule %d (%s)\n",
#endif
if (exm)
else
switch (exn)
{
case 1:
{
{
{
Exnode_t* x;
}
expr.program->main.value = exnewnode(expr.program, PROCEDURE, 1, exvsp[-1].expr->type, NiL, exvsp[-1].expr);
}
}
break;
case 4:
{
exerror("no nested function definitions");
expr.procedure = exvsp[-1].id->value = exnewnode(expr.program, PROCEDURE, 1, exvsp[-1].id->type, NiL, NiL);
exnospace();
{
if (!(expr.procedure->data.procedure.frame = dtopen(disc, Dtset)) || !dtview(expr.procedure->data.procedure.frame, expr.program->symbols))
exnospace();
}
}
break;
case 5:
{
{
}
{
Exnode_t* x;
}
exvsp[-3].id->value->data.operand.right = excast(expr.program, exvsp[0].expr, exvsp[-3].id->type, NiL, 0);
}
break;
case 6:
{
}
break;
case 7:
{
{
}
{
exvsp[-1].expr->data.operand.last = exvsp[-1].expr->data.operand.last->data.operand.right = exnewnode(expr.program, ';', 1, exvsp[0].expr->type, exvsp[0].expr, NiL);
}
else
{
exval.expr->data.operand.last = exval.expr->data.operand.right = exnewnode(expr.program, ';', 1, exvsp[0].expr->type, exvsp[0].expr, NiL);
}
}
break;
case 8:
{
}
break;
case 9:
{
exval.expr = (exvsp[-1].expr && exvsp[-1].expr->type == STRING) ? exnewnode(expr.program, S2B, 1, INTEGER, exvsp[-1].expr, NiL) : exvsp[-1].expr;
}
break;
case 10:
break;
case 11:
break;
case 12:
{
}
break;
case 13:
{
exval.expr = exnewnode(expr.program, exvsp[-5].id->index, 1, INTEGER, exvsp[-3].expr, exnewnode(expr.program, ':', 1, exvsp[-1].expr ? exvsp[-1].expr->type : 0, exvsp[-1].expr, exvsp[0].expr));
}
break;
case 14:
{
exerror("simple index variable expected");
exerror("integer index variable expected");
}
break;
case 15:
{
{
}
exval.expr = exnewnode(expr.program, exvsp[-8].id->index, 1, INTEGER, exvsp[-4].expr, exnewnode(expr.program, ';', 1, 0, exvsp[-2].expr, exvsp[0].expr));
}
break;
case 16:
{
exval.expr = exnewnode(expr.program, exvsp[-4].id->index, 1, INTEGER, exvsp[-2].expr, exnewnode(expr.program, ';', 1, 0, NiL, exvsp[0].expr));
}
break;
case 17:
break;
case 18:
{
exval.expr = exnewnode(expr.program, exvsp[-7].id->index, 1, INTEGER, exvsp[-5].expr, exnewnode(expr.program, DEFAULT, 1, 0, sw->defcase, sw->firstcase));
}
break;
case 19:
{
{
}
}
break;
case 20:
{
goto loopop;
}
break;
case 21:
{
{
exerror("return in void function");
exvsp[-1].expr = excast(expr.program, exvsp[-1].expr, expr.procedure ? expr.procedure->type : INTEGER, NiL, 0);
}
exval.expr = exnewnode(expr.program, RETURN, 1, exvsp[-1].expr ? exvsp[-1].expr->type : 0, exvsp[-1].expr, NiL);
}
break;
case 22:
{
int n;
{
{
exnospace();
}
}
else
n = 8;
{
exnospace();
n = 0;
}
}
break;
case 24:
{
int n;
{
else
}
else
{
exerror("duplicate default in switch");
else
}
}
break;
case 27:
{
int n;
{
{
exerror("too many case labels for switch");
n = 0;
}
}
{
}
}
break;
case 28:
{
}
break;
case 29:
{
}
break;
case 30:
{
}
break;
case 32:
{
exval.expr = exvsp[-2].expr ? exnewnode(expr.program, ',', 1, exvsp[0].expr->type, exvsp[-2].expr, exvsp[0].expr) : exvsp[0].expr;
}
break;
case 33:
break;
case 34:
{
{
(*expr.program->disc->reff)(expr.program, exval.expr, exvsp[-3].id, exvsp[-4].reference, NiL, EX_SCALAR, expr.program->disc);
}
{
}
else
{
{
exnospace();
}
{
{
exvsp[0].expr->data.operand.right = excast(expr.program, exvsp[0].expr->data.operand.right, exvsp[-3].id->type, NiL, 0);
}
exvsp[0].expr->data.operand.left = exnewnode(expr.program, DYNAMIC, 0, exvsp[-3].id->type, NiL, NiL);
{
}
}
}
}
break;
case 37:
{
}
break;
case 38:
{
}
break;
case 39:
{
}
break;
case 41:
{
}
break;
case 42:
{
exval.expr = (exvsp[0].expr->type == exvsp[-2].id->type) ? exvsp[0].expr : excast(expr.program, exvsp[0].expr, exvsp[-2].id->type, NiL, 0);
}
break;
case 43:
{
int rel;
goto coerce;
rel = 0;
{
else
}
{
}
if (!rel)
rel = (exvsp[-2].expr->type == STRING) ? STRING : ((exvsp[-2].expr->type == UNSIGNED) ? UNSIGNED : exvsp[0].expr->type);
{
}
}
break;
case 44:
{
goto binary;
}
break;
case 45:
{
goto binary;
}
break;
case 46:
{
goto binary;
}
break;
case 47:
{
goto binary;
}
break;
case 48:
{
goto binary;
}
break;
case 49:
{
goto binary;
}
break;
case 50:
{
goto relational;
}
break;
case 51:
{
goto relational;
}
break;
case 52:
{
goto relational;
}
break;
case 53:
{
goto relational;
}
break;
case 54:
{
goto relational;
}
break;
case 55:
{
goto binary;
}
break;
case 56:
{
goto binary;
}
break;
case 57:
{
goto binary;
}
break;
case 58:
{
goto binary;
}
break;
case 59:
{
goto binary;
}
break;
case 60:
{
goto logical;
}
break;
case 61:
{
{
}
else
}
break;
case 62:
break;
case 63:
break;
case 64:
{
{
else
}
{
exerror("if statement string type mismatch");
}
{
{
}
else
{
}
}
else
exval.expr = exnewnode(expr.program, '?', 1, exvsp[-3].expr->type, exvsp[-6].expr, exnewnode(expr.program, ':', 1, exvsp[-3].expr->type, exvsp[-3].expr, exvsp[0].expr));
}
break;
case 65:
{
exval.expr = exnewnode(expr.program, exvsp[-1].op, 1, exvsp[0].expr->type == UNSIGNED ? INTEGER : exvsp[0].expr->type, exvsp[0].expr, NiL);
{
}
}
break;
case 66:
{
goto iunary;
}
break;
case 67:
{
goto unary;
}
break;
case 68:
{
}
break;
case 69:
{
}
break;
case 70:
{
exval.expr = exnewnode(expr.program, FUNCTION, 1, T(exvsp[-3].id->type), call(exvsp[-4].reference, exvsp[-3].id, exvsp[-1].expr), exvsp[-1].expr);
exerror("%s: function references not supported", exval.expr->data.operand.left->data.variable.symbol->name);
(*expr.program->disc->reff)(expr.program, exval.expr->data.operand.left, exval.expr->data.operand.left->data.variable.symbol, exvsp[-4].reference, NiL, EX_CALL, expr.program->disc);
}
break;
case 71:
{
}
break;
case 72:
{
}
break;
case 73:
{
{
}
else
{
case QUERY:
break;
case PRINTF:
break;
case SPRINTF:
break;
}
}
break;
case 74:
{
register Exnode_t* x;
{
}
else
{
case SCANF:
break;
case SSCANF:
{
}
else
break;
}
if (!exvsp[-1].expr || !exvsp[-1].expr->data.operand.left || exvsp[-1].expr->data.operand.left->type != STRING)
for (x = exval.expr->data.scan.args = exvsp[-1].expr->data.operand.right; x; x = x->data.operand.right)
{
}
}
break;
case 75:
{
else
{
exval.expr->data.constant.value = (*expr.program->disc->reff)(expr.program, exval.expr, exvsp[0].id, NiL, exvsp[-2].string, EX_SCALAR, expr.program->disc);
}
}
break;
case 76:
{
{
else
{
#if 0
#else
#endif
{
exvsp[0].expr->data.operand.right = excast(expr.program, exvsp[0].expr->data.operand.right, exvsp[-1].expr->type, NiL, 0);
}
}
}
}
break;
case 77:
{
pre:
exerror("++ and -- invalid for string variables");
}
break;
case 78:
{
pos:
exerror("++ and -- invalid for string variables");
}
break;
case 79:
{
goto pre;
}
break;
case 80:
{
goto pos;
}
break;
case 82:
{
else
exval.expr->data.constant.value = (*expr.program->disc->reff)(expr.program, exval.expr, exvsp[0].id, NiL, NiL, EX_SCALAR, expr.program->disc);
}
break;
case 83:
{
}
break;
case 84:
{
}
break;
case 85:
{
}
break;
case 86:
{
}
break;
case 92:
{
(*expr.program->disc->reff)(expr.program, exval.expr, exval.expr->data.variable.symbol, exvsp[-2].reference, NiL, exvsp[0].expr ? 0 : EX_SCALAR, expr.program->disc);
}
break;
case 93:
{
}
break;
case 94:
{
exerror("unknown identifier");
}
break;
case 95:
{
}
break;
case 96:
{
}
break;
case 97:
{
}
break;
case 98:
{
}
break;
case 99:
{
}
break;
case 100:
{
}
break;
case 101:
{
exval.expr = exnewnode(expr.program, ';', 1, 0, exnewnode(expr.program, ';', 1, exvsp[0].expr->type, exvsp[0].expr, NiL), NiL);
}
break;
case 102:
{
exvsp[-2].expr->data.operand.right = exvsp[-2].expr->data.operand.right->data.operand.right = exnewnode(expr.program, ',', 1, exvsp[-2].expr->type, exvsp[0].expr, NiL);
}
break;
case 103:
{
}
break;
case 104:
{
exerror("(void) expected");
}
break;
case 106:
{
}
break;
case 107:
{
register Exnode_t* x;
register Exnode_t* y;
}
break;
case 108:
break;
case 109:
{
}
break;
case 110:
{
}
break;
case 111:
{
Exref_t* r;
{
}
else
{
}
r->next = 0;
}
break;
case 112:
{
}
break;
case 113:
{
}
break;
case 115:
{
exnospace();
{
if (!(expr.procedure->data.procedure.frame = dtopen(disc, Dtset)) || !dtview(expr.procedure->data.procedure.frame, expr.program->symbols))
exnospace();
}
}
break;
case 116:
{
}
break;
case 117:
{
{
}
/*
* NOTE: procedure definition was slipped into the
* declaration initializer statement production,
* therefore requiring the statement terminator
*/
}
break;
/* #line 2059 "y.tab.c" */
}
{
#if EXDEBUG
if (exdebug)
printf("%sdebug: after reduction, shifting from state 0 to\
#endif
if (exchar < 0)
{
#if EXDEBUG
if (exdebug)
{
exs = 0;
printf("%sdebug: state %d, reading %d (%s)\n",
}
#endif
}
goto exloop;
}
else
#if EXDEBUG
if (exdebug)
printf("%sdebug: after reduction, shifting from state %d \
#endif
{
goto exoverflow;
}
goto exloop;
exerror("yacc stack overflow");
return (1);
return (0);
}