#include #ifndef lint #if 0 static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; #else __IDSTRING(yyrcsid, "$NetBSD: skeleton.c,v 1.14 1997/10/20 03:41:16 lukem Exp $"); #endif #endif #include #define YYBYACC 1 #define YYMAJOR 1 #define YYMINOR 9 #define YYLEX yylex() #define YYEMPTY -1 #define yyclearin (yychar=(YYEMPTY)) #define yyerrok (yyerrflag=0) #define YYRECOVERING (yyerrflag!=0) #define YYPREFIX "yy" #line 2 "nabgrm.y" /* * * This software is copyrighted, 1995, by Tom Macke and David A. Case. * The following terms apply to all files associated with the software * unless explicitly disclaimed in individual files. * * The authors hereby grant permission to use, copy, modify, and re-distribute * this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be distributed provided that * the nature of the modifications are clearly indicated. * * IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY * DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE * IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE * NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR * MODIFICATIONS. * */ #include #include "nab.h" #include "errormsg.h" extern VALUE_T val; static VALUE_T v_type; typedef union { int ival; NODE_T *npval; } YYSTYPE; # define YYSTYPE_IS_DECLARED 1 #define YYSTYPE_IS_DECLARED 1 #line 65 "y.tab.c" #define SYM_ADDRESS 257 #define SYM_ALLOCATE 258 #define SYM_AND 259 #define SYM_ASSERT 260 #define SYM_ASSIGN 261 #define SYM_ATOM 262 #define SYM_ATSIGN 263 #define SYM_ATTRIBUTE 264 #define SYM_BOUNDS 265 #define SYM_BREAK 266 #define SYM_CALL 267 #define SYM_COMMA 268 #define SYM_CONTINUE 269 #define SYM_DEALLOCATE 270 #define SYM_DEBUG 271 #define SYM_DECL 272 #define SYM_DELETE 273 #define SYM_DONT_MATCH 274 #define SYM_DYNAMIC 275 #define SYM_ELSE 276 #define SYM_EQUAL 277 #define SYM_ERROR 278 #define SYM_FILE 279 #define SYM_FLOAT 280 #define SYM_FLOAT_LIT 281 #define SYM_FOR 282 #define SYM_FOREACH 283 #define SYM_GREATER 284 #define SYM_GREATER_EQUAL 285 #define SYM_HASHED 286 #define SYM_IDENT 287 #define SYM_IF 288 #define SYM_IN 289 #define SYM_INDEX 290 #define SYM_INDIRECT 291 #define SYM_INT 292 #define SYM_INT_LIT 293 #define SYM_LBRACE 294 #define SYM_LBRACK 295 #define SYM_LESS 296 #define SYM_LESS_EQUAL 297 #define SYM_LIST 298 #define SYM_LPAREN 299 #define SYM_MATCH 300 #define SYM_MATRIX 301 #define SYM_MINUS 302 #define SYM_MINUS_ASSIGN 303 #define SYM_MINUS_MINUS 304 #define SYM_MODULUS 305 #define SYM_MODULUS_ASSIGN 306 #define SYM_MOLECULE 307 #define SYM_NEGATE 308 #define SYM_NOT 309 #define SYM_NOT_EQUAL 310 #define SYM_OR 311 #define SYM_PARM 312 #define SYM_PERIOD 313 #define SYM_PLUS 314 #define SYM_PLUS_ASSIGN 315 #define SYM_PLUS_PLUS 316 #define SYM_POINT 317 #define SYM_POINTS_TO 318 #define SYM_RBRACE 319 #define SYM_RBRACK 320 #define SYM_RESIDUE 321 #define SYM_RETURN 322 #define SYM_RPAREN 323 #define SYM_SEMICOLON 324 #define SYM_SIZE_T 325 #define SYM_SLASH 326 #define SYM_SLASH_ASSIGN 327 #define SYM_STAR 328 #define SYM_STAR_ASSIGN 329 #define SYM_STMTLIST 330 #define SYM_STRING 331 #define SYM_STRING_LIT 332 #define SYM_TEST 333 #define SYM_TYPE 334 #define SYM_UPARROW 335 #define SYM_UPARROW_ASSIGN 336 #define SYM_WHILE 337 #define YYERRCODE 256 short yylhs[] = { -1, 0, 22, 22, 23, 23, 61, 61, 62, 62, 21, 21, 21, 68, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 69, 69, 67, 67, 10, 10, 9, 9, 8, 8, 43, 43, 72, 44, 73, 45, 36, 36, 40, 40, 39, 74, 75, 76, 42, 30, 30, 53, 53, 41, 41, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 4, 11, 14, 77, 15, 17, 19, 20, 24, 28, 48, 78, 48, 37, 79, 80, 58, 71, 81, 82, 83, 47, 84, 85, 34, 32, 32, 35, 86, 87, 31, 33, 33, 38, 38, 88, 89, 90, 70, 18, 18, 26, 26, 27, 27, 52, 52, 52, 7, 13, 59, 59, 25, 25, 16, 16, 3, 3, 64, 64, 29, 29, 56, 56, 56, 56, 56, 56, 56, 50, 50, 1, 1, 6, 6, 5, 49, 49, 12, 12, 12, 12, 12, 12, 12, 57, 57, 57, 57, 57, 57, 57, 57, 57, 2, 2, 54, 54, 54, 54, 51, 51, 66, 66, 46, 55, 55, 63, }; short yylen[] = { 2, 2, 1, 0, 1, 2, 1, 0, 1, 2, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 4, 1, 1, 1, 3, 1, 1, 2, 3, 0, 3, 0, 6, 1, 0, 1, 3, 2, 0, 0, 0, 8, 1, 0, 1, 2, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 2, 0, 4, 2, 3, 3, 3, 2, 2, 0, 5, 2, 0, 0, 5, 2, 0, 0, 0, 7, 0, 0, 6, 1, 1, 3, 0, 0, 7, 1, 0, 1, 0, 0, 0, 0, 7, 3, 1, 1, 3, 1, 3, 1, 1, 1, 4, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 1, 1, 1, 2, 4, 3, 2, 2, 1, 0, 1, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, }; short yydefred[] = { 0, 22, 20, 18, 16, 14, 21, 24, 19, 23, 15, 17, 0, 0, 0, 2, 11, 12, 0, 0, 10, 5, 0, 0, 0, 0, 0, 0, 0, 175, 91, 173, 87, 174, 72, 0, 171, 170, 172, 169, 83, 176, 104, 0, 57, 115, 58, 116, 59, 61, 0, 60, 62, 63, 64, 0, 0, 56, 0, 0, 65, 0, 0, 66, 134, 0, 0, 132, 0, 67, 112, 8, 1, 0, 133, 0, 0, 0, 68, 35, 0, 0, 0, 0, 0, 0, 0, 71, 74, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 161, 156, 159, 158, 162, 154, 155, 160, 157, 0, 0, 0, 78, 168, 167, 166, 165, 0, 82, 0, 0, 114, 0, 147, 0, 149, 152, 0, 148, 151, 150, 153, 0, 139, 0, 9, 164, 163, 0, 0, 135, 86, 36, 46, 38, 0, 0, 0, 13, 69, 70, 75, 0, 0, 76, 0, 77, 92, 88, 0, 137, 84, 105, 124, 122, 120, 128, 0, 0, 140, 144, 80, 0, 0, 118, 113, 130, 126, 0, 34, 30, 0, 29, 0, 33, 0, 0, 26, 108, 111, 0, 0, 73, 0, 0, 136, 0, 0, 0, 117, 47, 0, 0, 52, 0, 28, 0, 0, 41, 0, 100, 95, 0, 0, 94, 0, 89, 85, 106, 143, 81, 146, 0, 53, 32, 40, 0, 45, 93, 97, 0, 0, 0, 0, 0, 44, 0, 96, 90, 107, 48, 102, 0, 0, 98, 49, 0, 99, }; short yydgoto[] = { 12, 168, 139, 43, 44, 169, 170, 45, 182, 183, 184, 46, 133, 47, 48, 49, 50, 51, 91, 52, 53, 13, 14, 15, 54, 55, 92, 56, 57, 58, 201, 212, 213, 214, 59, 215, 207, 60, 243, 208, 209, 234, 145, 16, 17, 18, 61, 62, 63, 174, 64, 65, 66, 202, 118, 67, 68, 110, 69, 70, 71, 72, 73, 74, 75, 19, 76, 83, 20, 84, 77, 78, 81, 147, 179, 223, 244, 97, 198, 99, 194, 96, 192, 232, 95, 191, 237, 247, 100, 195, 233, }; short yysindex[] = { -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 194, 0, 0, 0, -271, -264, 0, 0, 139, 139, -292, -285, 139, 276, 139, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 557, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, -233, -240, 0, -251, 194, 0, -214, 194, 0, 0, -264, -80, 0, -248, 0, 0, 0, 0, 194, 0, -283, 139, 194, 0, 0, -235, -206, -204, -175, -227, -222, -220, 0, 0, -213, 139, -207, 0, -158, -203, -181, -179, 194, -201, 139, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 139, 139, 0, 0, 0, 0, 0, 139, 0, 139, -152, 0, -275, 0, 139, 0, 0, -159, 0, 0, 0, 0, 139, 0, 139, 0, 0, 0, 139, -254, 0, 0, 0, 0, 0, -56, -170, -264, 0, 0, 0, 0, -186, -247, 0, 139, 0, 0, 0, -236, 0, 0, 0, 0, 0, 0, 0, -185, -127, 0, 0, 0, -122, -178, 0, 0, 0, 0, -198, 0, 0, -119, 0, -169, 0, -198, -204, 0, 0, 0, 139, 139, 0, -171, 139, 0, 139, 194, 139, 0, 0, -198, -264, 0, -36, 0, -165, -114, 0, -264, 0, 0, -164, -161, 0, -263, 0, 0, 0, 0, 0, 0, 194, 0, 0, 0, -198, 0, 0, 0, -264, -163, -157, -155, 194, 0, 139, 0, 0, 0, 0, 0, -154, -150, 0, 0, 139, 0, }; short yyrindex[] = { 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 165, 0, 0, 0, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, 0, 0, 0, 0, 0, -116, 0, 0, 0, 0, -225, 0, 0, 515, 0, 0, 238, 0, 0, 0, 0, 380, 0, 470, 0, 0, 0, 0, 180, 0, 559, 0, 0, 0, 0, 0, 0, -255, -140, 0, 0, 0, 0, 0, 0, 0, 0, 0, -296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -135, 1, 0, 425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -134, 0, 0, 0, -129, 0, 0, 0, 0, 0, -126, 0, 0, -128, 0, 0, 0, -124, -208, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, 309, 0, 0, 0, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 0, }; short yygindex[] = { 0, 0, 0, -92, 0, 0, 8, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 0, 107, -85, -20, 0, 85, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, -9, 0, 0, 29, 0, -66, -4, 0, 0, 0, 156, 0, 0, 122, -48, 0, -93, 0, 120, -137, 0, 30, -162, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; #define YYTABLESIZE 883 short yytable[] = { 134, 79, 85, 86, 160, 153, 89, 93, 94, 80, 82, 119, 114, 27, 121, 98, 31, 204, 164, 137, 125, 156, 22, 31, 23, 136, 231, 110, 110, 142, 24, 138, 87, 25, 26, 27, 120, 28, 128, 88, 224, 125, 203, 119, 39, 29, 30, 178, 111, 210, 37, 31, 32, 79, 115, 3, 122, 33, 34, 128, 27, 123, 39, 35, 1, 203, 36, 2, 37, 27, 154, 190, 140, 38, 134, 116, 161, 117, 112, 162, 39, 3, 4, 193, 113, 120, 40, 135, 144, 143, 210, 146, 4, 148, 5, 119, 41, 149, 119, 119, 171, 42, 150, 6, 151, 173, 140, 140, 140, 7, 156, 152, 136, 176, 140, 27, 27, 155, 158, 8, 159, 157, 161, 9, 172, 163, 185, 10, 175, 186, 235, 140, 51, 11, 51, 140, 93, 189, 196, 187, 51, 197, 200, 51, 51, 51, 199, 51, 123, 205, 221, 206, 121, 218, 227, 51, 51, 123, 226, 229, 239, 51, 51, 230, 241, 7, 240, 51, 51, 37, 245, 211, 217, 51, 246, 219, 51, 171, 51, 173, 6, 124, 216, 51, 25, 185, 101, 136, 141, 142, 51, 145, 31, 51, 187, 121, 51, 225, 21, 42, 123, 187, 43, 101, 121, 220, 51, 121, 121, 123, 55, 51, 123, 123, 54, 125, 103, 242, 165, 180, 177, 248, 238, 126, 37, 29, 127, 211, 222, 236, 181, 31, 141, 128, 166, 129, 39, 33, 167, 180, 228, 188, 0, 35, 0, 29, 36, 130, 37, 131, 0, 31, 0, 38, 0, 0, 132, 33, 0, 79, 39, 79, 0, 35, 0, 0, 36, 79, 37, 0, 79, 79, 79, 38, 79, 0, 41, 0, 0, 0, 39, 0, 79, 79, 0, 0, 0, 0, 79, 79, 0, 0, 0, 0, 79, 79, 41, 0, 0, 0, 79, 0, 0, 79, 0, 79, 0, 0, 0, 0, 79, 0, 0, 3, 0, 3, 0, 79, 0, 0, 79, 3, 0, 79, 3, 3, 3, 0, 3, 0, 0, 0, 0, 79, 0, 0, 3, 3, 79, 0, 0, 0, 3, 3, 0, 0, 0, 0, 3, 3, 4, 0, 4, 0, 3, 0, 0, 3, 4, 3, 0, 4, 4, 4, 3, 4, 0, 0, 0, 0, 0, 3, 0, 4, 4, 0, 0, 3, 0, 4, 4, 0, 0, 0, 0, 4, 4, 3, 0, 0, 0, 4, 3, 0, 4, 0, 4, 0, 50, 0, 50, 4, 0, 0, 0, 0, 50, 0, 4, 50, 50, 50, 0, 50, 4, 0, 0, 0, 0, 0, 29, 50, 50, 0, 4, 0, 31, 50, 50, 4, 0, 0, 33, 50, 50, 0, 0, 0, 35, 50, 0, 36, 50, 37, 50, 0, 0, 0, 38, 50, 0, 0, 22, 0, 23, 39, 50, 0, 0, 50, 24, 0, 50, 25, 26, 27, 0, 28, 0, 0, 0, 41, 50, 0, 0, 29, 30, 50, 0, 0, 0, 31, 32, 0, 0, 0, 0, 33, 34, 0, 0, 0, 0, 35, 0, 0, 36, 114, 37, 114, 0, 114, 0, 38, 0, 0, 114, 0, 0, 0, 39, 0, 114, 0, 0, 114, 40, 0, 0, 0, 0, 0, 114, 114, 0, 0, 41, 114, 0, 0, 0, 42, 0, 114, 114, 114, 0, 0, 114, 0, 114, 114, 114, 114, 114, 0, 0, 0, 114, 114, 0, 114, 114, 114, 114, 0, 0, 29, 114, 0, 0, 114, 114, 31, 114, 114, 114, 114, 114, 33, 114, 0, 114, 114, 114, 90, 0, 0, 36, 0, 37, 0, 0, 114, 0, 38, 114, 0, 0, 0, 0, 0, 39, 114, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 114, 114, 0, 41, 114, 0, 114, 114, 114, 114, 114, 0, 0, 0, 114, 114, 0, 114, 114, 114, 114, 0, 0, 0, 0, 0, 0, 0, 114, 0, 114, 114, 114, 114, 131, 0, 0, 0, 131, 114, 114, 0, 0, 131, 0, 0, 0, 0, 0, 131, 0, 0, 131, 0, 0, 0, 0, 0, 0, 131, 131, 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 131, 131, 0, 0, 131, 0, 131, 0, 138, 131, 0, 0, 138, 0, 131, 131, 0, 138, 131, 0, 0, 0, 0, 138, 131, 0, 138, 131, 131, 0, 131, 0, 131, 138, 138, 0, 0, 0, 138, 131, 0, 0, 0, 0, 0, 138, 138, 0, 0, 138, 0, 138, 0, 129, 138, 0, 0, 129, 0, 138, 138, 0, 129, 138, 0, 0, 0, 0, 129, 138, 0, 129, 138, 138, 0, 138, 0, 138, 129, 129, 0, 0, 0, 129, 138, 0, 0, 0, 0, 0, 129, 129, 0, 0, 129, 0, 129, 0, 127, 129, 0, 0, 0, 0, 129, 129, 0, 127, 129, 0, 0, 0, 0, 127, 129, 0, 127, 129, 129, 0, 129, 0, 129, 127, 127, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 127, 127, 0, 0, 127, 0, 127, 125, 0, 0, 0, 0, 0, 0, 127, 127, 125, 0, 127, 0, 101, 0, 125, 102, 127, 125, 0, 127, 127, 0, 103, 104, 125, 125, 0, 105, 0, 125, 0, 0, 0, 0, 106, 107, 125, 125, 108, 0, 125, 0, 0, 0, 0, 0, 0, 0, 109, 0, 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, 125, 125, }; short yycheck[] = { 66, 0, 22, 23, 97, 90, 26, 27, 28, 18, 19, 59, 263, 268, 62, 35, 287, 179, 110, 302, 295, 268, 258, 287, 260, 73, 289, 323, 324, 77, 266, 314, 324, 269, 270, 271, 299, 273, 313, 324, 202, 295, 179, 268, 299, 281, 282, 139, 259, 186, 304, 287, 288, 324, 305, 0, 65, 293, 294, 313, 268, 65, 316, 299, 262, 202, 302, 265, 304, 324, 90, 156, 76, 309, 140, 326, 323, 328, 311, 99, 316, 279, 280, 319, 324, 299, 322, 335, 294, 324, 227, 295, 0, 268, 292, 320, 332, 324, 323, 324, 120, 337, 324, 301, 324, 125, 110, 111, 112, 307, 268, 324, 160, 133, 118, 323, 324, 324, 299, 317, 299, 324, 323, 321, 276, 299, 146, 325, 287, 299, 223, 135, 258, 331, 260, 139, 156, 323, 323, 148, 266, 268, 320, 269, 270, 271, 268, 273, 259, 268, 198, 320, 268, 324, 268, 281, 282, 268, 323, 323, 323, 287, 288, 324, 319, 0, 323, 293, 294, 294, 324, 191, 192, 299, 324, 195, 302, 197, 304, 199, 0, 261, 191, 309, 324, 205, 324, 235, 323, 323, 316, 320, 320, 319, 203, 311, 322, 205, 13, 323, 311, 210, 323, 323, 320, 197, 332, 323, 324, 320, 319, 337, 323, 324, 319, 295, 324, 237, 111, 275, 135, 247, 231, 303, 304, 281, 306, 247, 199, 227, 286, 287, 76, 313, 112, 315, 316, 293, 118, 275, 210, 148, -1, 299, -1, 281, 302, 327, 304, 329, -1, 287, -1, 309, -1, -1, 336, 293, -1, 258, 316, 260, -1, 299, -1, -1, 302, 266, 304, -1, 269, 270, 271, 309, 273, -1, 332, -1, -1, -1, 316, -1, 281, 282, -1, -1, -1, -1, 287, 288, -1, -1, -1, -1, 293, 294, 332, -1, -1, -1, 299, -1, -1, 302, -1, 304, -1, -1, -1, -1, 309, -1, -1, 258, -1, 260, -1, 316, -1, -1, 319, 266, -1, 322, 269, 270, 271, -1, 273, -1, -1, -1, -1, 332, -1, -1, 281, 282, 337, -1, -1, -1, 287, 288, -1, -1, -1, -1, 293, 294, 258, -1, 260, -1, 299, -1, -1, 302, 266, 304, -1, 269, 270, 271, 309, 273, -1, -1, -1, -1, -1, 316, -1, 281, 282, -1, -1, 322, -1, 287, 288, -1, -1, -1, -1, 293, 294, 332, -1, -1, -1, 299, 337, -1, 302, -1, 304, -1, 258, -1, 260, 309, -1, -1, -1, -1, 266, -1, 316, 269, 270, 271, -1, 273, 322, -1, -1, -1, -1, -1, 281, 281, 282, -1, 332, -1, 287, 287, 288, 337, -1, -1, 293, 293, 294, -1, -1, -1, 299, 299, -1, 302, 302, 304, 304, -1, -1, -1, 309, 309, -1, -1, 258, -1, 260, 316, 316, -1, -1, 319, 266, -1, 322, 269, 270, 271, -1, 273, -1, -1, -1, 332, 332, -1, -1, 281, 282, 337, -1, -1, -1, 287, 288, -1, -1, -1, -1, 293, 294, -1, -1, -1, -1, 299, -1, -1, 302, 259, 304, 261, -1, 263, -1, 309, -1, -1, 268, -1, -1, -1, 316, -1, 274, -1, -1, 277, 322, -1, -1, -1, -1, -1, 284, 285, -1, -1, 332, 289, -1, -1, -1, 337, -1, 295, 296, 297, -1, -1, 300, -1, 302, 303, 304, 305, 306, -1, -1, -1, 310, 311, -1, 313, 314, 315, 316, -1, -1, 281, 320, -1, -1, 323, 324, 287, 326, 327, 328, 329, 259, 293, 261, -1, 263, 335, 336, 299, -1, -1, 302, -1, 304, -1, -1, 274, -1, 309, 277, -1, -1, -1, -1, -1, 316, 284, 285, -1, -1, -1, -1, -1, -1, -1, -1, -1, 295, 296, 297, -1, 332, 300, -1, 302, 303, 304, 305, 306, -1, -1, -1, 310, 311, -1, 313, 314, 315, 316, -1, -1, -1, -1, -1, -1, -1, 324, -1, 326, 327, 328, 329, 259, -1, -1, -1, 263, 335, 336, -1, -1, 268, -1, -1, -1, -1, -1, 274, -1, -1, 277, -1, -1, -1, -1, -1, -1, 284, 285, -1, -1, -1, 289, -1, -1, -1, -1, -1, -1, 296, 297, -1, -1, 300, -1, 302, -1, 259, 305, -1, -1, 263, -1, 310, 311, -1, 268, 314, -1, -1, -1, -1, 274, 320, -1, 277, 323, 324, -1, 326, -1, 328, 284, 285, -1, -1, -1, 289, 335, -1, -1, -1, -1, -1, 296, 297, -1, -1, 300, -1, 302, -1, 259, 305, -1, -1, 263, -1, 310, 311, -1, 268, 314, -1, -1, -1, -1, 274, 320, -1, 277, 323, 324, -1, 326, -1, 328, 284, 285, -1, -1, -1, 289, 335, -1, -1, -1, -1, -1, 296, 297, -1, -1, 300, -1, 302, -1, 259, 305, -1, -1, -1, -1, 310, 311, -1, 268, 314, -1, -1, -1, -1, 274, 320, -1, 277, 323, 324, -1, 326, -1, 328, 284, 285, -1, -1, -1, 289, -1, -1, -1, -1, -1, -1, 296, 297, -1, -1, 300, -1, 302, 259, -1, -1, -1, -1, -1, -1, 310, 311, 268, -1, 314, -1, 274, -1, 274, 277, 320, 277, -1, 323, 324, -1, 284, 285, 284, 285, -1, 289, -1, 289, -1, -1, -1, -1, 296, 297, 296, 297, 300, -1, 300, -1, -1, -1, -1, -1, -1, -1, 310, -1, 310, 311, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, 323, 324, }; #define YYFINAL 12 #ifndef YYDEBUG #define YYDEBUG 0 #endif #define YYMAXTOKEN 337 #if YYDEBUG char *yyname[] = { "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,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"SYM_ADDRESS","SYM_ALLOCATE", "SYM_AND","SYM_ASSERT","SYM_ASSIGN","SYM_ATOM","SYM_ATSIGN","SYM_ATTRIBUTE", "SYM_BOUNDS","SYM_BREAK","SYM_CALL","SYM_COMMA","SYM_CONTINUE","SYM_DEALLOCATE", "SYM_DEBUG","SYM_DECL","SYM_DELETE","SYM_DONT_MATCH","SYM_DYNAMIC","SYM_ELSE", "SYM_EQUAL","SYM_ERROR","SYM_FILE","SYM_FLOAT","SYM_FLOAT_LIT","SYM_FOR", "SYM_FOREACH","SYM_GREATER","SYM_GREATER_EQUAL","SYM_HASHED","SYM_IDENT", "SYM_IF","SYM_IN","SYM_INDEX","SYM_INDIRECT","SYM_INT","SYM_INT_LIT", "SYM_LBRACE","SYM_LBRACK","SYM_LESS","SYM_LESS_EQUAL","SYM_LIST","SYM_LPAREN", "SYM_MATCH","SYM_MATRIX","SYM_MINUS","SYM_MINUS_ASSIGN","SYM_MINUS_MINUS", "SYM_MODULUS","SYM_MODULUS_ASSIGN","SYM_MOLECULE","SYM_NEGATE","SYM_NOT", "SYM_NOT_EQUAL","SYM_OR","SYM_PARM","SYM_PERIOD","SYM_PLUS","SYM_PLUS_ASSIGN", "SYM_PLUS_PLUS","SYM_POINT","SYM_POINTS_TO","SYM_RBRACE","SYM_RBRACK", "SYM_RESIDUE","SYM_RETURN","SYM_RPAREN","SYM_SEMICOLON","SYM_SIZE_T", "SYM_SLASH","SYM_SLASH_ASSIGN","SYM_STAR","SYM_STAR_ASSIGN","SYM_STMTLIST", "SYM_STRING","SYM_STRING_LIT","SYM_TEST","SYM_TYPE","SYM_UPARROW", "SYM_UPARROW_ASSIGN","SYM_WHILE", }; char *yyrule[] = { "$accept : program", "program : defpart stmtpart", "defpart : defs", "defpart :", "defs : def", "defs : def defs", "stmtpart : stmts", "stmtpart :", "stmts : stmt", "stmts : stmts stmt", "def : var_decl", "def : func_decl", "def : func_def", "var_decl : type var_list SYM_SEMICOLON", "type : SYM_INT", "type : SYM_SIZE_T", "type : SYM_FLOAT", "type : SYM_STRING", "type : SYM_FILE", "type : SYM_POINT", "type : SYM_BOUNDS", "type : SYM_MATRIX", "type : SYM_ATOM", "type : SYM_RESIDUE", "type : SYM_MOLECULE", "var_list : var", "var_list : var SYM_COMMA var_list", "var : id", "var : id SYM_LBRACK aspec SYM_RBRACK", "aspec : as_list", "aspec : SYM_HASHED", "as_list : asize", "as_list : asize SYM_COMMA as_list", "asize : expr", "asize : SYM_DYNAMIC", "func_decl : func_hdr SYM_SEMICOLON", "func_decl : func_hdr id SYM_SEMICOLON", "$$1 :", "func_def : func_hdr $$1 func_body", "$$2 :", "func_hdr : type id $$2 SYM_LPAREN formals SYM_RPAREN", "formals : fp_list", "formals :", "fp_list : f_parm", "fp_list : f_parm SYM_COMMA fp_list", "f_parm : type var", "$$3 :", "$$4 :", "$$5 :", "func_body : SYM_LBRACE $$3 f_defpart $$4 f_stmtpart SYM_RBRACE $$5 SYM_SEMICOLON", "f_defpart : lv_decls", "f_defpart :", "lv_decls : var_decl", "lv_decls : lv_decls var_decl", "f_stmtpart : stmts", "f_stmtpart :", "stmt : expr_stmt", "stmt : alloc_stmt", "stmt : assert_stmt", "stmt : break_stmt", "stmt : continue_stmt", "stmt : cmpd_stmt", "stmt : dealloc_stmt", "stmt : debug_stmt", "stmt : delete_stmt", "stmt : for_stmt", "stmt : if_stmt", "stmt : return_stmt", "stmt : while_stmt", "alloc_stmt : SYM_ALLOCATE expr SYM_SEMICOLON", "assert_stmt : SYM_ASSERT expr SYM_SEMICOLON", "break_stmt : SYM_BREAK SYM_SEMICOLON", "$$6 :", "cmpd_stmt : SYM_LBRACE $$6 stmts SYM_RBRACE", "continue_stmt : SYM_CONTINUE SYM_SEMICOLON", "dealloc_stmt : SYM_DEALLOCATE expr SYM_SEMICOLON", "debug_stmt : SYM_DEBUG dbg_list SYM_SEMICOLON", "delete_stmt : SYM_DELETE expr SYM_SEMICOLON", "expr_stmt : expr SYM_SEMICOLON", "if_stmt : if_hdr stmt", "$$7 :", "if_stmt : if_hdr stmt SYM_ELSE $$7 stmt", "for_stmt : for_hdr stmt", "$$8 :", "$$9 :", "return_stmt : SYM_RETURN $$8 expr $$9 SYM_SEMICOLON", "while_stmt : while_hdr stmt", "$$10 :", "$$11 :", "$$12 :", "if_hdr : SYM_IF $$10 SYM_LPAREN $$11 expr $$12 SYM_RPAREN", "$$13 :", "$$14 :", "for_hdr : SYM_FOR $$13 SYM_LPAREN $$14 for_ctrl SYM_RPAREN", "for_ctrl : for_in", "for_ctrl : for_count", "for_in : id SYM_IN id", "$$15 :", "$$16 :", "for_count : for_expr SYM_SEMICOLON $$15 for_test_expr SYM_SEMICOLON $$16 for_expr", "for_expr : expr", "for_expr :", "for_test_expr : expr", "for_test_expr :", "$$17 :", "$$18 :", "$$19 :", "while_hdr : SYM_WHILE $$17 SYM_LPAREN $$18 expr $$19 SYM_RPAREN", "dbg_list : SYM_LPAREN e_list SYM_RPAREN", "dbg_list : e_list", "e_list : expr", "e_list : expr SYM_COMMA e_list", "expr : rval", "expr : lval assignop expr", "lval : id", "lval : ar_lval", "lval : at_lval", "ar_lval : lval SYM_LBRACK i_list SYM_RBRACK", "at_lval : lval SYM_PERIOD SYM_IDENT", "rval : disj", "rval : disj SYM_OR rval", "disj : conj", "disj : conj SYM_AND disj", "conj : a_expr", "conj : a_expr relop a_expr", "a_expr : term", "a_expr : term addop a_expr", "term : factor", "term : factor mulop term", "factor : primary", "factor : primary SYM_UPARROW factor", "primary : lval", "primary : num", "primary : string", "primary : incr", "primary : unop primary", "primary : id SYM_LPAREN actuals SYM_RPAREN", "primary : SYM_LPAREN expr SYM_RPAREN", "incr : incrop lval", "incr : lval incrop", "actuals : ap_list", "actuals :", "ap_list : a_parm", "ap_list : a_parm SYM_COMMA ap_list", "a_parm : expr", "i_list : expr", "i_list : expr SYM_COMMA i_list", "assignop : SYM_ASSIGN", "assignop : SYM_PLUS_ASSIGN", "assignop : SYM_MINUS_ASSIGN", "assignop : SYM_STAR_ASSIGN", "assignop : SYM_SLASH_ASSIGN", "assignop : SYM_MODULUS_ASSIGN", "assignop : SYM_UPARROW_ASSIGN", "relop : SYM_LESS", "relop : SYM_LESS_EQUAL", "relop : SYM_EQUAL", "relop : SYM_NOT_EQUAL", "relop : SYM_GREATER_EQUAL", "relop : SYM_GREATER", "relop : SYM_MATCH", "relop : SYM_DONT_MATCH", "relop : SYM_IN", "addop : SYM_PLUS", "addop : SYM_MINUS", "mulop : SYM_STAR", "mulop : SYM_SLASH", "mulop : SYM_MODULUS", "mulop : SYM_ATSIGN", "incrop : SYM_PLUS_PLUS", "incrop : SYM_MINUS_MINUS", "unop : SYM_MINUS", "unop : SYM_NOT", "id : SYM_IDENT", "num : SYM_INT_LIT", "num : SYM_FLOAT_LIT", "string : SYM_STRING_LIT", }; #endif #ifdef YYSTACKSIZE #undef YYMAXDEPTH #define YYMAXDEPTH YYSTACKSIZE #else #ifdef YYMAXDEPTH #define YYSTACKSIZE YYMAXDEPTH #else #define YYSTACKSIZE 10000 #define YYMAXDEPTH 10000 #endif #endif #define YYINITSTACKSIZE 200 int yydebug; int yynerrs; int yyerrflag; int yychar; short *yyssp; YYSTYPE *yyvsp; YYSTYPE yyval; YYSTYPE yylval; short *yyss; short *yysslim; YYSTYPE *yyvs; int yystacksize; #line 505 "nabgrm.y" #include "lex.yy.c" #line 711 "y.tab.c" /* allocate initial stack or double stack size, up to YYMAXDEPTH */ int yyparse __P((void)); static int yygrowstack __P((void)); static int yygrowstack() { int newsize, i; short *newss; YYSTYPE *newvs; if ((newsize = yystacksize) == 0) newsize = YYINITSTACKSIZE; else if (newsize >= YYMAXDEPTH) return -1; else if ((newsize *= 2) > YYMAXDEPTH) newsize = YYMAXDEPTH; i = yyssp - yyss; if ((newss = (short *)realloc(yyss, newsize * sizeof *newss)) == NULL) return -1; yyss = newss; yyssp = newss + i; if ((newvs = (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs)) == NULL) return -1; yyvs = newvs; yyvsp = newvs + i; yystacksize = newsize; yysslim = yyss + newsize - 1; return 0; } #define YYABORT goto yyabort #define YYREJECT goto yyabort #define YYACCEPT goto yyaccept #define YYERROR goto yyerrlab int yyparse() { int yym, yyn, yystate; #if YYDEBUG char *yys; if ((yys = getenv("YYDEBUG")) != NULL) { yyn = *yys; if (yyn >= '0' && yyn <= '9') yydebug = yyn - '0'; } #endif yynerrs = 0; yyerrflag = 0; yychar = (-1); if (yyss == NULL && yygrowstack()) goto yyoverflow; yyssp = yyss; yyvsp = yyvs; *yyssp = yystate = 0; yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { if ((yychar = yylex()) < 0) yychar = 0; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif if (yyssp >= yysslim && yygrowstack()) { goto yyoverflow; } *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; yychar = (-1); if (yyerrflag > 0) --yyerrflag; goto yyloop; } if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { yyn = yytable[yyn]; goto yyreduce; } if (yyerrflag) goto yyinrecovery; goto yynewerror; yynewerror: yyerror("syntax error"); goto yyerrlab; yyerrlab: ++yynerrs; yyinrecovery: if (yyerrflag < 3) { yyerrflag = 3; for (;;) { if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yyssp, yytable[yyn]); #endif if (yyssp >= yysslim && yygrowstack()) { goto yyoverflow; } *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; goto yyloop; } else { #if YYDEBUG if (yydebug) printf("%sdebug: error recovery discarding state %d\n", YYPREFIX, *yyssp); #endif if (yyssp <= yyss) goto yyabort; --yyssp; --yyvsp; } } } else { if (yychar == 0) goto yyabort; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif yychar = (-1); goto yyloop; } yyreduce: #if YYDEBUG if (yydebug) printf("%sdebug: state %d, reducing by rule %d (%s)\n", YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; yyval = yyvsp[1-yym]; switch (yyn) { case 1: #line 204 "nabgrm.y" { CG_genend(); } break; case 3: #line 206 "nabgrm.y" { yyval.npval = NULL; } break; case 7: #line 210 "nabgrm.y" { yyval.npval = NULL; } break; case 13: #line 219 "nabgrm.y" { yyval.npval = node( SYM_DECL, 0, yyvsp[-2].npval, yyvsp[-1].npval ); CG_genvardecl( yyval.npval, 0, 0 ); } break; case 14: #line 221 "nabgrm.y" { v_type.v_type = T_INT; v_type.v_value.v_ival = T_INT; yyval.npval = node( SYM_TYPE, &v_type, 0, 0 ); } break; case 15: #line 225 "nabgrm.y" { v_type.v_type = T_SIZE_T; v_type.v_value.v_ival = T_SIZE_T; yyval.npval = node( SYM_TYPE, &v_type, 0, 0 ); } break; case 16: #line 229 "nabgrm.y" { v_type.v_type = T_FLOAT; v_type.v_value.v_ival = T_FLOAT; yyval.npval = node( SYM_TYPE, &v_type, 0, 0 ); } break; case 17: #line 233 "nabgrm.y" { v_type.v_type = T_STRING; v_type.v_value.v_ival = T_STRING; yyval.npval = node( SYM_TYPE, &v_type, 0, 0 ); } break; case 18: #line 237 "nabgrm.y" { v_type.v_type = T_FILE; v_type.v_value.v_ival = T_FILE; yyval.npval = node( SYM_TYPE, &v_type, 0, 0 ); } break; case 19: #line 241 "nabgrm.y" { v_type.v_type = T_POINT; v_type.v_value.v_ival = T_POINT; yyval.npval = node( SYM_TYPE, &v_type, 0, 0 ); } break; case 20: #line 245 "nabgrm.y" { v_type.v_type = T_BOUNDS; v_type.v_value.v_ival = T_BOUNDS; yyval.npval = node( SYM_TYPE, &v_type, 0, 0 ); } break; case 21: #line 249 "nabgrm.y" { v_type.v_type = T_MATRIX; v_type.v_value.v_ival = T_MATRIX; yyval.npval = node( SYM_TYPE, &v_type, 0, 0 ); } break; case 22: #line 253 "nabgrm.y" { v_type.v_type = T_ATOM; v_type.v_value.v_ival = T_ATOM; yyval.npval = node( SYM_TYPE, &v_type, 0, 0 ); } break; case 23: #line 257 "nabgrm.y" { v_type.v_type = T_RESIDUE; v_type.v_value.v_ival = T_RESIDUE; yyval.npval = node( SYM_TYPE, &v_type, 0, 0 ); } break; case 24: #line 261 "nabgrm.y" { v_type.v_type = T_MOLECULE; v_type.v_value.v_ival = T_MOLECULE; yyval.npval = node( SYM_TYPE, &v_type, 0, 0 ); } break; case 25: #line 265 "nabgrm.y" { yyval.npval = node( SYM_LIST, 0, yyvsp[0].npval, 0 ); } break; case 26: #line 266 "nabgrm.y" { yyval.npval = node( SYM_LIST, 0, yyvsp[-2].npval, yyvsp[0].npval ); } break; case 27: #line 267 "nabgrm.y" { yyval.npval = yyvsp[0].npval; } break; case 28: #line 269 "nabgrm.y" { yyval.npval = node( SYM_LBRACK, 0, yyvsp[-3].npval, yyvsp[-1].npval ); } break; case 29: #line 270 "nabgrm.y" { yyval.npval = yyvsp[0].npval; } break; case 30: #line 271 "nabgrm.y" { yyval.npval = node( SYM_HASHED, 0, 0, 0 ); } break; case 31: #line 272 "nabgrm.y" { yyval.npval = node( SYM_LIST, 0, yyvsp[0].npval, 0 ); } break; case 32: #line 274 "nabgrm.y" { yyval.npval = node( SYM_LIST, 0, yyvsp[-2].npval, yyvsp[0].npval ); } break; case 33: #line 275 "nabgrm.y" { yyval.npval = yyvsp[0].npval; } break; case 34: #line 276 "nabgrm.y" { yyval.npval = node( SYM_DYNAMIC, 0, 0, 0 ); } break; case 35: #line 279 "nabgrm.y" { CG_genop( NULL, SYM_SEMICOLON); CG_genfend( NULL ); } break; case 36: #line 282 "nabgrm.y" { CG_genop( NULL, SYM_SEMICOLON ); CG_genfend( yyvsp[-1].npval ); } break; case 37: #line 285 "nabgrm.y" { CG_genfstart(); } break; case 38: #line 286 "nabgrm.y" { CG_genfend( NULL ); } break; case 39: #line 287 "nabgrm.y" { CG_genfhdr( yyvsp[-1].npval, yyvsp[0].npval ); } break; case 40: #line 289 "nabgrm.y" { CG_genplist( yyvsp[-1].npval ); } break; case 41: #line 290 "nabgrm.y" { yyval.npval = yyvsp[0].npval; } break; case 42: #line 291 "nabgrm.y" { yyval.npval = NULL; } break; case 43: #line 292 "nabgrm.y" { yyval.npval = node( SYM_LIST, 0, yyvsp[0].npval, 0 ); } break; case 44: #line 294 "nabgrm.y" { yyval.npval = node( SYM_LIST, 0, yyvsp[-2].npval, yyvsp[0].npval ); } break; case 45: #line 296 "nabgrm.y" { yyval.npval = node( SYM_LIST, 0, yyvsp[0].npval, NULL ); yyval.npval = node( SYM_DECL, 0, yyvsp[-1].npval, yyval.npval ); } break; case 46: #line 298 "nabgrm.y" { CG_genpdecls(); CG_genop( NULL, SYM_LBRACE ); } break; case 47: #line 300 "nabgrm.y" { CG_genedefs( TRUE ); } break; case 48: #line 302 "nabgrm.y" { CG_genestmts( TRUE ); CG_genop( NULL, SYM_RBRACE ); } break; case 49: #line 304 "nabgrm.y" { CG_gennull ( ); } break; case 51: #line 306 "nabgrm.y" { yyval.npval = NULL; } break; case 55: #line 310 "nabgrm.y" { yyval.npval = NULL; } break; case 69: #line 327 "nabgrm.y" { CG_genmain(); yyval.npval = node( SYM_ALLOCATE, 0, 0, yyvsp[-1].npval ); CG_genexpr( yyval.npval ); CG_genop( NULL, SYM_SEMICOLON ); } break; case 70: #line 332 "nabgrm.y" { CG_genmain(); yyval.npval = node( SYM_ASSERT, 0, 0, yyvsp[-1].npval ); CG_genassert( yyval.npval ); } break; case 71: #line 336 "nabgrm.y" { CG_genmain(); CG_genrword( SYM_BREAK ); CG_genop( NULL, SYM_SEMICOLON ); } break; case 72: #line 339 "nabgrm.y" { CG_genmain(); CG_genop( NULL, SYM_LBRACE ); } break; case 73: #line 342 "nabgrm.y" { CG_genop( NULL, SYM_RBRACE ); } break; case 74: #line 344 "nabgrm.y" { CG_genmain(); CG_genrword( SYM_CONTINUE ); CG_genop( NULL, SYM_SEMICOLON ); } break; case 75: #line 348 "nabgrm.y" { CG_genmain(); yyval.npval = node( SYM_DEALLOCATE, 0, 0, yyvsp[-1].npval ); CG_genexpr(yyval.npval); CG_genop( NULL, SYM_SEMICOLON ); } break; case 76: #line 353 "nabgrm.y" { CG_genmain(); yyval.npval = node( SYM_DEBUG, 0, 0, yyvsp[-1].npval ); CG_gendebug( yyval.npval ); } break; case 77: #line 357 "nabgrm.y" { CG_genmain(); yyval.npval = node( SYM_DELETE, 0, 0, yyvsp[-1].npval ); CG_genexpr(yyval.npval); CG_genop( NULL, SYM_SEMICOLON ); } break; case 78: #line 362 "nabgrm.y" { CG_genmain(); CG_genexpr( yyvsp[-1].npval ); CG_genop( NULL, SYM_SEMICOLON ); } break; case 80: #line 366 "nabgrm.y" { CG_genrword( SYM_ELSE ); } break; case 83: #line 368 "nabgrm.y" { CG_genmain(); CG_genrword(SYM_RETURN); CG_genop( NULL, SYM_LPAREN ); } break; case 84: #line 371 "nabgrm.y" { CG_genexpr( yyvsp[0].npval ); } break; case 85: #line 372 "nabgrm.y" { CG_genop( NULL, SYM_RPAREN ); CG_genop( NULL, SYM_SEMICOLON ); } break; case 87: #line 376 "nabgrm.y" { CG_genmain(); CG_genrword( SYM_IF ); } break; case 88: #line 377 "nabgrm.y" { CG_genop( NULL, SYM_LPAREN ); } break; case 89: #line 378 "nabgrm.y" { yyval.npval = node( SYM_TEST, 0, 0, yyvsp[0].npval ); CG_genexpr( yyval.npval ); } break; case 90: #line 380 "nabgrm.y" { CG_genop( NULL, SYM_RPAREN ); } break; case 91: #line 382 "nabgrm.y" { CG_genmain(); CG_genrword( SYM_FOR ); } break; case 92: #line 383 "nabgrm.y" { CG_genop( NULL, SYM_LPAREN ); } break; case 93: #line 385 "nabgrm.y" { CG_genop( NULL, SYM_RPAREN ); } break; case 96: #line 388 "nabgrm.y" { yyval.npval = node( SYM_FOREACH, 0, yyvsp[-2].npval, yyvsp[0].npval ); CG_genexpr( yyval.npval ); } break; case 97: #line 391 "nabgrm.y" { CG_genop( NULL, SYM_SEMICOLON ); } break; case 98: #line 393 "nabgrm.y" { CG_genop( NULL, SYM_SEMICOLON ); } break; case 100: #line 394 "nabgrm.y" { CG_genexpr( yyvsp[0].npval ); } break; case 101: #line 395 "nabgrm.y" { yyval.npval = NULL; } break; case 102: #line 396 "nabgrm.y" { yyval.npval = node( SYM_TEST, 0, 0, yyvsp[0].npval ); CG_genexpr( yyval.npval ); } break; case 103: #line 398 "nabgrm.y" { yyval.npval = NULL; } break; case 104: #line 400 "nabgrm.y" { CG_genmain(); CG_genrword( SYM_WHILE ); } break; case 105: #line 401 "nabgrm.y" { CG_genop( NULL, SYM_LPAREN ); } break; case 106: #line 402 "nabgrm.y" { yyval.npval = node( SYM_TEST, 0, 0, yyvsp[0].npval ); CG_genexpr( yyval.npval ); } break; case 107: #line 404 "nabgrm.y" { CG_genop( NULL, SYM_RPAREN ); } break; case 108: #line 407 "nabgrm.y" { yyval.npval = yyvsp[-1].npval; } break; case 109: #line 408 "nabgrm.y" { yyval.npval = yyvsp[0].npval; } break; case 110: #line 409 "nabgrm.y" { yyval.npval = node( SYM_LIST, 0, yyvsp[0].npval, 0 ); } break; case 111: #line 411 "nabgrm.y" { yyval.npval = node( SYM_LIST, 0, yyvsp[-2].npval, yyvsp[0].npval ); } break; case 112: #line 413 "nabgrm.y" { yyval.npval = yyvsp[0].npval; } break; case 113: #line 415 "nabgrm.y" { yyval.npval = node( yyvsp[-1].ival, 0, yyvsp[-2].npval, yyvsp[0].npval ); } break; case 114: #line 416 "nabgrm.y" { yyval.npval = yyvsp[0].npval; } break; case 115: #line 417 "nabgrm.y" { yyval.npval = yyvsp[0].npval; } break; case 116: #line 418 "nabgrm.y" { yyval.npval = yyvsp[0].npval; } break; case 117: #line 420 "nabgrm.y" { yyval.npval = node( SYM_LBRACK, 0, yyvsp[-3].npval, yyvsp[-1].npval ); } break; case 118: #line 422 "nabgrm.y" { yyval.npval = node( SYM_PERIOD, 0, yyvsp[-2].npval, node( SYM_ATTRIBUTE, &val, 0, 0 ) ); } break; case 119: #line 424 "nabgrm.y" { yyval.npval = yyvsp[0].npval; } break; case 120: #line 426 "nabgrm.y" { yyval.npval = node( SYM_OR, 0, yyvsp[-2].npval, yyvsp[0].npval ); } break; case 121: #line 427 "nabgrm.y" { yyval.npval = yyvsp[0].npval; } break; case 122: #line 429 "nabgrm.y" { yyval.npval = node( SYM_AND, 0, yyvsp[-2].npval, yyvsp[0].npval ); } break; case 123: #line 430 "nabgrm.y" { yyval.npval = yyvsp[0].npval; } break; case 124: #line 432 "nabgrm.y" { yyval.npval = node( yyvsp[-1].ival, 0, yyvsp[-2].npval, yyvsp[0].npval ); } break; case 125: #line 433 "nabgrm.y" { yyval.npval = yyvsp[0].npval; } break; case 126: #line 435 "nabgrm.y" { yyval.npval = node( yyvsp[-1].ival, 0, yyvsp[-2].npval, yyvsp[0].npval ); } break; case 127: #line 436 "nabgrm.y" { yyval.npval = yyvsp[0].npval; } break; case 128: #line 438 "nabgrm.y" { yyval.npval = node( yyvsp[-1].ival, 0, yyvsp[-2].npval, yyvsp[0].npval ); } break; case 129: #line 439 "nabgrm.y" { yyval.npval = yyvsp[0].npval; } break; case 130: #line 441 "nabgrm.y" { yyval.npval = node( SYM_UPARROW, 0, yyvsp[-2].npval, yyvsp[0].npval ); } break; case 131: #line 442 "nabgrm.y" { yyval.npval = yyvsp[0].npval; } break; case 132: #line 443 "nabgrm.y" { yyval.npval = yyvsp[0].npval; } break; case 133: #line 444 "nabgrm.y" { yyval.npval = yyvsp[0].npval; } break; case 134: #line 445 "nabgrm.y" { yyval.npval = yyvsp[0].npval; } break; case 135: #line 446 "nabgrm.y" { yyval.npval = node( yyvsp[-1].ival, 0, NULL, yyvsp[0].npval ); } break; case 136: #line 448 "nabgrm.y" { yyval.npval = node( SYM_CALL, 0, yyvsp[-3].npval, yyvsp[-1].npval ); } break; case 137: #line 450 "nabgrm.y" { yyval.npval = node( SYM_LPAREN, 0, NULL, yyvsp[-1].npval ); } break; case 138: #line 451 "nabgrm.y" { yyval.npval = node( yyvsp[-1].ival, 0, 0, yyvsp[0].npval ); } break; case 139: #line 452 "nabgrm.y" { yyval.npval = node( yyvsp[0].ival, 0, yyvsp[-1].npval, 0 ); } break; case 140: #line 453 "nabgrm.y" { yyval.npval = yyvsp[0].npval; } break; case 141: #line 454 "nabgrm.y" { yyval.npval = NULL; } break; case 142: #line 455 "nabgrm.y" { yyval.npval = node( SYM_LIST, 0, yyvsp[0].npval, 0 ); } break; case 143: #line 457 "nabgrm.y" { yyval.npval = node( SYM_LIST, 0, yyvsp[-2].npval, yyvsp[0].npval ); } break; case 144: #line 458 "nabgrm.y" { yyval.npval = node( SYM_PARM, 0, 0, yyvsp[0].npval ); } break; case 145: #line 459 "nabgrm.y" { yyval.npval = node( SYM_INDEX, 0, yyvsp[0].npval, 0 ); } break; case 146: #line 461 "nabgrm.y" { yyval.npval = node( SYM_INDEX, 0, yyvsp[-2].npval, yyvsp[0].npval ); } break; case 147: #line 462 "nabgrm.y" { yyval.ival = SYM_ASSIGN; } break; case 148: #line 464 "nabgrm.y" { yyval.ival = SYM_PLUS_ASSIGN; } break; case 149: #line 466 "nabgrm.y" { yyval.ival = SYM_MINUS_ASSIGN; } break; case 150: #line 468 "nabgrm.y" { yyval.ival = SYM_STAR_ASSIGN; } break; case 151: #line 470 "nabgrm.y" { yyval.ival = SYM_SLASH_ASSIGN; } break; case 152: #line 472 "nabgrm.y" { yyval.ival = SYM_MODULUS_ASSIGN; } break; case 153: #line 474 "nabgrm.y" { yyval.ival = SYM_UPARROW_ASSIGN; } break; case 154: #line 475 "nabgrm.y" { yyval.ival = SYM_LESS; } break; case 155: #line 477 "nabgrm.y" { yyval.ival = SYM_LESS_EQUAL; } break; case 156: #line 478 "nabgrm.y" { yyval.ival = SYM_EQUAL; } break; case 157: #line 479 "nabgrm.y" { yyval.ival = SYM_NOT_EQUAL; } break; case 158: #line 481 "nabgrm.y" { yyval.ival = SYM_GREATER_EQUAL; } break; case 159: #line 482 "nabgrm.y" { yyval.ival = SYM_GREATER; } break; case 160: #line 483 "nabgrm.y" { yyval.ival = SYM_MATCH; } break; case 161: #line 485 "nabgrm.y" { yyval.ival = SYM_DONT_MATCH; } break; case 162: #line 486 "nabgrm.y" { yyval.ival = SYM_IN; } break; case 163: #line 487 "nabgrm.y" { yyval.ival = SYM_PLUS; } break; case 164: #line 488 "nabgrm.y" { yyval.ival = SYM_MINUS; } break; case 165: #line 489 "nabgrm.y" { yyval.ival = SYM_STAR; } break; case 166: #line 490 "nabgrm.y" { yyval.ival = SYM_SLASH; } break; case 167: #line 491 "nabgrm.y" { yyval.ival = SYM_MODULUS; } break; case 168: #line 492 "nabgrm.y" { yyval.ival = SYM_ATSIGN; } break; case 169: #line 493 "nabgrm.y" { yyval.ival = SYM_PLUS_PLUS; } break; case 170: #line 495 "nabgrm.y" { yyval.ival = SYM_MINUS_MINUS; } break; case 171: #line 496 "nabgrm.y" { yyval.ival = SYM_NEGATE; } break; case 172: #line 497 "nabgrm.y" { yyval.ival = SYM_NOT; } break; case 173: #line 499 "nabgrm.y" { yyval.npval = node( SYM_IDENT, &val, 0, 0 ); } break; case 174: #line 500 "nabgrm.y" { yyval.npval = node( SYM_INT_LIT, &val, 0, 0 ); } break; case 175: #line 501 "nabgrm.y" { yyval.npval = node( SYM_FLOAT_LIT, &val, 0, 0 ); } break; case 176: #line 503 "nabgrm.y" { yyval.npval = node( SYM_STRING_LIT, &val, 0, 0 ); } break; #line 1515 "y.tab.c" } yyssp -= yym; yystate = *yyssp; yyvsp -= yym; yym = yylhs[yyn]; if (yystate == 0 && yym == 0) { #if YYDEBUG if (yydebug) printf("%sdebug: after reduction, shifting from state 0 to\ state %d\n", YYPREFIX, YYFINAL); #endif yystate = YYFINAL; *++yyssp = YYFINAL; *++yyvsp = yyval; if (yychar < 0) { if ((yychar = yylex()) < 0) yychar = 0; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } #endif } if (yychar == 0) goto yyaccept; goto yyloop; } if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; #if YYDEBUG if (yydebug) printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yyssp, yystate); #endif if (yyssp >= yysslim && yygrowstack()) { goto yyoverflow; } *++yyssp = yystate; *++yyvsp = yyval; goto yyloop; yyoverflow: yyerror("yacc stack overflow"); yyabort: return (1); yyaccept: return (0); }