1 2 //---------------------------------------------------- 3 // The following code was generated by Java(tm) CUP v0.9d 4 // Thu Aug 10 03:51:39 MSD 2006 5 //---------------------------------------------------- 6 7 package java_cup; 8 9 import java.util.Hashtable; 10 11 public class parser extends java_cup.runtime.lr_parser { 12 13 /** constructor */ parser()14 public parser() {super();} 15 16 /** production table */ 17 protected static final short _production_table[][] = { 18 {0, 2}, {32, 0}, {1, 10}, {1, 4}, {33, 0}, 19 {2, 4}, {2, 1}, {3, 2}, {3, 1}, {34, 0}, 20 {11, 4}, {4, 2}, {5, 4}, {5, 1}, {6, 4}, 21 {6, 1}, {13, 4}, {13, 1}, {14, 4}, {14, 1}, 22 {16, 4}, {16, 1}, {7, 2}, {7, 1}, {35, 0}, 23 {15, 5}, {36, 0}, {15, 6}, {37, 0}, {15, 4}, 24 {38, 0}, {15, 5}, {18, 3}, {18, 1}, {19, 3}, 25 {19, 1}, {39, 0}, {8, 5}, {8, 1}, {9, 2}, 26 {9, 1}, {40, 0}, {20, 5}, {41, 0}, {20, 3}, 27 {25, 3}, {25, 1}, {26, 1}, {21, 2}, {21, 1}, 28 {22, 2}, {22, 1}, {31, 2}, {31, 1}, {10, 3}, 29 {10, 1}, {12, 3}, {12, 1}, {17, 1}, {23, 1}, 30 {24, 1}, {28, 1}, {29, 1}, {30, 1}, {27, 0} 31 }; 32 33 /** access to production table */ production_table()34 public short[][] production_table() {return _production_table;} 35 36 /** parse action table */ 37 protected static final short[][] _action_table = { 38 /*0*/{1,3,2,-2,3,-2,5,-2,6,-2,7,-2,8,-2,9,-2,10,-2,20,-2,-1,0}, 39 /*1*/{0,120,-1,0}, 40 /*2*/{7,34,8,36,-1,0}, 41 /*3*/{2,7,3,-65,5,-65,6,-65,7,-65,8,-65,9,-65,10,-65,20,-65,-1,0}, 42 /*4*/{3,-65,5,-65,6,-65,7,-65,8,-65,9,-65,10,-65,20,-65,-1,0}, 43 /*5*/{3,-7,5,-7,6,-7,7,-7,8,-7,9,-7,10,-7,20,-7,-1,0}, 44 /*6*/{21,8,-1,0}, 45 /*7*/{13,-56,16,-56,21,-56,-1,0}, 46 /*8*/{13,-5,16,11,-1,0}, 47 /*9*/{13,13,-1,0}, 48 /*10*/{21,12,-1,0}, 49 /*11*/{13,-55,16,-55,21,-55,-1,0}, 50 /*12*/{3,-6,5,-6,6,-6,7,-6,8,-6,9,-6,10,-6,20,-6,-1,0}, 51 /*13*/{3,17,5,18,6,-65,7,-65,8,-65,9,-65,10,-65,20,-65,-1,0}, 52 /*14*/{3,-9,5,-9,6,-9,7,-9,8,-9,9,-9,10,-9,20,-9,-1,0}, 53 /*15*/{3,-8,5,-8,6,-8,7,-8,8,-8,9,-8,10,-8,20,-8,-1,0}, 54 /*16*/{21,8,-1,0}, 55 /*17*/{4,108,-1,0}, 56 /*18*/{6,103,7,-65,8,-65,9,-65,10,-65,20,-65,-1,0}, 57 /*19*/{6,-14,7,-14,8,-14,9,-14,10,-14,20,-14,-1,0}, 58 /*20*/{7,-65,8,-65,9,-65,10,-65,20,22,-1,0}, 59 /*21*/{11,99,-1,0}, 60 /*22*/{7,-22,8,-22,9,-22,10,-22,-1,0}, 61 /*23*/{7,-65,8,-65,9,25,10,-65,-1,0}, 62 /*24*/{11,96,-1,0}, 63 /*25*/{7,-65,8,-65,10,29,-1,0}, 64 /*26*/{7,-18,8,-18,10,-18,-1,0}, 65 /*27*/{7,34,8,36,-1,0}, 66 /*28*/{11,31,-1,0}, 67 /*29*/{7,-20,8,-20,-1,0}, 68 /*30*/{22,32,-1,0}, 69 /*31*/{13,33,-1,0}, 70 /*32*/{7,-19,8,-19,-1,0}, 71 /*33*/{1,85,21,8,-1,0}, 72 /*34*/{1,-24,7,-24,8,-24,12,-24,21,-24,-1,0}, 73 /*35*/{7,72,-1,0}, 74 /*36*/{1,-65,7,34,8,36,12,41,21,-65,-1,0}, 75 /*37*/{1,47,21,43,-1,0}, 76 /*38*/{1,-39,21,-39,-1,0}, 77 /*39*/{1,-23,7,-23,8,-23,12,-23,21,-23,-1,0}, 78 /*40*/{11,42,-1,0}, 79 /*41*/{21,43,-1,0}, 80 /*42*/{13,-62,18,-62,-1,0}, 81 /*43*/{13,-37,-1,0}, 82 /*44*/{13,46,-1,0}, 83 /*45*/{1,-38,21,-38,-1,0}, 84 /*46*/{13,-44,-1,0}, 85 /*47*/{18,-42,-1,0}, 86 /*48*/{0,-3,1,47,21,43,-1,0}, 87 /*49*/{0,-41,1,-41,21,-41,-1,0}, 88 /*50*/{0,-40,1,-40,21,-40,-1,0}, 89 /*51*/{18,53,-1,0}, 90 /*52*/{13,-65,19,-65,21,-65,22,-65,-1,0}, 91 /*53*/{13,68,19,67,-1,0}, 92 /*54*/{13,-50,19,-50,21,-50,22,-50,-1,0}, 93 /*55*/{13,-48,19,-48,21,59,22,58,-1,0}, 94 /*56*/{13,-47,19,-47,-1,0}, 95 /*57*/{13,-52,19,-52,21,-52,22,-52,-1,0}, 96 /*58*/{13,-63,17,-63,19,-63,21,-63,22,-63,-1,0}, 97 /*59*/{13,-65,17,62,19,-65,21,-65,22,-65,-1,0}, 98 /*60*/{13,-49,19,-49,21,-49,22,-49,-1,0}, 99 /*61*/{21,65,-1,0}, 100 /*62*/{13,-54,19,-54,21,-54,22,-54,-1,0}, 101 /*63*/{13,-51,19,-51,21,-51,22,-51,-1,0}, 102 /*64*/{13,-64,21,-64,22,-64,-1,0}, 103 /*65*/{13,-53,21,-53,22,-53,-1,0}, 104 /*66*/{13,-65,19,-65,21,-65,22,-65,-1,0}, 105 /*67*/{0,-43,1,-43,21,-43,-1,0}, 106 /*68*/{13,-46,19,-46,-1,0}, 107 /*69*/{13,71,-1,0}, 108 /*70*/{0,-45,1,-45,21,-45,-1,0}, 109 /*71*/{1,73,21,8,-1,0}, 110 /*72*/{13,-31,-1,0}, 111 /*73*/{16,11,21,-59,-1,0}, 112 /*74*/{21,76,-1,0}, 113 /*75*/{13,-61,14,-61,-1,0}, 114 /*76*/{13,-27,14,79,-1,0}, 115 /*77*/{13,-36,14,-36,-1,0}, 116 /*78*/{21,76,-1,0}, 117 /*79*/{13,81,-1,0}, 118 /*80*/{1,-28,7,-28,8,-28,12,-28,21,-28,-1,0}, 119 /*81*/{13,-35,14,-35,-1,0}, 120 /*82*/{13,84,-1,0}, 121 /*83*/{1,-32,7,-32,8,-32,12,-32,21,-32,-1,0}, 122 /*84*/{13,-29,-1,0}, 123 /*85*/{21,87,-1,0}, 124 /*86*/{13,-60,14,-60,-1,0}, 125 /*87*/{13,-34,14,-34,-1,0}, 126 /*88*/{13,-25,14,91,-1,0}, 127 /*89*/{13,93,-1,0}, 128 /*90*/{21,87,-1,0}, 129 /*91*/{13,-33,14,-33,-1,0}, 130 /*92*/{1,-26,7,-26,8,-26,12,-26,21,-26,-1,0}, 131 /*93*/{13,95,-1,0}, 132 /*94*/{1,-30,7,-30,8,-30,12,-30,21,-30,-1,0}, 133 /*95*/{22,97,-1,0}, 134 /*96*/{13,98,-1,0}, 135 /*97*/{7,-17,8,-17,10,-17,-1,0}, 136 /*98*/{21,8,-1,0}, 137 /*99*/{13,101,16,11,-1,0}, 138 /*100*/{7,-21,8,-21,9,-21,10,-21,-1,0}, 139 /*101*/{7,-16,8,-16,9,-16,10,-16,20,-16,-1,0}, 140 /*102*/{4,105,-1,0}, 141 /*103*/{7,-12,8,-12,9,-12,10,-12,20,-12,-1,0}, 142 /*104*/{22,106,-1,0}, 143 /*105*/{13,107,-1,0}, 144 /*106*/{7,-15,8,-15,9,-15,10,-15,20,-15,-1,0}, 145 /*107*/{22,109,-1,0}, 146 /*108*/{13,110,-1,0}, 147 /*109*/{6,-13,7,-13,8,-13,9,-13,10,-13,20,-13,-1,0}, 148 /*110*/{13,-58,16,115,-1,0}, 149 /*111*/{13,-10,-1,0}, 150 /*112*/{13,114,-1,0}, 151 /*113*/{3,-11,5,-11,6,-11,7,-11,8,-11,9,-11,10,-11,20,-11,-1,0}, 152 /*114*/{15,116,21,12,-1,0}, 153 /*115*/{13,-57,-1,0}, 154 /*116*/{1,-65,7,34,8,36,12,41,21,-65,-1,0}, 155 /*117*/{1,47,21,43,-1,0}, 156 /*118*/{0,-4,1,47,21,43,-1,0}, 157 /*119*/{0,-1,-1,0}, 158 }; 159 160 /** access to parse action table */ action_table()161 public short[][] action_table() {return _action_table;} 162 163 /** reduce_goto table */ 164 protected static final short[][] _reduce_table = { 165 /*0*/{1,1,32,3,-1,-1}, 166 /*1*/{-1,-1}, 167 /*2*/{7,116,15,34,-1,-1}, 168 /*3*/{2,4,27,5,-1,-1}, 169 /*4*/{3,13,27,14,-1,-1}, 170 /*5*/{-1,-1}, 171 /*6*/{10,8,-1,-1}, 172 /*7*/{-1,-1}, 173 /*8*/{33,9,-1,-1}, 174 /*9*/{-1,-1}, 175 /*10*/{-1,-1}, 176 /*11*/{-1,-1}, 177 /*12*/{-1,-1}, 178 /*13*/{4,20,5,18,11,15,27,19,-1,-1}, 179 /*14*/{-1,-1}, 180 /*15*/{-1,-1}, 181 /*16*/{10,110,12,111,-1,-1}, 182 /*17*/{-1,-1}, 183 /*18*/{6,103,27,101,-1,-1}, 184 /*19*/{-1,-1}, 185 /*20*/{16,23,27,22,-1,-1}, 186 /*21*/{-1,-1}, 187 /*22*/{-1,-1}, 188 /*23*/{13,25,27,26,-1,-1}, 189 /*24*/{-1,-1}, 190 /*25*/{14,27,27,29,-1,-1}, 191 /*26*/{-1,-1}, 192 /*27*/{7,36,15,34,-1,-1}, 193 /*28*/{-1,-1}, 194 /*29*/{-1,-1}, 195 /*30*/{-1,-1}, 196 /*31*/{-1,-1}, 197 /*32*/{-1,-1}, 198 /*33*/{10,73,17,85,-1,-1}, 199 /*34*/{-1,-1}, 200 /*35*/{-1,-1}, 201 /*36*/{8,37,15,39,27,38,-1,-1}, 202 /*37*/{9,48,20,49,28,47,-1,-1}, 203 /*38*/{-1,-1}, 204 /*39*/{-1,-1}, 205 /*40*/{-1,-1}, 206 /*41*/{28,43,-1,-1}, 207 /*42*/{-1,-1}, 208 /*43*/{39,44,-1,-1}, 209 /*44*/{-1,-1}, 210 /*45*/{-1,-1}, 211 /*46*/{41,69,-1,-1}, 212 /*47*/{40,51,-1,-1}, 213 /*48*/{20,50,28,47,-1,-1}, 214 /*49*/{-1,-1}, 215 /*50*/{-1,-1}, 216 /*51*/{-1,-1}, 217 /*52*/{21,55,25,53,26,56,27,54,-1,-1}, 218 /*53*/{-1,-1}, 219 /*54*/{-1,-1}, 220 /*55*/{22,60,29,59,-1,-1}, 221 /*56*/{-1,-1}, 222 /*57*/{-1,-1}, 223 /*58*/{-1,-1}, 224 /*59*/{27,62,31,63,-1,-1}, 225 /*60*/{-1,-1}, 226 /*61*/{30,65,-1,-1}, 227 /*62*/{-1,-1}, 228 /*63*/{-1,-1}, 229 /*64*/{-1,-1}, 230 /*65*/{-1,-1}, 231 /*66*/{21,55,26,68,27,54,-1,-1}, 232 /*67*/{-1,-1}, 233 /*68*/{-1,-1}, 234 /*69*/{-1,-1}, 235 /*70*/{-1,-1}, 236 /*71*/{10,73,17,74,-1,-1}, 237 /*72*/{38,82,-1,-1}, 238 /*73*/{-1,-1}, 239 /*74*/{19,76,24,77,-1,-1}, 240 /*75*/{-1,-1}, 241 /*76*/{36,79,-1,-1}, 242 /*77*/{-1,-1}, 243 /*78*/{24,81,-1,-1}, 244 /*79*/{-1,-1}, 245 /*80*/{-1,-1}, 246 /*81*/{-1,-1}, 247 /*82*/{-1,-1}, 248 /*83*/{-1,-1}, 249 /*84*/{37,93,-1,-1}, 250 /*85*/{18,88,23,87,-1,-1}, 251 /*86*/{-1,-1}, 252 /*87*/{-1,-1}, 253 /*88*/{35,89,-1,-1}, 254 /*89*/{-1,-1}, 255 /*90*/{23,91,-1,-1}, 256 /*91*/{-1,-1}, 257 /*92*/{-1,-1}, 258 /*93*/{-1,-1}, 259 /*94*/{-1,-1}, 260 /*95*/{-1,-1}, 261 /*96*/{-1,-1}, 262 /*97*/{-1,-1}, 263 /*98*/{10,99,-1,-1}, 264 /*99*/{-1,-1}, 265 /*100*/{-1,-1}, 266 /*101*/{-1,-1}, 267 /*102*/{-1,-1}, 268 /*103*/{-1,-1}, 269 /*104*/{-1,-1}, 270 /*105*/{-1,-1}, 271 /*106*/{-1,-1}, 272 /*107*/{-1,-1}, 273 /*108*/{-1,-1}, 274 /*109*/{-1,-1}, 275 /*110*/{-1,-1}, 276 /*111*/{34,112,-1,-1}, 277 /*112*/{-1,-1}, 278 /*113*/{-1,-1}, 279 /*114*/{-1,-1}, 280 /*115*/{-1,-1}, 281 /*116*/{8,117,15,39,27,38,-1,-1}, 282 /*117*/{9,118,20,49,28,47,-1,-1}, 283 /*118*/{20,50,28,47,-1,-1}, 284 /*119*/{-1,-1}, 285 }; 286 287 /** access to reduce_goto table */ reduce_table()288 public short[][] reduce_table() {return _reduce_table;} 289 290 /** instance of action encapsulation class */ 291 protected CUP$actions action_obj; 292 293 /** action encapsulation object initializer */ init_actions()294 protected void init_actions() 295 { 296 action_obj = new CUP$actions(); 297 } 298 299 /** invoke a user supplied parse action */ do_action( int act_num, java_cup.runtime.lr_parser parser, java.util.Stack stack, int top)300 public java_cup.runtime.symbol do_action( 301 int act_num, 302 java_cup.runtime.lr_parser parser, 303 java.util.Stack stack, 304 int top) 305 throws java.lang.Exception 306 { 307 /* call code in generated class */ 308 return action_obj.CUP$do_action(act_num, parser, stack, top); 309 } 310 311 /** start state */ start_state()312 public int start_state() {return 0;} 313 /** start production */ start_production()314 public int start_production() {return 0;} 315 316 /** EOF symbol index */ EOF_sym()317 public int EOF_sym() {return 0;} 318 319 /** error symbol index */ error_sym()320 public int error_sym() {return 1;} 321 322 323 /** user initialization */ user_init()324 public void user_init() throws java.lang.Exception 325 { 326 lexer.init(); 327 } 328 329 /** scan to get the next token */ scan()330 public java_cup.runtime.token scan() 331 throws java.lang.Exception 332 { 333 return lexer.next_token(); 334 } 335 336 337 338 /* override error routines */ 339 report_fatal_error( String message, Object info)340 public void report_fatal_error( 341 String message, 342 Object info) 343 { 344 done_parsing(); 345 lexer.emit_error(message); 346 System.err.println("Can't recover from previous error(s), giving up."); 347 System.exit(1); 348 } 349 report_error(String message, Object info)350 public void report_error(String message, Object info) 351 { 352 lexer.emit_error(message); 353 } 354 355 }; 356 357 /** JavaCup generated class to encapsulate user supplied action code.*/ 358 class CUP$actions { 359 360 361 /** helper routine to clone a new production part adding a given label */ add_lab(production_part part, String lab)362 protected production_part add_lab(production_part part, String lab) 363 throws internal_error 364 { 365 /* if there is no label, or this is an action, just return the original */ 366 if (lab == null || part.is_action()) return part; 367 368 /* otherwise build a new one with the given label attached */ 369 return new symbol_part(((symbol_part)part).the_symbol(),lab); 370 } 371 372 /** max size of right hand side we will support */ 373 protected final int MAX_RHS = 200; 374 375 /** array for accumulating right hand side parts */ 376 protected production_part[] rhs_parts = new production_part[MAX_RHS]; 377 378 /** where we are currently in building a right hand side */ 379 protected int rhs_pos = 0; 380 381 /** start a new right hand side */ new_rhs()382 protected void new_rhs() {rhs_pos = 0; } 383 384 /** add a new right hand side part */ add_rhs_part(production_part part)385 protected void add_rhs_part(production_part part) throws java.lang.Exception 386 { 387 if (rhs_pos >= MAX_RHS) 388 throw new Exception("Internal Error: Productions limited to " + 389 MAX_RHS + " symbols and actions"); 390 391 rhs_parts[rhs_pos] = part; 392 rhs_pos++; 393 } 394 395 /** string to build up multiple part names */ 396 protected String multipart_name = new String(); 397 398 /** append a new name segment to the accumulated multipart name */ append_multipart(String name)399 protected void append_multipart(String name) 400 { 401 String dot = ""; 402 403 /* if we aren't just starting out, put on a dot */ 404 if (multipart_name.length() != 0) dot = "."; 405 406 multipart_name = multipart_name.concat(dot + name); 407 } 408 409 /** table of declared symbols -- contains production parts indexed by name */ 410 protected Hashtable symbols = new Hashtable(); 411 412 /** table of just non terminals -- contains non_terminals indexed by name */ 413 protected Hashtable non_terms = new Hashtable(); 414 415 /** declared start non_terminal */ 416 protected non_terminal start_nt = null; 417 418 /** left hand side non terminal of the current production */ 419 protected non_terminal lhs_nt; 420 421 422 423 /** Constructor */ CUP$actions()424 CUP$actions() { } 425 426 /** Method with the actual generated action code. */ CUP$do_action( int CUP$act_num, java_cup.runtime.lr_parser CUP$parser, java.util.Stack CUP$stack, int CUP$top)427 public final java_cup.runtime.symbol CUP$do_action( 428 int CUP$act_num, 429 java_cup.runtime.lr_parser CUP$parser, 430 java.util.Stack CUP$stack, 431 int CUP$top) 432 throws java.lang.Exception 433 { 434 /* object for return from actions */ 435 java_cup.runtime.symbol CUP$result; 436 437 /* select the action based on the action number */ 438 switch (CUP$act_num) 439 { 440 /*. . . . . . . . . . . . . . . . . . . .*/ 441 case 64: // empty ::= 442 { 443 CUP$result = new java_cup.runtime.symbol(/*empty*/27); 444 445 } 446 return CUP$result; 447 448 /*. . . . . . . . . . . . . . . . . . . .*/ 449 case 63: // label_id ::= ID 450 { 451 CUP$result = new java_cup.runtime.str_token(/*label_id*/30); 452 ((java_cup.runtime.str_token)CUP$result).str_val = (/*the_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val; 453 } 454 return CUP$result; 455 456 /*. . . . . . . . . . . . . . . . . . . .*/ 457 case 62: // symbol_id ::= ID 458 { 459 CUP$result = new java_cup.runtime.str_token(/*symbol_id*/29); 460 ((java_cup.runtime.str_token)CUP$result).str_val = (/*the_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val; 461 } 462 return CUP$result; 463 464 /*. . . . . . . . . . . . . . . . . . . .*/ 465 case 61: // nt_id ::= ID 466 { 467 CUP$result = new java_cup.runtime.str_token(/*nt_id*/28); 468 ((java_cup.runtime.str_token)CUP$result).str_val = (/*the_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val; 469 } 470 return CUP$result; 471 472 /*. . . . . . . . . . . . . . . . . . . .*/ 473 case 60: // new_non_term_id ::= ID 474 { 475 CUP$result = new java_cup.runtime.symbol(/*new_non_term_id*/24); 476 477 /* see if this non terminal has been declared before */ 478 if (symbols.get((/*non_term_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val) != null) 479 { 480 /* issue a message */ 481 lexer.emit_error( "Symbol \"" + (/*non_term_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val + 482 "\" has already been declared"); 483 } 484 else 485 { 486 /* build the non terminal object */ 487 non_terminal this_nt = 488 new non_terminal((/*non_term_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val, multipart_name); 489 490 /* put it in the non_terms table */ 491 non_terms.put((/*non_term_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val, this_nt); 492 493 /* build a production_part and put it in the symbols table */ 494 symbols.put((/*non_term_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val, new symbol_part(this_nt)); 495 } 496 497 } 498 return CUP$result; 499 500 /*. . . . . . . . . . . . . . . . . . . .*/ 501 case 59: // new_term_id ::= ID 502 { 503 CUP$result = new java_cup.runtime.symbol(/*new_term_id*/23); 504 505 /* see if this terminal has been declared before */ 506 if (symbols.get((/*term_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val) != null) 507 { 508 /* issue a message */ 509 lexer.emit_error("Symbol \"" + (/*term_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val + 510 "\" has already been declared"); 511 } 512 else 513 { 514 /* build a production_part and put it in the table */ 515 symbols.put((/*term_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val, 516 new symbol_part(new terminal((/*term_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val, multipart_name))); 517 } 518 519 } 520 return CUP$result; 521 522 /*. . . . . . . . . . . . . . . . . . . .*/ 523 case 58: // type_id ::= multipart_id 524 { 525 CUP$result = new java_cup.runtime.symbol(/*type_id*/17); 526 527 } 528 return CUP$result; 529 530 /*. . . . . . . . . . . . . . . . . . . .*/ 531 case 57: // import_id ::= multipart_id 532 { 533 CUP$result = new java_cup.runtime.symbol(/*import_id*/12); 534 535 } 536 return CUP$result; 537 538 /*. . . . . . . . . . . . . . . . . . . .*/ 539 case 56: // import_id ::= multipart_id DOT STAR 540 { 541 CUP$result = new java_cup.runtime.symbol(/*import_id*/12); 542 append_multipart("*"); 543 } 544 return CUP$result; 545 546 /*. . . . . . . . . . . . . . . . . . . .*/ 547 case 55: // multipart_id ::= ID 548 { 549 CUP$result = new java_cup.runtime.symbol(/*multipart_id*/10); 550 append_multipart((/*an_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val); 551 } 552 return CUP$result; 553 554 /*. . . . . . . . . . . . . . . . . . . .*/ 555 case 54: // multipart_id ::= multipart_id DOT ID 556 { 557 CUP$result = new java_cup.runtime.symbol(/*multipart_id*/10); 558 append_multipart((/*another_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val); 559 } 560 return CUP$result; 561 562 /*. . . . . . . . . . . . . . . . . . . .*/ 563 case 53: // opt_label ::= empty 564 { 565 CUP$result = new java_cup.runtime.str_token(/*opt_label*/31); 566 ((java_cup.runtime.str_token)CUP$result).str_val = null; 567 } 568 return CUP$result; 569 570 /*. . . . . . . . . . . . . . . . . . . .*/ 571 case 52: // opt_label ::= COLON label_id 572 { 573 CUP$result = new java_cup.runtime.str_token(/*opt_label*/31); 574 ((java_cup.runtime.str_token)CUP$result).str_val = (/*labid*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val; 575 } 576 return CUP$result; 577 578 /*. . . . . . . . . . . . . . . . . . . .*/ 579 case 51: // prod_part ::= CODE_STRING 580 { 581 CUP$result = new java_cup.runtime.symbol(/*prod_part*/22); 582 583 /* add a new production part */ 584 add_rhs_part(new action_part((/*code_str*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val)); 585 586 } 587 return CUP$result; 588 589 /*. . . . . . . . . . . . . . . . . . . .*/ 590 case 50: // prod_part ::= symbol_id opt_label 591 { 592 CUP$result = new java_cup.runtime.symbol(/*prod_part*/22); 593 594 /* try to look up the id */ 595 production_part symb = (production_part)symbols.get((/*symid*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-1)).str_val); 596 597 /* if that fails, symbol is undeclared */ 598 if (symb == null) 599 { 600 if (lexer.error_count == 0) 601 lexer.emit_error("Symbol \"" + (/*symid*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-1)).str_val + 602 "\" has not been declared"); 603 } 604 else 605 { 606 /* add a labeled production part */ 607 add_rhs_part(add_lab(symb, (/*labid*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val)); 608 } 609 610 } 611 return CUP$result; 612 613 /*. . . . . . . . . . . . . . . . . . . .*/ 614 case 49: // prod_part_list ::= empty 615 { 616 CUP$result = new java_cup.runtime.symbol(/*prod_part_list*/21); 617 618 } 619 return CUP$result; 620 621 /*. . . . . . . . . . . . . . . . . . . .*/ 622 case 48: // prod_part_list ::= prod_part_list prod_part 623 { 624 CUP$result = new java_cup.runtime.symbol(/*prod_part_list*/21); 625 626 } 627 return CUP$result; 628 629 /*. . . . . . . . . . . . . . . . . . . .*/ 630 case 47: // rhs ::= prod_part_list 631 { 632 CUP$result = new java_cup.runtime.symbol(/*rhs*/26); 633 634 if (lhs_nt != null) 635 { 636 /* build the production */ 637 production p = new production(lhs_nt, rhs_parts, rhs_pos); 638 639 /* if we have no start non-terminal declared and this is 640 the first production, make its lhs nt the start_nt 641 and build a special start production for it. */ 642 if (start_nt == null) 643 { 644 start_nt = lhs_nt; 645 646 /* build a special start production */ 647 new_rhs(); 648 add_rhs_part(new symbol_part(start_nt)); 649 add_rhs_part(new symbol_part(terminal.EOF)); 650 emit.start_production = 651 new production(non_terminal.START_nt, rhs_parts, rhs_pos); 652 new_rhs(); 653 } 654 } 655 656 /* reset the rhs accumulation in any case */ 657 new_rhs(); 658 659 } 660 return CUP$result; 661 662 /*. . . . . . . . . . . . . . . . . . . .*/ 663 case 46: // rhs_list ::= rhs 664 { 665 CUP$result = new java_cup.runtime.symbol(/*rhs_list*/25); 666 667 } 668 return CUP$result; 669 670 /*. . . . . . . . . . . . . . . . . . . .*/ 671 case 45: // rhs_list ::= rhs_list BAR rhs 672 { 673 CUP$result = new java_cup.runtime.symbol(/*rhs_list*/25); 674 675 } 676 return CUP$result; 677 678 /*. . . . . . . . . . . . . . . . . . . .*/ 679 case 44: // production ::= error NT$9 SEMI 680 { 681 CUP$result = new java_cup.runtime.symbol(/*production*/20); 682 683 } 684 return CUP$result; 685 686 /*. . . . . . . . . . . . . . . . . . . .*/ 687 case 43: // NT$9 ::= 688 { 689 CUP$result = new java_cup.runtime.token(/*NT$9*/41); 690 lexer.emit_error("Syntax Error"); 691 } 692 return CUP$result; 693 694 /*. . . . . . . . . . . . . . . . . . . .*/ 695 case 42: // production ::= nt_id NT$8 COLON_COLON_EQUALS rhs_list SEMI 696 { 697 CUP$result = new java_cup.runtime.symbol(/*production*/20); 698 699 } 700 return CUP$result; 701 702 /*. . . . . . . . . . . . . . . . . . . .*/ 703 case 41: // NT$8 ::= 704 { 705 CUP$result = new java_cup.runtime.token(/*NT$8*/40); 706 707 /* lookup the lhs nt */ 708 lhs_nt = (non_terminal)non_terms.get((/*lhs_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val); 709 710 /* if it wasn't declared, emit a message */ 711 if (lhs_nt == null) 712 { 713 if (lexer.error_count == 0) 714 lexer.emit_error("LHS non terminal \"" + (/*lhs_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val + 715 "\" has not been declared"); 716 } 717 718 /* reset the rhs accumulation */ 719 new_rhs(); 720 721 } 722 return CUP$result; 723 724 /*. . . . . . . . . . . . . . . . . . . .*/ 725 case 40: // production_list ::= production 726 { 727 CUP$result = new java_cup.runtime.symbol(/*production_list*/9); 728 729 } 730 return CUP$result; 731 732 /*. . . . . . . . . . . . . . . . . . . .*/ 733 case 39: // production_list ::= production_list production 734 { 735 CUP$result = new java_cup.runtime.symbol(/*production_list*/9); 736 737 } 738 return CUP$result; 739 740 /*. . . . . . . . . . . . . . . . . . . .*/ 741 case 38: // start_spec ::= empty 742 { 743 CUP$result = new java_cup.runtime.symbol(/*start_spec*/8); 744 745 } 746 return CUP$result; 747 748 /*. . . . . . . . . . . . . . . . . . . .*/ 749 case 37: // start_spec ::= START WITH nt_id NT$7 SEMI 750 { 751 CUP$result = new java_cup.runtime.symbol(/*start_spec*/8); 752 753 } 754 return CUP$result; 755 756 /*. . . . . . . . . . . . . . . . . . . .*/ 757 case 36: // NT$7 ::= 758 { 759 CUP$result = new java_cup.runtime.token(/*NT$7*/39); 760 761 /* verify that the name has been declared as a non terminal */ 762 non_terminal nt = (non_terminal)non_terms.get((/*start_name*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val); 763 if (nt == null) 764 { 765 lexer.emit_error( "Start non terminal \"" + (/*start_name*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val + 766 "\" has not been declared"); 767 } 768 else 769 { 770 /* remember the non-terminal for later */ 771 start_nt = nt; 772 773 /* build a special start production */ 774 new_rhs(); 775 add_rhs_part(new symbol_part(start_nt)); 776 add_rhs_part(new symbol_part(terminal.EOF)); 777 emit.start_production = 778 new production(non_terminal.START_nt, rhs_parts, rhs_pos); 779 new_rhs(); 780 } 781 782 } 783 return CUP$result; 784 785 /*. . . . . . . . . . . . . . . . . . . .*/ 786 case 35: // non_term_name_list ::= new_non_term_id 787 { 788 CUP$result = new java_cup.runtime.symbol(/*non_term_name_list*/19); 789 790 } 791 return CUP$result; 792 793 /*. . . . . . . . . . . . . . . . . . . .*/ 794 case 34: // non_term_name_list ::= non_term_name_list COMMA new_non_term_id 795 { 796 CUP$result = new java_cup.runtime.symbol(/*non_term_name_list*/19); 797 798 } 799 return CUP$result; 800 801 /*. . . . . . . . . . . . . . . . . . . .*/ 802 case 33: // term_name_list ::= new_term_id 803 { 804 CUP$result = new java_cup.runtime.symbol(/*term_name_list*/18); 805 806 } 807 return CUP$result; 808 809 /*. . . . . . . . . . . . . . . . . . . .*/ 810 case 32: // term_name_list ::= term_name_list COMMA new_term_id 811 { 812 CUP$result = new java_cup.runtime.symbol(/*term_name_list*/18); 813 814 } 815 return CUP$result; 816 817 /*. . . . . . . . . . . . . . . . . . . .*/ 818 case 31: // symbol ::= NON TERMINAL error NT$6 SEMI 819 { 820 CUP$result = new java_cup.runtime.symbol(/*symbol*/15); 821 822 } 823 return CUP$result; 824 825 /*. . . . . . . . . . . . . . . . . . . .*/ 826 case 30: // NT$6 ::= 827 { 828 CUP$result = new java_cup.runtime.token(/*NT$6*/38); 829 830 /* reset the accumulated multipart name */ 831 multipart_name = new String(); 832 833 } 834 return CUP$result; 835 836 /*. . . . . . . . . . . . . . . . . . . .*/ 837 case 29: // symbol ::= TERMINAL error NT$5 SEMI 838 { 839 CUP$result = new java_cup.runtime.symbol(/*symbol*/15); 840 841 } 842 return CUP$result; 843 844 /*. . . . . . . . . . . . . . . . . . . .*/ 845 case 28: // NT$5 ::= 846 { 847 CUP$result = new java_cup.runtime.token(/*NT$5*/37); 848 849 /* reset the accumulated multipart name */ 850 multipart_name = new String(); 851 852 } 853 return CUP$result; 854 855 /*. . . . . . . . . . . . . . . . . . . .*/ 856 case 27: // symbol ::= NON TERMINAL type_id non_term_name_list NT$4 SEMI 857 { 858 CUP$result = new java_cup.runtime.symbol(/*symbol*/15); 859 860 } 861 return CUP$result; 862 863 /*. . . . . . . . . . . . . . . . . . . .*/ 864 case 26: // NT$4 ::= 865 { 866 CUP$result = new java_cup.runtime.token(/*NT$4*/36); 867 868 /* reset the accumulated multipart name */ 869 multipart_name = new String(); 870 871 } 872 return CUP$result; 873 874 /*. . . . . . . . . . . . . . . . . . . .*/ 875 case 25: // symbol ::= TERMINAL type_id term_name_list NT$3 SEMI 876 { 877 CUP$result = new java_cup.runtime.symbol(/*symbol*/15); 878 879 } 880 return CUP$result; 881 882 /*. . . . . . . . . . . . . . . . . . . .*/ 883 case 24: // NT$3 ::= 884 { 885 CUP$result = new java_cup.runtime.token(/*NT$3*/35); 886 887 /* reset the accumulated multipart name */ 888 multipart_name = new String(); 889 890 } 891 return CUP$result; 892 893 /*. . . . . . . . . . . . . . . . . . . .*/ 894 case 23: // symbol_list ::= symbol 895 { 896 CUP$result = new java_cup.runtime.symbol(/*symbol_list*/7); 897 898 } 899 return CUP$result; 900 901 /*. . . . . . . . . . . . . . . . . . . .*/ 902 case 22: // symbol_list ::= symbol_list symbol 903 { 904 CUP$result = new java_cup.runtime.symbol(/*symbol_list*/7); 905 906 } 907 return CUP$result; 908 909 /*. . . . . . . . . . . . . . . . . . . .*/ 910 case 21: // debug_grammar ::= empty 911 { 912 CUP$result = new java_cup.runtime.symbol(/*debug_grammar*/16); 913 914 } 915 return CUP$result; 916 917 /*. . . . . . . . . . . . . . . . . . . .*/ 918 case 20: // debug_grammar ::= DEBUG WITH multipart_id SEMI 919 { 920 CUP$result = new java_cup.runtime.symbol(/*debug_grammar*/16); 921 922 /* save the procedure name */ 923 emit.debug_grammar = multipart_name; 924 /* reset the accumulated multipart name */ 925 multipart_name = new String(); 926 927 } 928 return CUP$result; 929 930 /*. . . . . . . . . . . . . . . . . . . .*/ 931 case 19: // scan_code ::= empty 932 { 933 CUP$result = new java_cup.runtime.symbol(/*scan_code*/14); 934 935 } 936 return CUP$result; 937 938 /*. . . . . . . . . . . . . . . . . . . .*/ 939 case 18: // scan_code ::= SCAN WITH CODE_STRING SEMI 940 { 941 CUP$result = new java_cup.runtime.symbol(/*scan_code*/14); 942 943 /* save the user code */ 944 emit.scan_code = (/*user_code*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-1)).str_val; 945 946 } 947 return CUP$result; 948 949 /*. . . . . . . . . . . . . . . . . . . .*/ 950 case 17: // init_code ::= empty 951 { 952 CUP$result = new java_cup.runtime.symbol(/*init_code*/13); 953 954 } 955 return CUP$result; 956 957 /*. . . . . . . . . . . . . . . . . . . .*/ 958 case 16: // init_code ::= INIT WITH CODE_STRING SEMI 959 { 960 CUP$result = new java_cup.runtime.symbol(/*init_code*/13); 961 962 /* save the user code */ 963 emit.init_code = (/*user_code*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-1)).str_val; 964 965 } 966 return CUP$result; 967 968 /*. . . . . . . . . . . . . . . . . . . .*/ 969 case 15: // parser_code_part ::= empty 970 { 971 CUP$result = new java_cup.runtime.symbol(/*parser_code_part*/6); 972 973 } 974 return CUP$result; 975 976 /*. . . . . . . . . . . . . . . . . . . .*/ 977 case 14: // parser_code_part ::= PARSER CODE CODE_STRING SEMI 978 { 979 CUP$result = new java_cup.runtime.symbol(/*parser_code_part*/6); 980 981 /* save the user included code string */ 982 emit.parser_code = (/*user_code*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-1)).str_val; 983 984 } 985 return CUP$result; 986 987 /*. . . . . . . . . . . . . . . . . . . .*/ 988 case 13: // action_code_part ::= empty 989 { 990 CUP$result = new java_cup.runtime.symbol(/*action_code_part*/5); 991 992 } 993 return CUP$result; 994 995 /*. . . . . . . . . . . . . . . . . . . .*/ 996 case 12: // action_code_part ::= ACTION CODE CODE_STRING SEMI 997 { 998 CUP$result = new java_cup.runtime.symbol(/*action_code_part*/5); 999 1000 /* save the user included code string */ 1001 emit.action_code = (/*user_code*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-1)).str_val; 1002 1003 } 1004 return CUP$result; 1005 1006 /*. . . . . . . . . . . . . . . . . . . .*/ 1007 case 11: // code_part ::= action_code_part parser_code_part 1008 { 1009 CUP$result = new java_cup.runtime.symbol(/*code_part*/4); 1010 1011 } 1012 return CUP$result; 1013 1014 /*. . . . . . . . . . . . . . . . . . . .*/ 1015 case 10: // import_spec ::= IMPORT import_id NT$2 SEMI 1016 { 1017 CUP$result = new java_cup.runtime.symbol(/*import_spec*/11); 1018 1019 } 1020 return CUP$result; 1021 1022 /*. . . . . . . . . . . . . . . . . . . .*/ 1023 case 9: // NT$2 ::= 1024 { 1025 CUP$result = new java_cup.runtime.token(/*NT$2*/34); 1026 1027 /* save this import on the imports list */ 1028 emit.import_list.push(multipart_name); 1029 1030 /* reset the accumulated multipart name */ 1031 multipart_name = new String(); 1032 1033 } 1034 return CUP$result; 1035 1036 /*. . . . . . . . . . . . . . . . . . . .*/ 1037 case 8: // import_list ::= empty 1038 { 1039 CUP$result = new java_cup.runtime.symbol(/*import_list*/3); 1040 1041 } 1042 return CUP$result; 1043 1044 /*. . . . . . . . . . . . . . . . . . . .*/ 1045 case 7: // import_list ::= import_list import_spec 1046 { 1047 CUP$result = new java_cup.runtime.symbol(/*import_list*/3); 1048 1049 } 1050 return CUP$result; 1051 1052 /*. . . . . . . . . . . . . . . . . . . .*/ 1053 case 6: // package_spec ::= empty 1054 { 1055 CUP$result = new java_cup.runtime.symbol(/*package_spec*/2); 1056 1057 } 1058 return CUP$result; 1059 1060 /*. . . . . . . . . . . . . . . . . . . .*/ 1061 case 5: // package_spec ::= PACKAGE multipart_id NT$1 SEMI 1062 { 1063 CUP$result = new java_cup.runtime.symbol(/*package_spec*/2); 1064 1065 } 1066 return CUP$result; 1067 1068 /*. . . . . . . . . . . . . . . . . . . .*/ 1069 case 4: // NT$1 ::= 1070 { 1071 CUP$result = new java_cup.runtime.token(/*NT$1*/33); 1072 1073 /* save the package name */ 1074 emit.package_name = multipart_name; 1075 1076 /* reset the accumulated multipart name */ 1077 multipart_name = new String(); 1078 1079 } 1080 return CUP$result; 1081 1082 /*. . . . . . . . . . . . . . . . . . . .*/ 1083 case 3: // spec ::= error symbol_list start_spec production_list 1084 { 1085 CUP$result = new java_cup.runtime.symbol(/*spec*/1); 1086 1087 } 1088 return CUP$result; 1089 1090 /*. . . . . . . . . . . . . . . . . . . .*/ 1091 case 2: // spec ::= NT$0 package_spec import_list code_part debug_grammar init_code scan_code symbol_list start_spec production_list 1092 { 1093 CUP$result = new java_cup.runtime.symbol(/*spec*/1); 1094 1095 } 1096 return CUP$result; 1097 1098 /*. . . . . . . . . . . . . . . . . . . .*/ 1099 case 1: // NT$0 ::= 1100 { 1101 CUP$result = new java_cup.runtime.token(/*NT$0*/32); 1102 1103 /* declare "error" as a terminal */ 1104 symbols.put("error", new symbol_part(terminal.error)); 1105 1106 /* declare start non terminal */ 1107 non_terms.put("$START", non_terminal.START_nt); 1108 1109 } 1110 return CUP$result; 1111 1112 /*. . . . . . . . . . . . . . . . . . . .*/ 1113 case 0: // $START ::= spec EOF 1114 { 1115 CUP$result = new java_cup.runtime.token(/*$START*/0); 1116 1117 } 1118 /* ACCEPT */ 1119 CUP$parser.done_parsing(); 1120 return CUP$result; 1121 1122 /* . . . . . .*/ 1123 default: 1124 throw new Exception( 1125 "Invalid action number found in internal parse table"); 1126 1127 } 1128 } 1129 }; 1130 1131