Oexparse.c revision 3f54fd611f536639ec30dd53c48e5ec1897cc7d9
57221209d11b05aa0373cc3892d5df89ba96ebf9Christian Maeder/***********************************************************************
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* This software is part of the ast package *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* Copyright (c) 1989-2012 AT&T Intellectual Property *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* and is licensed under the *
98890889ffb2e8f6f722b00e265a211f13b5a861Corneliu-Claudiu Prodescu* Eclipse Public License, Version 1.0 *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* by AT&T Intellectual Property *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* A copy of the License is available at *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* http://www.eclipse.org/org/documents/epl-v10.html *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly* *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* Information and Software Systems Research *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* AT&T Research *
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly* Florham Park NJ *
9aeda2b3ae8ce0b018955521e4ca835a8ba8a27bLiam O'Reilly* *
57221209d11b05aa0373cc3892d5df89ba96ebf9Christian Maeder* Glenn Fowler <gsf@research.att.com> *
66bc8d6e69cde43f1ccbeb76104cf7b8038acd6cChristian Maeder* *
66bc8d6e69cde43f1ccbeb76104cf7b8038acd6cChristian Maeder***********************************************************************/
e90dc723887d541f809007ae81c9bb73ced9592eChristian Maeder/* : : generated by a yacc that works -- solaris take note : : */
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder#include "ast.h"
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly#ifndef lint
56899f6457976a2ee20f6a23f088cb5655b15715Liam O'Reillystatic const char exsccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93";
66bc8d6e69cde43f1ccbeb76104cf7b8038acd6cChristian Maeder#endif
a00461fcf7432205a79a0f12dbe6c1ebc58bc000Christian Maeder
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly#include <stdlib.h>
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly#include <string.h>
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define EXBYACC 1
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define EXMAJOR 1
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder#define EXMINOR 9
f21c7417bdd1c0282025cba0f5cb0ff5bc5c98eeLiam O'Reilly#define EXPATCH 20070509
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder#define EXEMPTY (-1)
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly#define exclearin (exchar = EXEMPTY)
c0833539c8cf577dd3f2497792fbdd818442744cChristian Maeder#define exerrok (exerrflag = 0)
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly#define EXRECOVERING (exerrflag != 0)
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maederextern int exparse(void);
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly
fa373bc327620e08861294716b4454be8d25669fChristian Maederstatic int exgrowstack(void);
036ecbd8f721096321f47cf6a354a9d1bf3d032fChristian Maeder#define EXPREFIX "ex"
fa373bc327620e08861294716b4454be8d25669fChristian Maeder/* #line 2 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder
f21c7417bdd1c0282025cba0f5cb0ff5bc5c98eeLiam O'Reilly/*
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly * Glenn Fowler
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly * AT&T Research
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly * expression library grammar and compiler
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly */
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#include <ast.h>
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#undef RS /* hp.pa <signal.h> grabs this!! */
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder/* #line 16 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
648fe1220044aac847acbdfbc4155af5556063ebChristian Maedertypedef union
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder{
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder struct Exnode_s*expr;
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder double floating;
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder struct Exref_s* reference;
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder struct Exid_s* id;
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder Sflong_t integer;
4314e26a12954cb1c9be4dea10aa8103edac5bbbChristian Maeder int op;
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder char* string;
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder struct Exbuf_s* buffer;
9aeda2b3ae8ce0b018955521e4ca835a8ba8a27bLiam O'Reilly} EXSTYPE;
9aeda2b3ae8ce0b018955521e4ca835a8ba8a27bLiam O'Reilly/* #line 129 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#include "exgram.h"
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder/* #line 52 "y.tab.c" */
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define MINTOKEN 257
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder#define CHAR 258
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define INT 259
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly#define INTEGER 260
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly#define UNSIGNED 261
fa373bc327620e08861294716b4454be8d25669fChristian Maeder#define FLOATING 262
fa373bc327620e08861294716b4454be8d25669fChristian Maeder#define STRING 263
fa373bc327620e08861294716b4454be8d25669fChristian Maeder#define VOID 264
fa373bc327620e08861294716b4454be8d25669fChristian Maeder#define STATIC 265
fa373bc327620e08861294716b4454be8d25669fChristian Maeder#define ADDRESS 266
fa373bc327620e08861294716b4454be8d25669fChristian Maeder#define BREAK 267
fa373bc327620e08861294716b4454be8d25669fChristian Maeder#define CALL 268
fa373bc327620e08861294716b4454be8d25669fChristian Maeder#define CASE 269
fa373bc327620e08861294716b4454be8d25669fChristian Maeder#define CONSTANT 270
fa373bc327620e08861294716b4454be8d25669fChristian Maeder#define CONTINUE 271
fa373bc327620e08861294716b4454be8d25669fChristian Maeder#define DECLARE 272
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define DEFAULT 273
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define DYNAMIC 274
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder#define ELSE 275
7857a35e3af533dfbd0f0e18638ebd211e6358a0Christian Maeder#define EXIT 276
7857a35e3af533dfbd0f0e18638ebd211e6358a0Christian Maeder#define FOR 277
7857a35e3af533dfbd0f0e18638ebd211e6358a0Christian Maeder#define FUNCTION 278
9aeda2b3ae8ce0b018955521e4ca835a8ba8a27bLiam O'Reilly#define ITERATE 279
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define ID 280
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define IF 281
7857a35e3af533dfbd0f0e18638ebd211e6358a0Christian Maeder#define LABEL 282
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define MEMBER 283
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define NAME 284
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define POS 285
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define PRAGMA 286
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define PRE 287
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define PRINTF 288
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define PROCEDURE 289
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define QUERY 290
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define RETURN 291
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define SCANF 292
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define SPRINTF 293
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define SSCANF 294
eb48217dfa67ddb87b8fbd846de293d0636bd578Christian Maeder#define SWITCH 295
eb48217dfa67ddb87b8fbd846de293d0636bd578Christian Maeder#define WHILE 296
eb48217dfa67ddb87b8fbd846de293d0636bd578Christian Maeder#define F2I 297
eb48217dfa67ddb87b8fbd846de293d0636bd578Christian Maeder#define F2S 298
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder#define I2F 299
eb48217dfa67ddb87b8fbd846de293d0636bd578Christian Maeder#define I2S 300
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder#define S2B 301
eb48217dfa67ddb87b8fbd846de293d0636bd578Christian Maeder#define S2F 302
eb48217dfa67ddb87b8fbd846de293d0636bd578Christian Maeder#define S2I 303
eb48217dfa67ddb87b8fbd846de293d0636bd578Christian Maeder#define F2X 304
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder#define I2X 305
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define S2X 306
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define X2F 307
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder#define X2I 308
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define X2S 309
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define OR 310
4314e26a12954cb1c9be4dea10aa8103edac5bbbChristian Maeder#define AND 311
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define EQ 312
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define NE 313
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define LE 314
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define GE 315
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define LS 316
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define RS 317
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define UNARY 318
4314e26a12954cb1c9be4dea10aa8103edac5bbbChristian Maeder#define INC 319
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define DEC 320
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define CAST 321
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define MAXTOKEN 322
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly#define EXERRCODE 256
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maedershort exlhs[] = { -1,
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder 0, 25, 25, 27, 26, 2, 2, 1, 1, 28,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 29, 1, 1, 1, 1, 1, 30, 1, 1, 1,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 1, 31, 31, 14, 32, 32, 33, 33, 24, 24,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 10, 10, 34, 11, 20, 20, 4, 4, 5, 5,
e0f1794e365dd347e97b37d7d22b2fce27296fa1Christian Maeder 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 6, 35, 36, 6, 6, 6, 6, 6, 6, 6,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
7857a35e3af533dfbd0f0e18638ebd211e6358a0Christian Maeder 6, 15, 15, 15, 15, 15, 21, 21, 21, 22,
7857a35e3af533dfbd0f0e18638ebd211e6358a0Christian Maeder 22, 8, 8, 8, 23, 23, 12, 12, 7, 7,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder 3, 3, 16, 16, 16, 17, 17, 37, 18, 19,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 19, 9, 9, 13, 38, 39, 13,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder};
7857a35e3af533dfbd0f0e18638ebd211e6358a0Christian Maedershort exlen[] = { 2,
7857a35e3af533dfbd0f0e18638ebd211e6358a0Christian Maeder 2, 0, 2, 0, 4, 0, 2, 3, 2, 0,
7857a35e3af533dfbd0f0e18638ebd211e6358a0Christian Maeder 0, 6, 6, 5, 9, 5, 0, 8, 3, 3,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 3, 0, 2, 2, 1, 2, 3, 2, 0, 1,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 1, 3, 0, 5, 1, 1, 0, 2, 0, 1,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder 3, 4, 3, 3, 3, 3, 3, 3, 3, 3,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 3, 0, 0, 7, 2, 2, 2, 2, 2, 5,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 4, 4, 4, 4, 3, 2, 2, 2, 2, 2,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 1, 3, 2, 1, 0, 2, 0, 3, 0, 1,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 1, 3, 0, 1, 1, 1, 3, 0, 3, 0,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 4, 0, 2, 1, 0, 0, 8,
bcd914850de931848b86d7728192a149f9c0108bChristian Maeder};
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reillyshort exdefred[] = { 6,
7d96b1ef2b8597330aedee6713615ec15508edcfLiam O'Reilly 0, 0, 84, 86, 83, 0, 30, 0, 82, 0,
7d96b1ef2b8597330aedee6713615ec15508edcfLiam O'Reilly 0, 0, 0, 0, 94, 87, 0, 88, 0, 90,
935613eb8e67d724f1c4a4d4a37be3324ef6708dChristian Maeder 89, 91, 0, 0, 0, 0, 0, 0, 0, 0,
f21c7417bdd1c0282025cba0f5cb0ff5bc5c98eeLiam O'Reilly 0, 0, 6, 7, 0, 0, 0, 81, 0, 0,
f21c7417bdd1c0282025cba0f5cb0ff5bc5c98eeLiam O'Reilly 0, 10, 0, 0, 0, 0, 0, 93, 0, 0,
f21c7417bdd1c0282025cba0f5cb0ff5bc5c98eeLiam O'Reilly 0, 0, 0, 0, 0, 69, 0, 68, 67, 65,
f21c7417bdd1c0282025cba0f5cb0ff5bc5c98eeLiam O'Reilly 66, 77, 79, 0, 0, 0, 9, 0, 62, 0,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 0, 0, 0, 0, 0, 0, 0, 0, 78, 80,
f21c7417bdd1c0282025cba0f5cb0ff5bc5c98eeLiam O'Reilly 76, 0, 0, 0, 0, 0, 0, 3, 75, 19,
f21c7417bdd1c0282025cba0f5cb0ff5bc5c98eeLiam O'Reilly 20, 0, 0, 0, 0, 0, 0, 0, 0, 21,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 0, 0, 0, 41, 8, 0, 0, 0, 0, 0,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 0, 0, 45, 46, 47, 0, 0, 0, 0, 0,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 11, 4, 98, 71, 0, 0, 0, 0, 72, 0,
f21c7417bdd1c0282025cba0f5cb0ff5bc5c98eeLiam O'Reilly 0, 42, 0, 0, 111, 73, 74, 110, 6, 0,
f21c7417bdd1c0282025cba0f5cb0ff5bc5c98eeLiam O'Reilly 14, 0, 0, 0, 16, 63, 70, 0, 31, 0,
7d96b1ef2b8597330aedee6713615ec15508edcfLiam O'Reilly 0, 0, 0, 13, 22, 0, 110, 12, 0, 33,
7d96b1ef2b8597330aedee6713615ec15508edcfLiam O'Reilly 0, 38, 0, 0, 32, 0, 0, 0, 0, 0,
7d96b1ef2b8597330aedee6713615ec15508edcfLiam O'Reilly 18, 23, 0, 25, 0, 0, 15, 85, 0, 28,
7d96b1ef2b8597330aedee6713615ec15508edcfLiam O'Reilly 0, 26, 96, 115, 114, 34, 27, 0, 0, 116,
935613eb8e67d724f1c4a4d4a37be3324ef6708dChristian Maeder 0, 106, 0, 0, 0, 36, 35, 109, 0, 108,
7d96b1ef2b8597330aedee6713615ec15508edcfLiam O'Reilly 107, 6, 0, 117,
7d96b1ef2b8597330aedee6713615ec15508edcfLiam O'Reilly};
7d96b1ef2b8597330aedee6713615ec15508edcfLiam O'Reillyshort exdgoto[] = { 1,
7d96b1ef2b8597330aedee6713615ec15508edcfLiam O'Reilly 34, 2, 107, 174, 35, 36, 109, 37, 91, 168,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 169, 48, 206, 192, 38, 210, 211, 212, 39, 218,
7d96b1ef2b8597330aedee6713615ec15508edcfLiam O'Reilly 40, 41, 196, 42, 43, 98, 159, 96, 158, 150,
7d96b1ef2b8597330aedee6713615ec15508edcfLiam O'Reilly 183, 193, 194, 187, 117, 176, 213, 208, 214,
7d96b1ef2b8597330aedee6713615ec15508edcfLiam O'Reilly};
7d96b1ef2b8597330aedee6713615ec15508edcfLiam O'Reillyshort exsindex[] = { 0,
7d96b1ef2b8597330aedee6713615ec15508edcfLiam O'Reilly 0, 181, 0, 0, 0, -24, 0, 376, 0, 376,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly -62, -5, 2, 7, 0, 0, 21, 0, 376, 0,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 0, 0, 49, 60, -244, 376, 376, 376, 376, -244,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly -244, 310, 0, 0, 45, 936, -61, 0, -190, 66,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 67, 0, -171, -168, 57, 58, 376, 0, 376, 376,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 376, 376, 63, 376, 376, 0, -161, 0, 0, 0,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 0, 0, 0, 82, 734, 75, 0, 376, 0, 376,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 376, 376, 376, 376, 376, 376, 376, 376, 376, 376,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 376, 376, 376, 376, 376, 376, 376, 376, 0, 0,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 0, 93, -62, 376, 376, -138, 77, 0, 0, 0,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 0, 761, 788, 78, 4, 799, 92, 963, 97, 0,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 936, 834, 376, 0, 0, 963, 376, 994, 1095, 111,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 1021, 1116, 123, 123, -30, -30, -30, -30, 56, 56,
7d96b1ef2b8597330aedee6713615ec15508edcfLiam O'Reilly -19, -19, 0, 0, 0, 963, 376, 95, 106, 118,
7d96b1ef2b8597330aedee6713615ec15508edcfLiam O'Reilly 0, 0, 0, 0, 376, 181, 181, 376, 0, 121,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 181, 0, 871, 126, 0, 0, 0, 0, 0, 110,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 0, -103, 963, 64, 0, 0, 0, 15, 0, -214,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 181, 376, 181, 0, 0, 376, 0, 0, -62, 0,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 133, 0, -87, 963, 0, 95, 88, 181, -131, 130,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 0, 0, -189, 0, 91, -29, 0, 0, 131, 0,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 181, 0, 0, 0, 0, 0, 0, -91, 0, 0,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 147, 0, -207, 151, -78, 0, 0, 0, 73, 0,
f19dc06364e8d6ea36f7c170e1f7a0677de63184Liam O'Reilly 0, 0, 112, 0,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder};
fa373bc327620e08861294716b4454be8d25669fChristian Maedershort exrindex[] = { 0,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 0, 140, 0, 0, 0, 639, 0, -51, 0, -51,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 472, 0, 0, 0, 0, 0, 0, 0, -51, 0,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 0, 0, 0, 0, -83, -184, -184, -184, -184, -83,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder -83, -184, 0, 0, 0, -22, 676, 0, 0, 0,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 0, 0, 202, 0, 0, 0, -184, 0, -184, -51,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder -184, -39, 0, -184, -184, 0, 0, 0, 0, 0,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 0, 0, 0, 0, 0, -55, 0, -184, 0, -184,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder -184, -184, -184, -184, -184, -184, -184, -184, 0, 0,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 0, 0, 445, -39, -39, 0, 0, 0, 0, 0,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 0, 0, 0, 0, 900, 0, 162, -20, 0, 0,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder 163, 0, -184, 0, 0, 28, -184, -8, 149, 51,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 600, 1398, 1400, 1426, 1257, 1301, 1330, 1341, 1136, 1225,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 1162, 1199, 0, 0, 0, 84, -39, 499, 0, 0,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder 0, 0, 0, 0, -51, -55, -55, -184, 0, 0,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder -55, 0, 0, 0, 0, 0, 0, 0, 0, 0,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 0, 1, 61, 0, 0, 0, 0, 0, 0, 0,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder 339, -35, -55, 0, 0, -184, 0, 0, 160, 0,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 0, 0, 0, 172, 0, 0, 14, -55, 0, 0,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 0, 0, 38, 0, 0, 20, 0, 0, 0, 0,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 626, 0, 0, 0, 0, 0, 0, 169, -38, 0,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 170, 0, 0, 0, 0, 0, 0, 0, 0, 0,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 0, 0, -55, 0,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder};
fa373bc327620e08861294716b4454be8d25669fChristian Maedershort exgindex[] = { 0,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder -120, -13, 0, 0, 6, 1550, -85, 32, 19, 0,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 41, -88, 0, 0, 31, 0, 0, 13, 18, 0,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 0, 0, 29, 0, 0, 0, 0, 0, 0,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder};
fa373bc327620e08861294716b4454be8d25669fChristian Maeder#define EXTABLESIZE 1737
fa373bc327620e08861294716b4454be8d25669fChristian Maedershort extable[] = { 88,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 37, 99, 104, 39, 138, 39, 87, 39, 139, 140,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 204, 85, 83, 45, 84, 46, 86, 87, 40, 66,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 101, 44, 85, 101, 53, 161, 162, 86, 47, 11,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 165, 88, 60, 37, 49, 60, 40, 191, 37, 15,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 37, 50, 57, 37, 146, 37, 51, 57, 57, 60,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 60, 154, 182, 95, 60, 104, 56, 95, 177, 37,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 52, 62, 63, 112, 88, 179, 216, 197, 61, 180,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 6, 61, 95, 178, 95, 6, 217, 6, 112, 189,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder 6, 105, 6, 190, 60, 61, 61, 92, 54, 93,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder 186, 56, 87, 110, 56, 110, 6, 85, 83, 55,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 84, 102, 86, 67, 102, 94, 95, 28, 56, 56,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 97, 99, 25, 56, 32, 100, 101, 26, 93, 27,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 61, 110, 113, 37, 113, 37, 37, 113, 3, 4,
fa373bc327620e08861294716b4454be8d25669fChristian Maeder 5, 198, 137, 141, 142, 148, 145, 149, 9, 2,
56899f6457976a2ee20f6a23f088cb5655b15715Liam O'Reilly 155, 113, 113, 56, 28, 171, 156, 87, 74, 25,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 160, 32, 85, 83, 26, 84, 27, 86, 157, 87,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 6, 164, 6, 6, 85, 83, 167, 84, 172, 86,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 77, 173, 78, 188, 56, 170, 113, 181, 195, 201,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 209, 189, 77, 203, 78, 190, 175, 200, 207, 59,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder 215, 219, 59, 220, 170, 222, 110, 33, 39, 115,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder 29, 1, 100, 17, 73, 97, 59, 59, 223, 103,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 105, 59, 64, 28, 205, 64, 29, 185, 25, 199,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 32, 202, 110, 26, 110, 27, 110, 221, 110, 64,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 64, 0, 0, 0, 33, 108, 224, 29, 110, 0,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 110, 59, 110, 0, 110, 108, 0, 0, 0, 0,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder 0, 0, 0, 0, 0, 0, 0, 89, 90, 0,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder 37, 37, 37, 37, 64, 37, 0, 37, 0, 37,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder 37, 37, 37, 37, 37, 0, 37, 37, 37, 0,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 37, 37, 37, 0, 37, 81, 82, 0, 37, 37,
eb48217dfa67ddb87b8fbd846de293d0636bd578Christian Maeder 37, 37, 37, 37, 37, 37, 37, 6, 6, 6,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 6, 60, 6, 33, 6, 0, 29, 6, 6, 6,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 0, 6, 0, 6, 6, 6, 0, 6, 6, 37,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 37, 6, 89, 90, 0, 6, 6, 6, 6, 6,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder 6, 6, 6, 6, 3, 4, 5, 6, 5, 7,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 0, 8, 28, 0, 9, 10, 0, 25, 11, 32,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 12, 13, 26, 0, 27, 14, 6, 6, 15, 0,
66bc8d6e69cde43f1ccbeb76104cf7b8038acd6cChristian Maeder 56, 56, 16, 17, 18, 19, 20, 21, 22, 23,
66bc8d6e69cde43f1ccbeb76104cf7b8038acd6cChristian Maeder 24, 3, 4, 5, 6, 0, 7, 0, 8, 0,
66bc8d6e69cde43f1ccbeb76104cf7b8038acd6cChristian Maeder 0, 9, 10, 0, 0, 11, 0, 12, 13, 0,
66bc8d6e69cde43f1ccbeb76104cf7b8038acd6cChristian Maeder 0, 0, 14, 30, 31, 15, 0, 39, 0, 16,
66bc8d6e69cde43f1ccbeb76104cf7b8038acd6cChristian Maeder 17, 18, 19, 20, 21, 22, 23, 24, 28, 0,
66bc8d6e69cde43f1ccbeb76104cf7b8038acd6cChristian Maeder 0, 29, 0, 25, 0, 32, 0, 110, 26, 110,
66bc8d6e69cde43f1ccbeb76104cf7b8038acd6cChristian Maeder 27, 2, 75, 76, 79, 80, 81, 82, 0, 0,
ace03c3051e5c5144e43ae78cae73f6a29dde6d5Christian Maeder 30, 31, 0, 0, 0, 29, 79, 80, 81, 82,
ace03c3051e5c5144e43ae78cae73f6a29dde6d5Christian Maeder 3, 4, 5, 6, 0, 7, 0, 8, 0, 0,
ace03c3051e5c5144e43ae78cae73f6a29dde6d5Christian Maeder 9, 10, 0, 0, 11, 0, 12, 13, 59, 59,
ace03c3051e5c5144e43ae78cae73f6a29dde6d5Christian Maeder 0, 14, 0, 0, 15, 0, 0, 0, 16, 17,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 18, 19, 20, 21, 22, 23, 24, 0, 0, 0,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 0, 97, 97, 0, 0, 97, 97, 97, 97, 97,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 97, 97, 0, 0, 0, 0, 0, 0, 0, 30,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 31, 29, 97, 97, 97, 97, 97, 97, 97, 97,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 0, 0, 97, 97, 97, 97, 97, 0, 97, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 0, 0, 0, 0, 0, 0, 0, 97,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 97, 97, 97, 97, 97, 92, 92, 97, 97, 92,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 92, 92, 92, 92, 0, 92, 0, 0, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 0, 0, 0, 0, 92, 92, 92, 92,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 92, 92, 0, 0, 97, 97, 0, 0, 97, 3,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 4, 5, 6, 0, 0, 0, 0, 0, 0, 9,
8e9c3881fb6e710b1e08bf5ac8ff9d393df2e74eChristian Maeder 0, 64, 0, 11, 0, 12, 0, 0, 0, 0,
8e9c3881fb6e710b1e08bf5ac8ff9d393df2e74eChristian Maeder 0, 92, 92, 15, 0, 97, 0, 16, 17, 18,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 0, 20, 21, 22, 0, 0, 0, 0, 0, 0,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 29, 0, 0, 0, 0, 0, 110, 0, 110, 0,
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder 5, 0, 92, 0, 0, 0, 0, 0, 30, 31,
935613eb8e67d724f1c4a4d4a37be3324ef6708dChristian Maeder 0, 0, 0, 0, 0, 3, 4, 5, 6, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 57, 0, 0, 57, 0, 9, 0, 0, 0, 11,
a00461fcf7432205a79a0f12dbe6c1ebc58bc000Christian Maeder 0, 12, 0, 0, 0, 0, 0, 57, 57, 15,
a00461fcf7432205a79a0f12dbe6c1ebc58bc000Christian Maeder 0, 0, 57, 16, 17, 18, 0, 20, 21, 22,
a00461fcf7432205a79a0f12dbe6c1ebc58bc000Christian Maeder 0, 0, 0, 0, 0, 85, 85, 0, 0, 85,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder 85, 85, 85, 85, 39, 85, 0, 0, 0, 0,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder 0, 0, 57, 57, 30, 31, 85, 85, 85, 0,
a00461fcf7432205a79a0f12dbe6c1ebc58bc000Christian Maeder 85, 85, 0, 0, 0, 0, 0, 0, 0, 0,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder 0, 0, 112, 112, 0, 0, 112, 112, 112, 112,
a00461fcf7432205a79a0f12dbe6c1ebc58bc000Christian Maeder 112, 0, 112, 57, 0, 0, 0, 0, 0, 0,
a00461fcf7432205a79a0f12dbe6c1ebc58bc000Christian Maeder 0, 85, 85, 112, 112, 112, 0, 112, 112, 0,
a00461fcf7432205a79a0f12dbe6c1ebc58bc000Christian Maeder 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder 24, 0, 0, 0, 97, 97, 97, 97, 97, 97,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder 97, 97, 85, 97, 97, 0, 0, 0, 112, 112,
a00461fcf7432205a79a0f12dbe6c1ebc58bc000Christian Maeder 87, 74, 0, 0, 114, 85, 83, 68, 84, 0,
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder 86, 97, 97, 97, 97, 97, 97, 97, 97, 0,
a00461fcf7432205a79a0f12dbe6c1ebc58bc000Christian Maeder 97, 97, 0, 77, 0, 78, 69, 87, 74, 112,
bcd914850de931848b86d7728192a149f9c0108bChristian Maeder 0, 0, 85, 83, 68, 84, 0, 86, 92, 92,
a00461fcf7432205a79a0f12dbe6c1ebc58bc000Christian Maeder 92, 92, 92, 92, 92, 92, 0, 92, 92, 0,
a00461fcf7432205a79a0f12dbe6c1ebc58bc000Christian Maeder 77, 0, 78, 69, 87, 74, 0, 73, 144, 85,
a00461fcf7432205a79a0f12dbe6c1ebc58bc000Christian Maeder 83, 68, 84, 0, 86, 87, 74, 0, 0, 147,
a00461fcf7432205a79a0f12dbe6c1ebc58bc000Christian Maeder 85, 83, 68, 84, 0, 86, 0, 77, 0, 78,
a00461fcf7432205a79a0f12dbe6c1ebc58bc000Christian Maeder 69, 0, 0, 143, 73, 0, 0, 72, 77, 0,
a00461fcf7432205a79a0f12dbe6c1ebc58bc000Christian Maeder 78, 69, 0, 0, 0, 0, 0, 0, 0, 0,
a00461fcf7432205a79a0f12dbe6c1ebc58bc000Christian Maeder 87, 74, 0, 0, 151, 85, 83, 68, 84, 0,
a00461fcf7432205a79a0f12dbe6c1ebc58bc000Christian Maeder 86, 73, 0, 0, 72, 0, 0, 0, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 73, 77, 24, 78, 69, 29, 24, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 0, 110, 0, 110, 0, 87, 74, 57,
bcd914850de931848b86d7728192a149f9c0108bChristian Maeder 57, 72, 85, 83, 68, 84, 0, 86, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 72, 0, 0, 0, 0, 73, 166, 0,
57221209d11b05aa0373cc3892d5df89ba96ebf9Christian Maeder 77, 0, 78, 69, 0, 0, 112, 112, 0, 0,
57221209d11b05aa0373cc3892d5df89ba96ebf9Christian Maeder 0, 112, 112, 112, 112, 0, 112, 0, 85, 85,
bcd914850de931848b86d7728192a149f9c0108bChristian Maeder 85, 85, 85, 85, 85, 85, 0, 72, 112, 112,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 112, 112, 0, 73, 0, 0, 0, 0, 0,
eb48217dfa67ddb87b8fbd846de293d0636bd578Christian Maeder 0, 0, 87, 74, 0, 0, 0, 85, 83, 68,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 84, 0, 86, 0, 0, 112, 112, 112, 112, 112,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 112, 112, 112, 112, 72, 77, 0, 78, 69, 87,
eb48217dfa67ddb87b8fbd846de293d0636bd578Christian Maeder 74, 0, 0, 0, 85, 83, 0, 84, 0, 86,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 77, 112, 78, 69, 0, 0, 0, 73,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 87, 74, 0, 0, 0, 85, 83, 0, 84, 0,
bcd914850de931848b86d7728192a149f9c0108bChristian Maeder 86, 0, 0, 70, 71, 75, 76, 79, 80, 81,
bcd914850de931848b86d7728192a149f9c0108bChristian Maeder 82, 0, 0, 77, 0, 78, 73, 87, 74, 72,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 85, 83, 0, 84, 0, 86, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 70, 71, 75, 76, 79, 80, 81, 82, 0, 0,
9aeda2b3ae8ce0b018955521e4ca835a8ba8a27bLiam O'Reilly 77, 0, 78, 0, 0, 0, 72, 73, 0, 0,
57221209d11b05aa0373cc3892d5df89ba96ebf9Christian Maeder 0, 0, 0, 0, 0, 0, 0, 70, 71, 75,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 76, 79, 80, 81, 82, 0, 0, 0, 70, 71,
57221209d11b05aa0373cc3892d5df89ba96ebf9Christian Maeder 75, 76, 79, 80, 81, 82, 0, 72, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 87, 74, 0, 0, 0, 85, 83, 0, 84,
9aeda2b3ae8ce0b018955521e4ca835a8ba8a27bLiam O'Reilly 0, 86, 0, 70, 71, 75, 76, 79, 80, 81,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 82, 0, 87, 0, 77, 0, 78, 85, 83, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 84, 0, 86, 0, 0, 0, 0, 0, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 0, 48, 0, 77, 48, 78, 0, 48,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 70, 71, 75, 76, 79, 80, 81, 82, 73, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 0, 48, 48, 48, 0, 48, 48, 58,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 58, 0, 58, 58, 58, 0, 0, 112,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 112, 112, 112, 112, 112, 112, 112, 0, 72, 58,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 58, 58, 0, 58, 58, 0, 0, 0, 48, 48,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 0, 0, 0, 0, 44, 0, 0, 44,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 44, 44, 44, 0, 70, 71, 75, 76, 79,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 80, 81, 82, 0, 58, 58, 44, 44, 44, 48,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 44, 44, 49, 0, 0, 49, 0, 0, 49, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 70, 71, 75, 76, 79, 80, 81, 82,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 49, 49, 49, 58, 49, 49, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 44, 44, 0, 43, 0, 0, 43, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 43, 0, 0, 0, 71, 75, 76, 79, 80, 81,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 82, 0, 0, 0, 43, 43, 0, 49, 49, 43,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 44, 0, 0, 0, 0, 0, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 75, 76, 79, 80, 81, 82, 50, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 50, 0, 0, 50, 0, 0, 0, 49, 43,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 43, 0, 0, 0, 0, 0, 0, 0, 50, 50,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 0, 50, 0, 0, 0, 51, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 51, 0, 0, 51, 0, 0, 0, 0, 52, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 43, 52, 0, 0, 52, 0, 0, 51, 51, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 51, 50, 50, 0, 0, 0, 52, 52,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 0, 52, 0, 0, 75, 76, 79, 80,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 81, 82, 0, 0, 0, 0, 0, 0, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 51, 51, 50, 0, 0, 75, 76, 79,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 80, 81, 82, 52, 52, 55, 0, 53, 55, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 53, 55, 0, 53, 0, 48, 48, 48, 48, 48,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 48, 48, 48, 51, 0, 55, 55, 53, 53, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 55, 0, 53, 54, 52, 0, 54, 0, 0, 54,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 58, 58, 58, 58, 58, 58, 58, 58, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 0, 54, 54, 0, 0, 0, 54, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 55, 55, 53, 53, 0, 0, 0, 0, 0, 0,
57221209d11b05aa0373cc3892d5df89ba96ebf9Christian Maeder 0, 0, 0, 0, 0, 0, 0, 0, 44, 44,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 44, 44, 44, 44, 44, 44, 0, 0, 54, 54,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 55, 0, 53, 0, 0, 0, 0, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 0, 0, 49, 49, 49, 49, 49, 49,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 49, 49, 0, 0, 0, 0, 0, 0, 0, 54,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9aeda2b3ae8ce0b018955521e4ca835a8ba8a27bLiam O'Reilly 0, 0, 0, 0, 0, 0, 43, 43, 43, 43,
dd7da1b5fedc05b92ba023ebd803e6f4a662503bChristian Maeder 0, 0, 0, 0, 0, 58, 59, 60, 61, 0,
dd7da1b5fedc05b92ba023ebd803e6f4a662503bChristian Maeder 0, 65, 0, 0, 0, 0, 0, 0, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 0, 0, 0, 0, 102, 0, 103, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 106, 108, 0, 111, 112, 0, 0, 0, 0, 0,
9aeda2b3ae8ce0b018955521e4ca835a8ba8a27bLiam O'Reilly 50, 50, 50, 50, 0, 0, 0, 116, 0, 118,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 129, 130, 131, 132, 133, 134, 135, 136, 0, 51,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 51, 51, 51, 108, 108, 0, 0, 0, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 52, 52, 52, 52, 0, 0, 0, 0, 0, 0,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 0, 0, 152, 0, 0, 0, 153, 0, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 0, 0, 0, 0, 108, 0, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 0, 0, 0, 0, 0, 163, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 0, 0, 0, 0, 0, 55, 55, 53,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 53, 0, 0, 0, 0, 0, 0, 0, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 0, 0, 0, 184, 0, 0, 0, 0,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 0, 0, 0, 0, 54, 54,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly};
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reillyshort excheck[] = { 61,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 0, 41, 41, 59, 93, 41, 37, 59, 94, 95,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 40, 42, 43, 8, 45, 10, 47, 37, 41, 33,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 41, 46, 42, 44, 19, 146, 147, 47, 91, 274,
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder 151, 61, 41, 33, 40, 44, 59, 125, 38, 284,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 40, 40, 25, 43, 41, 45, 40, 30, 31, 58,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 59, 137, 173, 40, 63, 50, 25, 44, 44, 59,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 40, 30, 31, 44, 61, 280, 274, 188, 41, 284,
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder 33, 44, 59, 59, 61, 38, 284, 40, 59, 269,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 43, 50, 45, 273, 93, 58, 59, 278, 40, 280,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 179, 41, 37, 278, 44, 280, 59, 42, 43, 40,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 45, 41, 47, 59, 44, 40, 40, 33, 58, 59,
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder 282, 280, 38, 63, 40, 59, 59, 43, 280, 45,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 93, 59, 41, 123, 41, 125, 126, 44, 260, 261,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 262, 263, 40, 272, 58, 44, 59, 41, 270, 0,
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder 46, 58, 59, 93, 33, 159, 41, 37, 38, 38,
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder 145, 40, 42, 43, 43, 45, 45, 47, 41, 37,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 123, 41, 125, 126, 42, 43, 41, 45, 59, 47,
9aeda2b3ae8ce0b018955521e4ca835a8ba8a27bLiam O'Reilly 60, 275, 62, 41, 124, 158, 93, 172, 91, 193,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 272, 269, 60, 93, 62, 273, 123, 58, 58, 41,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 44, 41, 44, 272, 177, 123, 280, 123, 59, 125,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 126, 0, 41, 41, 94, 46, 58, 59, 222, 41,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 41, 63, 41, 33, 196, 44, 272, 177, 38, 189,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 40, 193, 278, 43, 280, 45, 278, 215, 280, 58,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 59, -1, -1, -1, 123, 274, 125, 126, 278, -1,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 280, 93, 278, -1, 280, 284, -1, -1, -1, -1,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly -1, -1, -1, -1, -1, -1, -1, 319, 320, -1,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 260, 261, 262, 263, 93, 265, -1, 267, -1, 269,
bcd914850de931848b86d7728192a149f9c0108bChristian Maeder 270, 271, 272, 273, 274, -1, 276, 277, 278, -1,
bcd914850de931848b86d7728192a149f9c0108bChristian Maeder 280, 281, 282, -1, 284, 316, 317, -1, 288, 289,
bcd914850de931848b86d7728192a149f9c0108bChristian Maeder 290, 291, 292, 293, 294, 295, 296, 260, 261, 262,
bcd914850de931848b86d7728192a149f9c0108bChristian Maeder 263, 310, 265, 123, 267, -1, 126, 270, 271, 272,
bcd914850de931848b86d7728192a149f9c0108bChristian Maeder -1, 274, -1, 276, 277, 278, -1, 280, 281, 319,
bcd914850de931848b86d7728192a149f9c0108bChristian Maeder 320, 284, 319, 320, -1, 288, 289, 290, 291, 292,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 293, 294, 295, 296, 260, 261, 262, 263, 0, 265,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder -1, 267, 33, -1, 270, 271, -1, 38, 274, 40,
9aeda2b3ae8ce0b018955521e4ca835a8ba8a27bLiam O'Reilly 276, 277, 43, -1, 45, 281, 319, 320, 284, -1,
57221209d11b05aa0373cc3892d5df89ba96ebf9Christian Maeder 310, 311, 288, 289, 290, 291, 292, 293, 294, 295,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 296, 260, 261, 262, 263, -1, 265, -1, 267, -1,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder -1, 270, 271, -1, -1, 274, -1, 276, 277, -1,
57221209d11b05aa0373cc3892d5df89ba96ebf9Christian Maeder -1, -1, 281, 319, 320, 284, -1, 59, -1, 288,
bcd914850de931848b86d7728192a149f9c0108bChristian Maeder 289, 290, 291, 292, 293, 294, 295, 296, 33, -1,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly -1, 272, -1, 38, -1, 40, -1, 278, 43, 280,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 45, 282, 312, 313, 314, 315, 316, 317, -1, -1,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 319, 320, -1, -1, -1, 126, 314, 315, 316, 317,
9aeda2b3ae8ce0b018955521e4ca835a8ba8a27bLiam O'Reilly 260, 261, 262, 263, -1, 265, -1, 267, -1, -1,
57221209d11b05aa0373cc3892d5df89ba96ebf9Christian Maeder 270, 271, -1, -1, 274, -1, 276, 277, 310, 311,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder -1, 281, -1, -1, 284, -1, -1, -1, 288, 289,
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder 290, 291, 292, 293, 294, 295, 296, -1, -1, -1,
57221209d11b05aa0373cc3892d5df89ba96ebf9Christian Maeder -1, 37, 38, -1, -1, 41, 42, 43, 44, 45,
bcd914850de931848b86d7728192a149f9c0108bChristian Maeder 46, 47, -1, -1, -1, -1, -1, -1, -1, 319,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly 320, 126, 58, 59, 60, 61, 62, 63, 37, 38,
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly -1, -1, 41, 42, 43, 44, 45, -1, 47, -1,
9aeda2b3ae8ce0b018955521e4ca835a8ba8a27bLiam O'Reilly -1, -1, -1, -1, -1, -1, -1, -1, -1, 58,
eb48217dfa67ddb87b8fbd846de293d0636bd578Christian Maeder 59, 60, 61, 62, 63, 37, 38, 93, 94, 41,
05cc55892e6c93bdd7b9c3f100ab1bb65fe6a21eLiam O'Reilly 42, 43, 44, 45, -1, 47, -1, -1, -1, -1,
05cc55892e6c93bdd7b9c3f100ab1bb65fe6a21eLiam O'Reilly -1, -1, -1, -1, -1, -1, 58, 59, 60, 61,
05cc55892e6c93bdd7b9c3f100ab1bb65fe6a21eLiam O'Reilly 62, 63, -1, -1, 93, 94, -1, -1, 124, 260,
05cc55892e6c93bdd7b9c3f100ab1bb65fe6a21eLiam O'Reilly 261, 262, 263, -1, -1, -1, -1, -1, -1, 270,
05cc55892e6c93bdd7b9c3f100ab1bb65fe6a21eLiam O'Reilly -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,
};
#define EXFINAL 1
#ifndef EXDEBUG
#define EXDEBUG 0
#endif
#define EXMAXTOKEN 322
#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
#undef EXMAXDEPTH
#define EXMAXDEPTH EXSTACKSIZE
#else
#ifdef EXMAXDEPTH
#define EXSTACKSIZE EXMAXDEPTH
#else
#define EXSTACKSIZE 10000
#define EXMAXDEPTH 10000
#endif
#endif
#define EXINITSTACKSIZE 500
int exdebug;
int exnerrs;
int exerrflag;
int exchar;
short *exssp;
EXSTYPE *exvsp;
EXSTYPE exval;
EXSTYPE exlval;
/* variables for the parser stack */
static short *exss;
static short *exsslim;
static EXSTYPE *exvs;
static int exstacksize;
/* #line 1104 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
#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;
EXSTYPE *newvs;
if ((newsize = exstacksize) == 0)
newsize = EXINITSTACKSIZE;
else if (newsize >= EXMAXDEPTH)
return -1;
else if ((newsize *= 2) > EXMAXDEPTH)
newsize = EXMAXDEPTH;
i = exssp - exss;
newss = (exss != 0)
? (short *)realloc(exss, newsize * sizeof(*newss))
: (short *)malloc(newsize * sizeof(*newss));
if (newss == 0)
return -1;
exss = newss;
exssp = newss + i;
newvs = (exvs != 0)
? (EXSTYPE *)realloc(exvs, newsize * sizeof(*newvs))
: (EXSTYPE *)malloc(newsize * sizeof(*newvs));
if (newvs == 0)
return -1;
exvs = newvs;
exvsp = newvs + i;
exstacksize = newsize;
exsslim = exss + newsize - 1;
return 0;
}
#define EXABORT goto exabort
#define EXREJECT goto exabort
#define EXACCEPT goto exaccept
#define EXERROR goto exerrlab
int
exparse(void)
{
register int exm, exn, exstate;
#if EXDEBUG
register const char *exs;
if ((exs = getenv("EXDEBUG")) != 0)
{
exn = *exs;
if (exn >= '0' && exn <= '9')
exdebug = exn - '0';
}
#endif
exnerrs = 0;
exerrflag = 0;
exchar = EXEMPTY;
if (exss == NULL && exgrowstack()) goto exoverflow;
exssp = exss;
exvsp = exvs;
*exssp = exstate = 0;
exloop:
if ((exn = exdefred[exstate]) != 0) goto exreduce;
if (exchar < 0)
{
if ((exchar = exlex()) < 0) exchar = 0;
#if EXDEBUG
if (exdebug)
{
exs = 0;
if (exchar <= EXMAXTOKEN) exs = exname[exchar];
if (!exs) exs = "illegal-symbol";
printf("%sdebug: state %d, reading %d (%s)\n",
EXPREFIX, exstate, exchar, exs);
}
#endif
}
if ((exn = exsindex[exstate]) && (exn += exchar) >= 0 &&
exn <= EXTABLESIZE && excheck[exn] == exchar)
{
#if EXDEBUG
if (exdebug)
printf("%sdebug: state %d, shifting to state %d\n",
EXPREFIX, exstate, extable[exn]);
#endif
if (exssp >= exsslim && exgrowstack())
{
goto exoverflow;
}
*++exssp = exstate = extable[exn];
*++exvsp = exlval;
exchar = EXEMPTY;
if (exerrflag > 0) --exerrflag;
goto exloop;
}
if ((exn = exrindex[exstate]) && (exn += exchar) >= 0 &&
exn <= EXTABLESIZE && excheck[exn] == exchar)
{
exn = extable[exn];
goto exreduce;
}
if (exerrflag) goto exinrecovery;
exerror("syntax error");
#ifdef lint
goto exerrlab;
#endif
exerrlab:
++exnerrs;
exinrecovery:
if (exerrflag < 3)
{
exerrflag = 3;
for (;;)
{
if ((exn = exsindex[*exssp]) && (exn += EXERRCODE) >= 0 &&
exn <= EXTABLESIZE && excheck[exn] == EXERRCODE)
{
#if EXDEBUG
if (exdebug)
printf("%sdebug: state %d, error recovery shifting\
to state %d\n", EXPREFIX, *exssp, extable[exn]);
#endif
if (exssp >= exsslim && exgrowstack())
{
goto exoverflow;
}
*++exssp = exstate = extable[exn];
*++exvsp = exlval;
goto exloop;
}
else
{
#if EXDEBUG
if (exdebug)
printf("%sdebug: error recovery discarding state %d\n",
EXPREFIX, *exssp);
#endif
if (exssp <= exss) goto exabort;
--exssp;
--exvsp;
}
}
}
else
{
if (exchar == 0) goto exabort;
#if EXDEBUG
if (exdebug)
{
exs = 0;
if (exchar <= EXMAXTOKEN) exs = exname[exchar];
if (!exs) exs = "illegal-symbol";
printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
EXPREFIX, exstate, exchar, exs);
}
#endif
exchar = EXEMPTY;
goto exloop;
}
exreduce:
#if EXDEBUG
if (exdebug)
printf("%sdebug: state %d, reducing by rule %d (%s)\n",
EXPREFIX, exstate, exn, exrule[exn]);
#endif
exm = exlen[exn];
if (exm)
exval = exvsp[1-exm];
else
memset(&exval, 0, sizeof exval);
switch (exn)
{
case 1:
/* #line 137 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
if (exvsp[-1].expr && !(expr.program->disc->flags & EX_STRICT))
{
if (expr.program->main.value && !(expr.program->disc->flags & EX_RETAIN))
exfreenode(expr.program, expr.program->main.value);
if (exvsp[-1].expr->op == S2B)
{
Exnode_t* x;
x = exvsp[-1].expr;
exvsp[-1].expr = x->data.operand.left;
x->data.operand.left = 0;
exfreenode(expr.program, x);
}
expr.program->main.lex = PROCEDURE;
expr.program->main.value = exnewnode(expr.program, PROCEDURE, 1, exvsp[-1].expr->type, NiL, exvsp[-1].expr);
}
}
break;
case 4:
/* #line 161 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
register Dtdisc_t* disc;
if (expr.procedure)
exerror("no nested function definitions");
exvsp[-1].id->lex = PROCEDURE;
expr.procedure = exvsp[-1].id->value = exnewnode(expr.program, PROCEDURE, 1, exvsp[-1].id->type, NiL, NiL);
expr.procedure->type = INTEGER;
if (!(disc = newof(0, Dtdisc_t, 1, 0)))
exnospace();
disc->key = offsetof(Exid_t, name);
if (expr.assigned && !streq(exvsp[-1].id->name, "begin"))
{
if (!(expr.procedure->data.procedure.frame = dtopen(disc, Dtset)) || !dtview(expr.procedure->data.procedure.frame, expr.program->symbols))
exnospace();
expr.program->symbols = expr.program->frame = expr.procedure->data.procedure.frame;
}
}
break;
case 5:
/* #line 179 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
expr.procedure = 0;
if (expr.program->frame)
{
expr.program->symbols = expr.program->frame->view;
dtview(expr.program->frame, NiL);
expr.program->frame = 0;
}
if (exvsp[0].expr && exvsp[0].expr->op == S2B)
{
Exnode_t* x;
x = exvsp[0].expr;
exvsp[0].expr = x->data.operand.left;
x->data.operand.left = 0;
exfreenode(expr.program, x);
}
exvsp[-3].id->value->data.operand.right = excast(expr.program, exvsp[0].expr, exvsp[-3].id->type, NiL, 0);
}
break;
case 6:
/* #line 201 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = 0;
}
break;
case 7:
/* #line 205 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
if (!exvsp[-1].expr)
exval.expr = exvsp[0].expr;
else if (!exvsp[0].expr)
exval.expr = exvsp[-1].expr;
else if (exvsp[-1].expr->op == CONSTANT)
{
exfreenode(expr.program, exvsp[-1].expr);
exval.expr = exvsp[0].expr;
}
else if (exvsp[-1].expr->op == ';')
{
exval.expr = exvsp[-1].expr;
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 = exnewnode(expr.program, ';', 1, exvsp[-1].expr->type, exvsp[-1].expr, NiL);
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:
/* #line 229 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exvsp[-1].expr;
}
break;
case 9:
/* #line 233 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
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:
/* #line 236 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{expr.instatic=exvsp[0].integer;}
break;
case 11:
/* #line 236 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{expr.declare=exvsp[0].id->type;}
break;
case 12:
/* #line 237 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exvsp[-1].expr;
expr.declare = 0;
}
break;
case 13:
/* #line 242 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
if (exvsp[-3].expr->type == STRING)
exvsp[-3].expr = exnewnode(expr.program, S2B, 1, INTEGER, exvsp[-3].expr, NiL);
else if (!INTEGRAL(exvsp[-3].expr->type))
exvsp[-3].expr = excast(expr.program, exvsp[-3].expr, INTEGER, NiL, 0);
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:
/* #line 250 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exnewnode(expr.program, ITERATE, 0, INTEGER, NiL, NiL);
exval.expr->data.generate.array = exvsp[-2].expr;
if (!exvsp[-2].expr->data.variable.index || exvsp[-2].expr->data.variable.index->op != DYNAMIC)
exerror("simple index variable expected");
exval.expr->data.generate.index = exvsp[-2].expr->data.variable.index->data.variable.symbol;
if (exvsp[-2].expr->op == ID && exval.expr->data.generate.index->type != INTEGER)
exerror("integer index variable expected");
exfreenode(expr.program, exvsp[-2].expr->data.variable.index);
exvsp[-2].expr->data.variable.index = 0;
exval.expr->data.generate.statement = exvsp[0].expr;
}
break;
case 15:
/* #line 263 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
if (!exvsp[-4].expr)
{
exvsp[-4].expr = exnewnode(expr.program, CONSTANT, 0, INTEGER, NiL, NiL);
exvsp[-4].expr->data.constant.value.integer = 1;
}
else if (exvsp[-4].expr->type == STRING)
exvsp[-4].expr = exnewnode(expr.program, S2B, 1, INTEGER, exvsp[-4].expr, NiL);
else if (!INTEGRAL(exvsp[-4].expr->type))
exvsp[-4].expr = excast(expr.program, exvsp[-4].expr, INTEGER, NiL, 0);
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));
if (exvsp[-6].expr)
exval.expr = exnewnode(expr.program, ';', 1, INTEGER, exvsp[-6].expr, exval.expr);
}
break;
case 16:
/* #line 278 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
if (exvsp[-2].expr->type == STRING)
exvsp[-2].expr = exnewnode(expr.program, S2B, 1, INTEGER, exvsp[-2].expr, NiL);
else if (!INTEGRAL(exvsp[-2].expr->type))
exvsp[-2].expr = excast(expr.program, exvsp[-2].expr, INTEGER, NiL, 0);
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:
/* #line 285 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{expr.declare=exvsp[0].expr->type;}
break;
case 18:
/* #line 286 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
register Switch_t* sw = expr.swstate;
exval.expr = exnewnode(expr.program, exvsp[-7].id->index, 1, INTEGER, exvsp[-5].expr, exnewnode(expr.program, DEFAULT, 1, 0, sw->defcase, sw->firstcase));
expr.swstate = expr.swstate->prev;
if (sw->base)
free(sw->base);
if (sw != &swstate)
free(sw);
expr.declare = 0;
}
break;
case 19:
/* #line 298 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
loopop:
if (!exvsp[-1].expr)
{
exvsp[-1].expr = exnewnode(expr.program, CONSTANT, 0, INTEGER, NiL, NiL);
exvsp[-1].expr->data.constant.value.integer = 1;
}
else if (!INTEGRAL(exvsp[-1].expr->type))
exvsp[-1].expr = excast(expr.program, exvsp[-1].expr, INTEGER, NiL, 0);
exval.expr = exnewnode(expr.program, exvsp[-2].id->index, 1, INTEGER, exvsp[-1].expr, NiL);
}
break;
case 20:
/* #line 310 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto loopop;
}
break;
case 21:
/* #line 314 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
if (exvsp[-1].expr)
{
if (expr.procedure && !expr.procedure->type)
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:
/* #line 326 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
register Switch_t* sw;
int n;
if (expr.swstate)
{
if (!(sw = newof(0, Switch_t, 1, 0)))
{
exnospace();
sw = &swstate;
}
sw->prev = expr.swstate;
}
else
sw = &swstate;
expr.swstate = sw;
sw->type = expr.declare;
sw->firstcase = 0;
sw->lastcase = 0;
sw->defcase = 0;
sw->def = 0;
n = 8;
if (!(sw->base = newof(0, Extype_t*, n, 0)))
{
exnospace();
n = 0;
}
sw->cur = sw->base;
sw->last = sw->base + n;
}
break;
case 24:
/* #line 360 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
register Switch_t* sw = expr.swstate;
int n;
exval.expr = exnewnode(expr.program, CASE, 1, 0, exvsp[0].expr, NiL);
if (sw->cur > sw->base)
{
if (sw->lastcase)
sw->lastcase->data.select.next = exval.expr;
else
sw->firstcase = exval.expr;
sw->lastcase = exval.expr;
n = sw->cur - sw->base;
sw->cur = sw->base;
exval.expr->data.select.constant = (Extype_t**)exalloc(expr.program, (n + 1) * sizeof(Extype_t*));
memcpy(exval.expr->data.select.constant, sw->base, n * sizeof(Extype_t*));
exval.expr->data.select.constant[n] = 0;
}
else
exval.expr->data.select.constant = 0;
if (sw->def)
{
sw->def = 0;
if (sw->defcase)
exerror("duplicate default in switch");
else
sw->defcase = exvsp[0].expr;
}
}
break;
case 27:
/* #line 396 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
int n;
if (expr.swstate->cur >= expr.swstate->last)
{
n = expr.swstate->cur - expr.swstate->base;
if (!(expr.swstate->base = newof(expr.swstate->base, Extype_t*, 2 * n, 0)))
{
exerror("too many case labels for switch");
n = 0;
}
expr.swstate->cur = expr.swstate->base + n;
expr.swstate->last = expr.swstate->base + 2 * n;
}
if (expr.swstate->cur)
{
exvsp[-1].expr = excast(expr.program, exvsp[-1].expr, expr.swstate->type, NiL, 0);
*expr.swstate->cur++ = &(exvsp[-1].expr->data.constant.value);
}
}
break;
case 28:
/* #line 417 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
expr.swstate->def = 1;
}
break;
case 29:
/* #line 423 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.integer = 0;
}
break;
case 30:
/* #line 427 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.integer = 1;
}
break;
case 32:
/* #line 434 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
if (exvsp[0].expr)
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:
/* #line 440 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{expr.id=exvsp[0].id;}
break;
case 34:
/* #line 441 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = 0;
if (!exvsp[-3].id->type || expr.declare)
exvsp[-3].id->type = expr.declare;
if (exvsp[-4].reference)
{
exvsp[-3].id->index = MEMBER;
if (!expr.program->disc->getf || !expr.program->symbols)
exerror("%s: member references not supported", exvsp[-4].reference);
else if (exvsp[0].expr)
exerror("%s: member references cannot be initialized", exvsp[-3].id);
else if (expr.program->disc->reff)
(*expr.program->disc->reff)(expr.program, exval.expr, exvsp[-3].id, exvsp[-4].reference, NiL, EX_SCALAR, expr.program->disc);
}
else if (exvsp[0].expr && exvsp[0].expr->op == PROCEDURE)
{
exvsp[-3].id->lex = PROCEDURE;
exvsp[-3].id->value = exvsp[0].expr;
}
else
{
exvsp[-3].id->lex = DYNAMIC;
exvsp[-3].id->value = exnewnode(expr.program, 0, 0, 0, NiL, NiL);
if (exvsp[-1].integer && !exvsp[-3].id->local.pointer)
{
Dtdisc_t* disc;
if (!(disc = newof(0, Dtdisc_t, 1, 0)))
exnospace();
disc->key = offsetof(Exassoc_t, name);
if (!(exvsp[-3].id->local.pointer = (char*)dtopen(disc, Dtoset)))
exerror("%s: cannot initialize associative array", exvsp[-3].id->name);
}
if (exvsp[0].expr)
{
if (exvsp[0].expr->type != exvsp[-3].id->type)
{
exvsp[0].expr->type = exvsp[-3].id->type;
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);
exvsp[0].expr->data.operand.left->data.variable.symbol = exvsp[-3].id;
exval.expr = exvsp[0].expr;
if (!expr.program->frame && !expr.program->errors)
{
expr.assigned++;
exeval(expr.program, exval.expr, NiL);
}
}
else if (!exvsp[-1].integer)
exvsp[-3].id->value->data.value = exzero(exvsp[-3].id->type);
}
}
break;
case 37:
/* #line 501 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = 0;
}
break;
case 38:
/* #line 505 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exvsp[0].expr;
}
break;
case 39:
/* #line 511 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = 0;
}
break;
case 41:
/* #line 518 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exvsp[-1].expr;
}
break;
case 42:
/* #line 522 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
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:
/* #line 526 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
int rel;
relational:
rel = INTEGER;
goto coerce;
binary:
rel = 0;
coerce:
if (!exvsp[-2].expr->type)
{
if (!exvsp[0].expr->type)
exvsp[-2].expr->type = exvsp[0].expr->type = rel ? STRING : INTEGER;
else
exvsp[-2].expr->type = exvsp[0].expr->type;
}
else if (!exvsp[0].expr->type)
exvsp[0].expr->type = exvsp[-2].expr->type;
if (exvsp[-2].expr->type != exvsp[0].expr->type)
{
if (exvsp[-2].expr->type == STRING)
exvsp[-2].expr = excast(expr.program, exvsp[-2].expr, exvsp[0].expr->type, exvsp[0].expr, 0);
else if (exvsp[0].expr->type == STRING)
exvsp[0].expr = excast(expr.program, exvsp[0].expr, exvsp[-2].expr->type, exvsp[-2].expr, 0);
else if (exvsp[-2].expr->type == FLOATING)
exvsp[0].expr = excast(expr.program, exvsp[0].expr, FLOATING, exvsp[-2].expr, 0);
else if (exvsp[0].expr->type == FLOATING)
exvsp[-2].expr = excast(expr.program, exvsp[-2].expr, FLOATING, exvsp[0].expr, 0);
}
if (!rel)
rel = (exvsp[-2].expr->type == STRING) ? STRING : ((exvsp[-2].expr->type == UNSIGNED) ? UNSIGNED : exvsp[0].expr->type);
exval.expr = exnewnode(expr.program, exvsp[-1].op, 1, rel, exvsp[-2].expr, exvsp[0].expr);
if (!expr.program->errors && exvsp[-2].expr->op == CONSTANT && exvsp[0].expr->op == CONSTANT)
{
exval.expr->data.constant.value = exeval(expr.program, exval.expr, NiL);
exval.expr->binary = 0;
exval.expr->op = CONSTANT;
exfreenode(expr.program, exvsp[-2].expr);
exfreenode(expr.program, exvsp[0].expr);
}
}
break;
case 44:
/* #line 568 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto binary;
}
break;
case 45:
/* #line 572 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto binary;
}
break;
case 46:
/* #line 576 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto binary;
}
break;
case 47:
/* #line 580 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto binary;
}
break;
case 48:
/* #line 584 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto binary;
}
break;
case 49:
/* #line 588 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto binary;
}
break;
case 50:
/* #line 592 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto relational;
}
break;
case 51:
/* #line 596 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto relational;
}
break;
case 52:
/* #line 600 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto relational;
}
break;
case 53:
/* #line 604 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto relational;
}
break;
case 54:
/* #line 608 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto relational;
}
break;
case 55:
/* #line 612 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto binary;
}
break;
case 56:
/* #line 616 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto binary;
}
break;
case 57:
/* #line 620 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto binary;
}
break;
case 58:
/* #line 624 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto binary;
}
break;
case 59:
/* #line 628 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
logical:
if (exvsp[-2].expr->type == STRING)
exvsp[-2].expr = exnewnode(expr.program, S2B, 1, INTEGER, exvsp[-2].expr, NiL);
if (exvsp[0].expr->type == STRING)
exvsp[0].expr = exnewnode(expr.program, S2B, 1, INTEGER, exvsp[0].expr, NiL);
goto binary;
}
break;
case 60:
/* #line 637 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto logical;
}
break;
case 61:
/* #line 641 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
if (exvsp[-2].expr->op == CONSTANT)
{
exfreenode(expr.program, exvsp[-2].expr);
exval.expr = exvsp[0].expr;
}
else
exval.expr = exnewnode(expr.program, ',', 1, exvsp[0].expr->type, exvsp[-2].expr, exvsp[0].expr);
}
break;
case 62:
/* #line 650 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{expr.nolabel=1;}
break;
case 63:
/* #line 650 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{expr.nolabel=0;}
break;
case 64:
/* #line 651 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
if (!exvsp[-3].expr->type)
{
if (!exvsp[0].expr->type)
exvsp[-3].expr->type = exvsp[0].expr->type = INTEGER;
else
exvsp[-3].expr->type = exvsp[0].expr->type;
}
else if (!exvsp[0].expr->type)
exvsp[0].expr->type = exvsp[-3].expr->type;
if (exvsp[-6].expr->type == STRING)
exvsp[-6].expr = exnewnode(expr.program, S2B, 1, INTEGER, exvsp[-6].expr, NiL);
else if (!INTEGRAL(exvsp[-6].expr->type))
exvsp[-6].expr = excast(expr.program, exvsp[-6].expr, INTEGER, NiL, 0);
if (exvsp[-3].expr->type != exvsp[0].expr->type)
{
if (exvsp[-3].expr->type == STRING || exvsp[0].expr->type == STRING)
exerror("if statement string type mismatch");
else if (exvsp[-3].expr->type == FLOATING)
exvsp[0].expr = excast(expr.program, exvsp[0].expr, FLOATING, NiL, 0);
else if (exvsp[0].expr->type == FLOATING)
exvsp[-3].expr = excast(expr.program, exvsp[-3].expr, FLOATING, NiL, 0);
}
if (exvsp[-6].expr->op == CONSTANT)
{
if (exvsp[-6].expr->data.constant.value.integer)
{
exval.expr = exvsp[-3].expr;
exfreenode(expr.program, exvsp[0].expr);
}
else
{
exval.expr = exvsp[0].expr;
exfreenode(expr.program, exvsp[-3].expr);
}
exfreenode(expr.program, exvsp[-6].expr);
}
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:
/* #line 692 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
iunary:
if (exvsp[0].expr->type == STRING)
exvsp[0].expr = exnewnode(expr.program, S2B, 1, INTEGER, exvsp[0].expr, NiL);
else if (!INTEGRAL(exvsp[0].expr->type))
exvsp[0].expr = excast(expr.program, exvsp[0].expr, INTEGER, NiL, 0);
unary:
exval.expr = exnewnode(expr.program, exvsp[-1].op, 1, exvsp[0].expr->type == UNSIGNED ? INTEGER : exvsp[0].expr->type, exvsp[0].expr, NiL);
if (exvsp[0].expr->op == CONSTANT)
{
exval.expr->data.constant.value = exeval(expr.program, exval.expr, NiL);
exval.expr->binary = 0;
exval.expr->op = CONSTANT;
exfreenode(expr.program, exvsp[0].expr);
}
}
break;
case 66:
/* #line 709 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto iunary;
}
break;
case 67:
/* #line 713 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto unary;
}
break;
case 68:
/* #line 717 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exvsp[0].expr;
}
break;
case 69:
/* #line 721 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exnewnode(expr.program, ADDRESS, 0, T(exvsp[0].expr->type), exvsp[0].expr, NiL);
}
break;
case 70:
/* #line 725 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
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);
if (!expr.program->disc->getf)
exerror("%s: function references not supported", exval.expr->data.operand.left->data.variable.symbol->name);
else if (expr.program->disc->reff)
(*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:
/* #line 733 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
if (!INTEGRAL(exvsp[-1].expr->type))
exvsp[-1].expr = excast(expr.program, exvsp[-1].expr, INTEGER, NiL, 0);
exval.expr = exnewnode(expr.program, EXIT, 1, INTEGER, exvsp[-1].expr, NiL);
}
break;
case 72:
/* #line 739 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exnewnode(expr.program, CALL, 1, exvsp[-3].id->type, NiL, exvsp[-1].expr);
exval.expr->data.call.procedure = exvsp[-3].id;
}
break;
case 73:
/* #line 744 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exnewnode(expr.program, exvsp[-3].id->index, 0, exvsp[-3].id->type, NiL, NiL);
if (exvsp[-1].expr && exvsp[-1].expr->data.operand.left->type == INTEGER)
{
exval.expr->data.print.descriptor = exvsp[-1].expr->data.operand.left;
exvsp[-1].expr = exvsp[-1].expr->data.operand.right;
}
else
switch (exvsp[-3].id->index)
{
case QUERY:
exval.expr->data.print.descriptor = exnewnode(expr.program, CONSTANT, 0, INTEGER, NiL, NiL);
exval.expr->data.print.descriptor->data.constant.value.integer = 2;
break;
case PRINTF:
exval.expr->data.print.descriptor = exnewnode(expr.program, CONSTANT, 0, INTEGER, NiL, NiL);
exval.expr->data.print.descriptor->data.constant.value.integer = 1;
break;
case SPRINTF:
exval.expr->data.print.descriptor = 0;
break;
}
exval.expr->data.print.args = preprint(exvsp[-1].expr);
}
break;
case 74:
/* #line 769 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
register Exnode_t* x;
exval.expr = exnewnode(expr.program, exvsp[-3].id->index, 0, exvsp[-3].id->type, NiL, NiL);
if (exvsp[-1].expr && exvsp[-1].expr->data.operand.left->type == INTEGER)
{
exval.expr->data.scan.descriptor = exvsp[-1].expr->data.operand.left;
exvsp[-1].expr = exvsp[-1].expr->data.operand.right;
}
else
switch (exvsp[-3].id->index)
{
case SCANF:
exval.expr->data.scan.descriptor = 0;
break;
case SSCANF:
if (exvsp[-1].expr && exvsp[-1].expr->data.operand.left->type == STRING)
{
exval.expr->data.scan.descriptor = exvsp[-1].expr->data.operand.left;
exvsp[-1].expr = exvsp[-1].expr->data.operand.right;
}
else
exerror("%s: string argument expected", exvsp[-3].id->name);
break;
}
if (!exvsp[-1].expr || !exvsp[-1].expr->data.operand.left || exvsp[-1].expr->data.operand.left->type != STRING)
exerror("%s: format argument expected", exvsp[-3].id->name);
exval.expr->data.scan.format = exvsp[-1].expr->data.operand.left;
for (x = exval.expr->data.scan.args = exvsp[-1].expr->data.operand.right; x; x = x->data.operand.right)
{
if (x->data.operand.left->op != ADDRESS)
exerror("%s: address argument expected", exvsp[-3].id->name);
x->data.operand.left = x->data.operand.left->data.operand.left;
}
}
break;
case 75:
/* #line 805 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exnewnode(expr.program, CONSTANT, 0, exvsp[0].id->type, NiL, NiL);
if (!expr.program->disc->reff)
exerror("%s: qualified identifier references not supported", exvsp[0].id->name);
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);
exval.expr->data.constant.reference = exvsp[0].id;
}
}
break;
case 76:
/* #line 816 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
if (exvsp[0].expr)
{
if (exvsp[-1].expr->op == ID && !expr.program->disc->setf)
exerror("%s: variable assignment not supported", exvsp[-1].expr->data.variable.symbol->name);
else
{
if (!exvsp[-1].expr->type)
exvsp[-1].expr->type = exvsp[0].expr->type;
#if 0
else if (exvsp[0].expr->type != exvsp[-1].expr->type && exvsp[-1].expr->type >= 0200)
#else
else if (exvsp[0].expr->type != exvsp[-1].expr->type)
#endif
{
exvsp[0].expr->type = exvsp[-1].expr->type;
exvsp[0].expr->data.operand.right = excast(expr.program, exvsp[0].expr->data.operand.right, exvsp[-1].expr->type, NiL, 0);
}
exvsp[0].expr->data.operand.left = exvsp[-1].expr;
exval.expr = exvsp[0].expr;
}
}
}
break;
case 77:
/* #line 840 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
pre:
if (exvsp[0].expr->type == STRING)
exerror("++ and -- invalid for string variables");
exval.expr = exnewnode(expr.program, exvsp[-1].op, 0, exvsp[0].expr->type, exvsp[0].expr, NiL);
exval.expr->subop = PRE;
}
break;
case 78:
/* #line 848 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
pos:
if (exvsp[-1].expr->type == STRING)
exerror("++ and -- invalid for string variables");
exval.expr = exnewnode(expr.program, exvsp[0].op, 0, exvsp[-1].expr->type, exvsp[-1].expr, NiL);
exval.expr->subop = POS;
}
break;
case 79:
/* #line 856 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto pre;
}
break;
case 80:
/* #line 860 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
goto pos;
}
break;
case 82:
/* #line 867 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exnewnode(expr.program, CONSTANT, 0, exvsp[0].id->type, NiL, NiL);
if (!expr.program->disc->reff)
exerror("%s: identifier references not supported", exvsp[0].id->name);
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:
/* #line 875 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exnewnode(expr.program, CONSTANT, 0, FLOATING, NiL, NiL);
exval.expr->data.constant.value.floating = exvsp[0].floating;
}
break;
case 84:
/* #line 880 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exnewnode(expr.program, CONSTANT, 0, INTEGER, NiL, NiL);
exval.expr->data.constant.value.integer = exvsp[0].integer;
}
break;
case 85:
/* #line 885 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exnewnode(expr.program, CONSTANT, 0, STRING, NiL, NiL);
exval.expr->data.constant.value.string = exvsp[0].string;
}
break;
case 86:
/* #line 890 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exnewnode(expr.program, CONSTANT, 0, UNSIGNED, NiL, NiL);
exval.expr->data.constant.value.integer = exvsp[0].integer;
}
break;
case 92:
/* #line 906 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exnewnode(expr.program, ID, 0, exvsp[-1].id->type, NiL, NiL);
exval.expr->data.variable.symbol = QUALIFY(exvsp[-2].reference, exvsp[-1].id);
exval.expr->data.variable.reference = exvsp[-2].reference;
if (exvsp[0].expr && !INTEGRAL(exvsp[0].expr->type))
exvsp[0].expr = excast(expr.program, exvsp[0].expr, INTEGER, NiL, 0);
exval.expr->data.variable.index = exvsp[0].expr;
if (!expr.program->disc->getf)
exerror("%s: identifier references not supported", exvsp[-1].id->name);
else if (expr.program->disc->reff)
(*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);
exval.expr->type = exval.expr->data.variable.symbol->type;
}
break;
case 93:
/* #line 920 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exnewnode(expr.program, DYNAMIC, 0, exvsp[-1].id->type, NiL, NiL);
exval.expr->data.variable.symbol = exvsp[-1].id;
exval.expr->data.variable.reference = 0;
if (((exval.expr->data.variable.index = exvsp[0].expr) == 0) != (exvsp[-1].id->local.pointer == 0))
exerror("%s: is%s an array", exvsp[-1].id->name, exvsp[-1].id->local.pointer ? "" : " not");
}
break;
case 94:
/* #line 928 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exnewnode(expr.program, ID, 0, 0, NiL, NiL);
exval.expr->data.variable.symbol = exvsp[0].id;
exval.expr->data.variable.reference = 0;
exval.expr->data.variable.index = 0;
if (!(expr.program->disc->flags & EX_UNDECLARED))
exerror("unknown identifier");
}
break;
case 95:
/* #line 939 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.integer = 0;
}
break;
case 96:
/* #line 943 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.integer = 1;
}
break;
case 97:
/* #line 949 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = 0;
}
break;
case 98:
/* #line 953 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exvsp[-1].expr;
}
break;
case 99:
/* #line 959 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = 0;
}
break;
case 100:
/* #line 963 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exvsp[0].expr->data.operand.left;
exvsp[0].expr->data.operand.left = exvsp[0].expr->data.operand.right = 0;
exfreenode(expr.program, exvsp[0].expr);
}
break;
case 101:
/* #line 971 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exnewnode(expr.program, ';', 1, 0, exnewnode(expr.program, ';', 1, exvsp[0].expr->type, exvsp[0].expr, NiL), NiL);
exval.expr->data.operand.right = exval.expr->data.operand.left;
}
break;
case 102:
/* #line 976 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
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:
/* #line 982 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = 0;
}
break;
case 104:
/* #line 986 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = 0;
if (exvsp[0].id->type)
exerror("(void) expected");
}
break;
case 106:
/* #line 995 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exnewnode(expr.program, ',', 1, exvsp[0].expr->type, exvsp[0].expr, NiL);
}
break;
case 107:
/* #line 999 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
register Exnode_t* x;
register Exnode_t* y;
exval.expr = exvsp[-2].expr;
for (x = exvsp[-2].expr; y = x->data.operand.right; x = y);
x->data.operand.right = exnewnode(expr.program, ',', 1, exvsp[0].expr->type, exvsp[0].expr, NiL);
}
break;
case 108:
/* #line 1009 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{expr.declare=exvsp[0].id->type;}
break;
case 109:
/* #line 1010 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exnewnode(expr.program, ID, 0, exvsp[0].id->type, NiL, NiL);
exval.expr->data.variable.symbol = exvsp[0].id;
exvsp[0].id->lex = DYNAMIC;
exvsp[0].id->value = exnewnode(expr.program, 0, 0, 0, NiL, NiL);
expr.procedure->data.procedure.arity++;
expr.declare = 0;
}
break;
case 110:
/* #line 1021 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.reference = expr.refs = expr.lastref = 0;
}
break;
case 111:
/* #line 1025 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
Exref_t* r;
r = ALLOCATE(expr.program, Exref_t);
if (expr.lastref)
{
r->symbol = QUALIFY(expr.lastref, exvsp[-2].id);
expr.lastref->next = r;
}
else
{
r->symbol = exvsp[-2].id;
expr.refs = r;
}
expr.lastref = r;
r->next = 0;
r->index = exvsp[-1].expr;
exval.reference = expr.refs;
}
break;
case 112:
/* #line 1047 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = 0;
}
break;
case 113:
/* #line 1051 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = exnewnode(expr.program, '=', 1, exvsp[0].expr->type, NiL, exvsp[0].expr);
exval.expr->subop = exvsp[-1].op;
}
break;
case 115:
/* #line 1058 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
register Dtdisc_t* disc;
if (expr.procedure)
exerror("%s: nested function definitions not supported", expr.id->name);
expr.procedure = exnewnode(expr.program, PROCEDURE, 1, expr.declare, NiL, NiL);
if (!(disc = newof(0, Dtdisc_t, 1, 0)))
exnospace();
disc->key = offsetof(Exid_t, name);
if (!streq(expr.id->name, "begin"))
{
if (!(expr.procedure->data.procedure.frame = dtopen(disc, Dtset)) || !dtview(expr.procedure->data.procedure.frame, expr.program->symbols))
exnospace();
expr.program->symbols = expr.program->frame = expr.procedure->data.procedure.frame;
expr.program->formals = 1;
}
expr.declare = 0;
}
break;
case 116:
/* #line 1075 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
expr.id->lex = PROCEDURE;
expr.id->type = expr.procedure->type;
expr.program->formals = 0;
expr.declare = 0;
}
break;
case 117:
/* #line 1081 "/home/gsf/tst/package/ast-2012-07-27/src/lib/libexpr/exparse.y" */
{
exval.expr = expr.procedure;
expr.procedure = 0;
if (expr.program->frame)
{
expr.program->symbols = expr.program->frame->view;
dtview(expr.program->frame, NiL);
expr.program->frame = 0;
}
exval.expr->data.operand.left = exvsp[-5].expr;
exval.expr->data.operand.right = excast(expr.program, exvsp[-1].expr, exval.expr->type, NiL, 0);
/*
* NOTE: procedure definition was slipped into the
* declaration initializer statement production,
* therefore requiring the statement terminator
*/
exunlex(expr.program, ';');
}
break;
/* #line 2059 "y.tab.c" */
}
exssp -= exm;
exstate = *exssp;
exvsp -= exm;
exm = exlhs[exn];
if (exstate == 0 && exm == 0)
{
#if EXDEBUG
if (exdebug)
printf("%sdebug: after reduction, shifting from state 0 to\
state %d\n", EXPREFIX, EXFINAL);
#endif
exstate = EXFINAL;
*++exssp = EXFINAL;
*++exvsp = exval;
if (exchar < 0)
{
if ((exchar = exlex()) < 0) exchar = 0;
#if EXDEBUG
if (exdebug)
{
exs = 0;
if (exchar <= EXMAXTOKEN) exs = exname[exchar];
if (!exs) exs = "illegal-symbol";
printf("%sdebug: state %d, reading %d (%s)\n",
EXPREFIX, EXFINAL, exchar, exs);
}
#endif
}
if (exchar == 0) goto exaccept;
goto exloop;
}
if ((exn = exgindex[exm]) && (exn += exstate) >= 0 &&
exn <= EXTABLESIZE && excheck[exn] == exstate)
exstate = extable[exn];
else
exstate = exdgoto[exm];
#if EXDEBUG
if (exdebug)
printf("%sdebug: after reduction, shifting from state %d \
to state %d\n", EXPREFIX, *exssp, exstate);
#endif
if (exssp >= exsslim && exgrowstack())
{
goto exoverflow;
}
*++exssp = exstate;
*++exvsp = exval;
goto exloop;
exoverflow:
exerror("yacc stack overflow");
exabort:
return (1);
exaccept:
return (0);
}