001 002 //---------------------------------------------------- 003 // The following code was generated by CUP v0.10i 004 // Tue Mar 16 03:05:28 EST 1999 005 //---------------------------------------------------- 006 007 package com.croftsoft.apps.compiler; 008 009 import java.util.HashMap; 010 import java.util.Map; 011 import java_cup.runtime.*; 012 013 public class CalcParser extends java_cup.runtime.lr_parser { 014 015 /** constructor */ 016 public CalcParser() {super();} 017 018 /** production table */ 019 protected static final short _production_table[][] = 020 unpackFromStrings(new String[] { 021 "\000\025\000\002\002\004\000\002\003\003\000\002\004" + 022 "\005\000\002\004\004\000\002\005\003\000\002\005\003" + 023 "\000\002\005\003\000\002\006\006\000\002\006\006\000" + 024 "\002\007\005\000\002\010\005\000\002\010\005\000\002" + 025 "\010\005\000\002\010\005\000\002\010\005\000\002\010" + 026 "\005\000\002\010\004\000\002\010\003\000\002\010\003" + 027 "\000\002\010\005\000\002\010\005" }); 028 029 /** access to production table */ 030 public short[][] production_table() {return _production_table;} 031 032 /** parse action table */ 033 protected static final short[][] _action_table = 034 unpackFromStrings(new String[] { 035 "\000\051\000\010\003\005\024\007\027\013\001\002\000" + 036 "\004\002\053\001\002\000\004\021\ufffb\001\002\000\004" + 037 "\021\ufffc\001\002\000\004\022\046\001\002\000\004\002" + 038 "\000\001\002\000\004\021\044\001\002\000\004\021\ufffd" + 039 "\001\002\000\004\025\014\001\002\000\012\005\016\022" + 040 "\017\026\015\027\021\001\002\000\022\004\uffef\005\uffef" + 041 "\006\uffef\007\uffef\010\uffef\011\uffef\021\uffef\023\uffef\001" + 042 "\002\000\012\005\016\022\017\026\015\027\021\001\002" + 043 "\000\012\005\016\022\017\026\015\027\040\001\002\000" + 044 "\022\004\023\005\024\006\027\007\026\010\022\011\025" + 045 "\021\ufff8\023\ufff8\001\002\000\022\004\ufff0\005\ufff0\006" + 046 "\ufff0\007\ufff0\010\ufff0\011\ufff0\021\ufff0\023\ufff0\001\002" + 047 "\000\012\005\016\022\017\026\015\027\021\001\002\000" + 048 "\012\005\016\022\017\026\015\027\021\001\002\000\012" + 049 "\005\016\022\017\026\015\027\021\001\002\000\012\005" + 050 "\016\022\017\026\015\027\021\001\002\000\012\005\016" + 051 "\022\017\026\015\027\021\001\002\000\012\005\016\022" + 052 "\017\026\015\027\021\001\002\000\022\004\ufff5\005\ufff5" + 053 "\006\ufff5\007\ufff5\010\ufff5\011\025\021\ufff5\023\ufff5\001" + 054 "\002\000\022\004\ufff4\005\ufff4\006\ufff4\007\ufff4\010\ufff4" + 055 "\011\025\021\ufff4\023\ufff4\001\002\000\022\004\ufff3\005" + 056 "\ufff3\006\ufff3\007\ufff3\010\ufff3\011\025\021\ufff3\023\ufff3" + 057 "\001\002\000\022\004\ufff6\005\ufff6\006\027\007\026\010" + 058 "\022\011\025\021\ufff6\023\ufff6\001\002\000\022\004\ufff7" + 059 "\005\ufff7\006\027\007\026\010\022\011\025\021\ufff7\023" + 060 "\ufff7\001\002\000\022\004\ufff2\005\ufff2\006\ufff2\007\ufff2" + 061 "\010\ufff2\011\025\021\ufff2\023\ufff2\001\002\000\004\023" + 062 "\042\001\002\000\020\004\023\005\024\006\027\007\026" + 063 "\010\022\011\025\023\041\001\002\000\022\004\ufff0\005" + 064 "\ufff0\006\ufff0\007\ufff0\010\ufff0\011\ufff0\023\ufff0\025\014" + 065 "\001\002\000\022\004\uffee\005\uffee\006\uffee\007\uffee\010" + 066 "\uffee\011\uffee\021\uffee\023\uffee\001\002\000\022\004\uffed" + 067 "\005\uffed\006\uffed\007\uffed\010\uffed\011\uffed\021\uffed\023" + 068 "\uffed\001\002\000\022\004\ufff1\005\ufff1\006\ufff1\007\ufff1" + 069 "\010\ufff1\011\025\021\ufff1\023\ufff1\001\002\000\012\002" + 070 "\ufffe\003\005\024\007\027\013\001\002\000\004\002\uffff" + 071 "\001\002\000\012\005\016\022\017\026\015\027\040\001" + 072 "\002\000\020\004\023\005\024\006\027\007\026\010\022" + 073 "\011\025\023\052\001\002\000\004\023\051\001\002\000" + 074 "\004\021\ufff9\001\002\000\004\021\ufffa\001\002\000\004" + 075 "\002\001\001\002" }); 076 077 /** access to parse action table */ 078 public short[][] action_table() {return _action_table;} 079 080 /** reduce_goto table */ 081 protected static final short[][] _reduce_table = 082 unpackFromStrings(new String[] { 083 "\000\051\000\014\003\003\004\007\005\010\006\005\007" + 084 "\011\001\001\000\002\001\001\000\002\001\001\000\002" + 085 "\001\001\000\002\001\001\000\002\001\001\000\002\001" + 086 "\001\000\002\001\001\000\002\001\001\000\004\010\017" + 087 "\001\001\000\002\001\001\000\004\010\042\001\001\000" + 088 "\006\007\035\010\036\001\001\000\002\001\001\000\002" + 089 "\001\001\000\004\010\034\001\001\000\004\010\033\001" + 090 "\001\000\004\010\032\001\001\000\004\010\031\001\001" + 091 "\000\004\010\030\001\001\000\004\010\027\001\001\000" + 092 "\002\001\001\000\002\001\001\000\002\001\001\000\002" + 093 "\001\001\000\002\001\001\000\002\001\001\000\002\001" + 094 "\001\000\002\001\001\000\002\001\001\000\002\001\001" + 095 "\000\002\001\001\000\002\001\001\000\012\004\044\005" + 096 "\010\006\005\007\011\001\001\000\002\001\001\000\006" + 097 "\007\047\010\046\001\001\000\002\001\001\000\002\001" + 098 "\001\000\002\001\001\000\002\001\001\000\002\001\001" + 099 "" }); 100 101 /** access to reduce_goto table */ 102 public short[][] reduce_table() {return _reduce_table;} 103 104 /** instance of action encapsulation class */ 105 protected CUP$CalcParser$actions action_obj; 106 107 /** action encapsulation object initializer */ 108 protected void init_actions() 109 { 110 action_obj = new CUP$CalcParser$actions(this); 111 } 112 113 /** invoke a user supplied parse action */ 114 public java_cup.runtime.Symbol do_action( 115 int act_num, 116 java_cup.runtime.lr_parser parser, 117 java.util.Stack stack, 118 int top) 119 throws java.lang.Exception 120 { 121 /* call code in generated class */ 122 return action_obj.CUP$CalcParser$do_action(act_num, parser, stack, top); 123 } 124 125 /** start state */ 126 public int start_state() {return 0;} 127 /** start production */ 128 public int start_production() {return 0;} 129 130 /** EOF Symbol index */ 131 public int EOF_sym() {return 0;} 132 133 /** error Symbol index */ 134 public int error_sym() {return 1;} 135 136 137 /** user initialization */ 138 public void user_init() throws java.lang.Exception 139 { 140 141 } 142 143 /** scan to get the next Symbol */ 144 public java_cup.runtime.Symbol scan() 145 throws java.lang.Exception 146 { 147 return calcScanner.nextToken ( ); 148 } 149 150 151 152 protected CalcScanner calcScanner; 153 154 public CalcParser ( CalcScanner calcScanner ) 155 ////////////////////////////////////////////////////////////////////// 156 { 157 this.calcScanner = calcScanner; 158 } 159 160 161 } 162 163 /** Cup generated class to encapsulate user supplied action code.*/ 164 class CUP$CalcParser$actions { 165 166 167 168 ////////////////////////////////////////////////////////////////////// 169 // Action Code 170 ////////////////////////////////////////////////////////////////////// 171 172 public static Integer actExpressPlus ( Integer e0, Integer e1 ) 173 ////////////////////////////////////////////////////////////////////// 174 { 175 if ( ( e0 == null ) || ( e1 == null ) ) 176 { 177 System.out.println ( "null operand" ); 178 return null; 179 } 180 181 return new Integer ( e0.intValue ( ) + e1.intValue ( ) ); 182 } 183 184 public static Integer actExpressMinus ( Integer e0, Integer e1 ) 185 ////////////////////////////////////////////////////////////////////// 186 { 187 if ( ( e0 == null ) || ( e1 == null ) ) 188 { 189 System.out.println ( "null operand" ); 190 return null; 191 } 192 193 return new Integer ( e0.intValue ( ) - e1.intValue ( ) ); 194 } 195 196 public static Integer actExpressTimes ( Integer e0, Integer e1 ) 197 ////////////////////////////////////////////////////////////////////// 198 { 199 if ( ( e0 == null ) || ( e1 == null ) ) 200 { 201 System.out.println ( "null operand" ); 202 return null; 203 } 204 205 return new Integer ( e0.intValue ( ) * e1.intValue ( ) ); 206 } 207 208 public static Integer actExpressDivide ( Integer e0, Integer e1 ) 209 ////////////////////////////////////////////////////////////////////// 210 { 211 if ( ( e0 == null ) || ( e1 == null ) ) 212 { 213 System.out.println ( "null operand" ); 214 return null; 215 } 216 217 return new Integer ( e0.intValue ( ) / e1.intValue ( ) ); 218 } 219 220 public static Integer actExpressExponent ( Integer e0, Integer e1 ) 221 ////////////////////////////////////////////////////////////////////// 222 { 223 if ( ( e0 == null ) || ( e1 == null ) ) 224 { 225 System.out.println ( "null operand" ); 226 return null; 227 } 228 229 return new Integer ( power ( e0.intValue ( ), e1.intValue ( ) ) ); 230 } 231 232 public static Integer actExpressModulus ( Integer e0, Integer e1 ) 233 ////////////////////////////////////////////////////////////////////// 234 { 235 if ( ( e0 == null ) || ( e1 == null ) ) 236 { 237 System.out.println ( "null operand" ); 238 return null; 239 } 240 241 return new Integer ( e0.intValue ( ) % e1.intValue ( ) ); 242 } 243 244 public static Integer actExpressNegate ( Integer e0 ) 245 ////////////////////////////////////////////////////////////////////// 246 { 247 if ( e0 == null ) 248 { 249 System.out.println ( "null operand" ); 250 return null; 251 } 252 253 return new Integer ( -e0.intValue ( ) ); 254 } 255 256 ////////////////////////////////////////////////////////////////////// 257 ////////////////////////////////////////////////////////////////////// 258 259 public static int power ( int a, int b ) 260 ////////////////////////////////////////////////////////////////////// 261 { 262 if ( b < 0 ) 263 { 264 throw new IllegalArgumentException ( "negative exponent" ); 265 } 266 267 int result = 1; 268 269 for ( int i = 0; i < b; i++ ) 270 { 271 result *= a; 272 } 273 274 return result; 275 } 276 277 ////////////////////////////////////////////////////////////////////// 278 ////////////////////////////////////////////////////////////////////// 279 280 private Map map = new HashMap ( ); 281 282 public Integer actExpressVariable ( String variable ) 283 ////////////////////////////////////////////////////////////////////// 284 { 285 return ( Integer ) map.get ( variable ); 286 } 287 288 public void actWrite ( Integer i ) 289 ////////////////////////////////////////////////////////////////////// 290 { 291 System.out.println ( i ); 292 } 293 294 public Integer actAssignment ( String variable, Integer i ) 295 ////////////////////////////////////////////////////////////////////// 296 { 297 map.put ( variable, i ); 298 return i; 299 } 300 301 302 private final CalcParser parser; 303 304 /** Constructor */ 305 CUP$CalcParser$actions(CalcParser parser) { 306 this.parser = parser; 307 } 308 309 /** Method with the actual generated action code. */ 310 public final java_cup.runtime.Symbol CUP$CalcParser$do_action( 311 int CUP$CalcParser$act_num, 312 java_cup.runtime.lr_parser CUP$CalcParser$parser, 313 java.util.Stack CUP$CalcParser$stack, 314 int CUP$CalcParser$top) 315 throws java.lang.Exception 316 { 317 /* Symbol object for return from actions */ 318 java_cup.runtime.Symbol CUP$CalcParser$result; 319 320 /* select the action based on the action number */ 321 switch (CUP$CalcParser$act_num) 322 { 323 /*. . . . . . . . . . . . . . . . . . . .*/ 324 case 20: // expression ::= LPAREN assignment RPAREN 325 { 326 Integer RESULT = null; 327 int a0left = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-1)).left; 328 int a0right = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-1)).right; 329 Integer a0 = (Integer)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-1)).value; 330 RESULT = a0; 331 CUP$CalcParser$result = new java_cup.runtime.Symbol(6/*expression*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 332 } 333 return CUP$CalcParser$result; 334 335 /*. . . . . . . . . . . . . . . . . . . .*/ 336 case 19: // expression ::= LPAREN expression RPAREN 337 { 338 Integer RESULT = null; 339 int e0left = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-1)).left; 340 int e0right = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-1)).right; 341 Integer e0 = (Integer)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-1)).value; 342 RESULT = e0; 343 CUP$CalcParser$result = new java_cup.runtime.Symbol(6/*expression*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 344 } 345 return CUP$CalcParser$result; 346 347 /*. . . . . . . . . . . . . . . . . . . .*/ 348 case 18: // expression ::= INTEGER 349 { 350 Integer RESULT = null; 351 int i0left = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).left; 352 int i0right = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right; 353 Integer i0 = (Integer)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).value; 354 RESULT = i0; 355 CUP$CalcParser$result = new java_cup.runtime.Symbol(6/*expression*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 356 } 357 return CUP$CalcParser$result; 358 359 /*. . . . . . . . . . . . . . . . . . . .*/ 360 case 17: // expression ::= VARIABLE 361 { 362 Integer RESULT = null; 363 int v0left = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).left; 364 int v0right = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right; 365 String v0 = (String)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).value; 366 RESULT = actExpressVariable ( v0 ); 367 CUP$CalcParser$result = new java_cup.runtime.Symbol(6/*expression*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 368 } 369 return CUP$CalcParser$result; 370 371 /*. . . . . . . . . . . . . . . . . . . .*/ 372 case 16: // expression ::= MINUS expression 373 { 374 Integer RESULT = null; 375 int e0left = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).left; 376 int e0right = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right; 377 Integer e0 = (Integer)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).value; 378 RESULT = actExpressNegate ( e0 ); 379 CUP$CalcParser$result = new java_cup.runtime.Symbol(6/*expression*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 380 } 381 return CUP$CalcParser$result; 382 383 /*. . . . . . . . . . . . . . . . . . . .*/ 384 case 15: // expression ::= expression MOD expression 385 { 386 Integer RESULT = null; 387 int e0left = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).left; 388 int e0right = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).right; 389 Integer e0 = (Integer)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).value; 390 int e1left = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).left; 391 int e1right = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right; 392 Integer e1 = (Integer)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).value; 393 RESULT = actExpressModulus ( e0, e1 ); 394 CUP$CalcParser$result = new java_cup.runtime.Symbol(6/*expression*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 395 } 396 return CUP$CalcParser$result; 397 398 /*. . . . . . . . . . . . . . . . . . . .*/ 399 case 14: // expression ::= expression EXP expression 400 { 401 Integer RESULT = null; 402 int e0left = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).left; 403 int e0right = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).right; 404 Integer e0 = (Integer)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).value; 405 int e1left = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).left; 406 int e1right = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right; 407 Integer e1 = (Integer)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).value; 408 RESULT = actExpressExponent ( e0, e1 ); 409 CUP$CalcParser$result = new java_cup.runtime.Symbol(6/*expression*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 410 } 411 return CUP$CalcParser$result; 412 413 /*. . . . . . . . . . . . . . . . . . . .*/ 414 case 13: // expression ::= expression DIVIDE expression 415 { 416 Integer RESULT = null; 417 int e0left = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).left; 418 int e0right = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).right; 419 Integer e0 = (Integer)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).value; 420 int e1left = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).left; 421 int e1right = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right; 422 Integer e1 = (Integer)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).value; 423 RESULT = actExpressDivide ( e0, e1 ); 424 CUP$CalcParser$result = new java_cup.runtime.Symbol(6/*expression*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 425 } 426 return CUP$CalcParser$result; 427 428 /*. . . . . . . . . . . . . . . . . . . .*/ 429 case 12: // expression ::= expression TIMES expression 430 { 431 Integer RESULT = null; 432 int e0left = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).left; 433 int e0right = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).right; 434 Integer e0 = (Integer)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).value; 435 int e1left = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).left; 436 int e1right = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right; 437 Integer e1 = (Integer)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).value; 438 RESULT = actExpressTimes ( e0, e1 ); 439 CUP$CalcParser$result = new java_cup.runtime.Symbol(6/*expression*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 440 } 441 return CUP$CalcParser$result; 442 443 /*. . . . . . . . . . . . . . . . . . . .*/ 444 case 11: // expression ::= expression MINUS expression 445 { 446 Integer RESULT = null; 447 int e0left = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).left; 448 int e0right = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).right; 449 Integer e0 = (Integer)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).value; 450 int e1left = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).left; 451 int e1right = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right; 452 Integer e1 = (Integer)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).value; 453 RESULT = actExpressMinus ( e0, e1 ); 454 CUP$CalcParser$result = new java_cup.runtime.Symbol(6/*expression*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 455 } 456 return CUP$CalcParser$result; 457 458 /*. . . . . . . . . . . . . . . . . . . .*/ 459 case 10: // expression ::= expression PLUS expression 460 { 461 Integer RESULT = null; 462 int e0left = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).left; 463 int e0right = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).right; 464 Integer e0 = (Integer)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).value; 465 int e1left = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).left; 466 int e1right = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right; 467 Integer e1 = (Integer)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).value; 468 RESULT = actExpressPlus ( e0, e1 ); 469 CUP$CalcParser$result = new java_cup.runtime.Symbol(6/*expression*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 470 } 471 return CUP$CalcParser$result; 472 473 /*. . . . . . . . . . . . . . . . . . . .*/ 474 case 9: // assignment ::= VARIABLE ASSIGN expression 475 { 476 Integer RESULT = null; 477 int v0left = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).left; 478 int v0right = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).right; 479 String v0 = (String)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).value; 480 int e0left = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).left; 481 int e0right = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right; 482 Integer e0 = (Integer)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).value; 483 RESULT = actAssignment ( v0, e0 ); 484 CUP$CalcParser$result = new java_cup.runtime.Symbol(5/*assignment*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 485 } 486 return CUP$CalcParser$result; 487 488 /*. . . . . . . . . . . . . . . . . . . .*/ 489 case 8: // write ::= WRITE LPAREN assignment RPAREN 490 { 491 Object RESULT = null; 492 int aleft = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-1)).left; 493 int aright = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-1)).right; 494 Integer a = (Integer)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-1)).value; 495 actWrite ( a ); 496 CUP$CalcParser$result = new java_cup.runtime.Symbol(4/*write*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-3)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 497 } 498 return CUP$CalcParser$result; 499 500 /*. . . . . . . . . . . . . . . . . . . .*/ 501 case 7: // write ::= WRITE LPAREN expression RPAREN 502 { 503 Object RESULT = null; 504 int eleft = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-1)).left; 505 int eright = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-1)).right; 506 Integer e = (Integer)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-1)).value; 507 actWrite ( e ); 508 CUP$CalcParser$result = new java_cup.runtime.Symbol(4/*write*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-3)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 509 } 510 return CUP$CalcParser$result; 511 512 /*. . . . . . . . . . . . . . . . . . . .*/ 513 case 6: // statement ::= error 514 { 515 Object RESULT = null; 516 System.out.println ( "syntax error" ); 517 CUP$CalcParser$result = new java_cup.runtime.Symbol(3/*statement*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 518 } 519 return CUP$CalcParser$result; 520 521 /*. . . . . . . . . . . . . . . . . . . .*/ 522 case 5: // statement ::= write 523 { 524 Object RESULT = null; 525 526 CUP$CalcParser$result = new java_cup.runtime.Symbol(3/*statement*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 527 } 528 return CUP$CalcParser$result; 529 530 /*. . . . . . . . . . . . . . . . . . . .*/ 531 case 4: // statement ::= assignment 532 { 533 Object RESULT = null; 534 535 CUP$CalcParser$result = new java_cup.runtime.Symbol(3/*statement*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 536 } 537 return CUP$CalcParser$result; 538 539 /*. . . . . . . . . . . . . . . . . . . .*/ 540 case 3: // statementList ::= statement SEMICOLON 541 { 542 Object RESULT = null; 543 544 CUP$CalcParser$result = new java_cup.runtime.Symbol(2/*statementList*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 545 } 546 return CUP$CalcParser$result; 547 548 /*. . . . . . . . . . . . . . . . . . . .*/ 549 case 2: // statementList ::= statement SEMICOLON statementList 550 { 551 Object RESULT = null; 552 553 CUP$CalcParser$result = new java_cup.runtime.Symbol(2/*statementList*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 554 } 555 return CUP$CalcParser$result; 556 557 /*. . . . . . . . . . . . . . . . . . . .*/ 558 case 1: // program ::= statementList 559 { 560 Object RESULT = null; 561 562 CUP$CalcParser$result = new java_cup.runtime.Symbol(1/*program*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 563 } 564 return CUP$CalcParser$result; 565 566 /*. . . . . . . . . . . . . . . . . . . .*/ 567 case 0: // $START ::= program EOF 568 { 569 Object RESULT = null; 570 int start_valleft = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-1)).left; 571 int start_valright = ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-1)).right; 572 Object start_val = (Object)((java_cup.runtime.Symbol) CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-1)).value; 573 RESULT = start_val; 574 CUP$CalcParser$result = new java_cup.runtime.Symbol(0/*$START*/, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$CalcParser$stack.elementAt(CUP$CalcParser$top-0)).right, RESULT); 575 } 576 /* ACCEPT */ 577 CUP$CalcParser$parser.done_parsing(); 578 return CUP$CalcParser$result; 579 580 /* . . . . . .*/ 581 default: 582 throw new Exception( 583 "Invalid action number found in internal parse table"); 584 585 } 586 } 587 } 588