
//----------------------------------------------------
// The following code was generated by CUP v0.10k
// Thu Feb 23 15:42:06 EST 2006
//----------------------------------------------------

package edu.cmu.cs.l3.parse;

import edu.cmu.cs.l3.absyn.*;
import java.util.*;
import edu.cmu.cs.l3.symbol.Symbol;
import edu.cmu.cs.l3.general.*;
import edu.cmu.cs.l3.errormsg.*;

/** CUP v0.10k generated parser.
  * @version Thu Feb 23 15:42:06 EST 2006
  */
public class parser extends java_cup.runtime.lr_parser {

  /** Default constructor. */
  public parser() {super();}

  /** Constructor which sets the default scanner. */
  public parser(java_cup.runtime.Scanner s) {super(s);}

  /** Production table. */
  protected static final short _production_table[][] = 
    unpackFromStrings(new String[] {
    "\000\156\000\002\002\004\000\002\003\003\000\002\027" +
    "\003\000\002\027\003\000\002\030\003\000\002\030\004" +
    "\000\002\025\010\000\002\031\005\000\002\020\003\000" +
    "\002\020\004\000\002\020\005\000\002\021\010\000\002" +
    "\021\010\000\002\021\010\000\002\021\010\000\002\021" +
    "\007\000\002\021\007\000\002\021\007\000\002\021\007" +
    "\000\002\023\003\000\002\023\005\000\002\024\005\000" +
    "\002\022\005\000\002\022\006\000\002\022\005\000\002" +
    "\022\004\000\002\016\003\000\002\016\004\000\002\017" +
    "\007\000\002\017\011\000\002\013\003\000\002\013\005" +
    "\000\002\012\003\000\002\015\003\000\002\015\003\000" +
    "\002\015\003\000\002\015\004\000\002\014\003\000\002" +
    "\014\005\000\002\014\004\000\002\004\003\000\002\004" +
    "\004\000\002\005\004\000\002\005\003\000\002\005\003" +
    "\000\002\026\003\000\002\026\005\000\002\010\003\000" +
    "\002\010\003\000\002\010\004\000\002\010\003\000\002" +
    "\010\003\000\002\010\003\000\002\011\011\000\002\011" +
    "\007\000\002\011\015\000\002\011\014\000\002\011\011" +
    "\000\002\011\012\000\002\011\007\000\002\006\005\000" +
    "\002\006\005\000\002\006\005\000\002\006\005\000\002" +
    "\006\005\000\002\006\005\000\002\007\005\000\002\007" +
    "\004\000\002\007\004\000\002\007\005\000\002\007\005" +
    "\000\002\007\005\000\002\007\005\000\002\007\005\000" +
    "\002\007\005\000\002\007\005\000\002\007\005\000\002" +
    "\007\005\000\002\007\005\000\002\007\005\000\002\007" +
    "\005\000\002\007\005\000\002\007\005\000\002\007\005" +
    "\000\002\007\005\000\002\007\005\000\002\007\005\000" +
    "\002\007\005\000\002\007\005\000\002\007\005\000\002" +
    "\007\005\000\002\007\005\000\002\007\005\000\002\007" +
    "\006\000\002\007\010\000\002\007\004\000\002\007\006" +
    "\000\002\007\006\000\002\007\006\000\002\007\006\000" +
    "\002\007\003\000\002\007\004\000\002\007\006\000\002" +
    "\007\005\000\002\007\005\000\002\007\003\000\002\007" +
    "\003\000\002\007\003\000\002\007\003\000\002\007\004" +
    "" });

  /** Access to production table. */
  public short[][] production_table() {return _production_table;}

  /** Parse-action table. */
  protected static final short[][] _action_table = 
    unpackFromStrings(new String[] {
    "\000\354\000\014\004\014\043\007\044\004\055\006\074" +
    "\011\001\002\000\016\004\uffdf\007\uffdf\011\uffdf\014\uffdf" +
    "\017\uffdf\061\uffdf\001\002\000\004\002\000\001\002\000" +
    "\004\004\344\001\002\000\016\004\uffe0\007\uffe0\011\uffe0" +
    "\014\uffe0\017\uffe0\061\uffe0\001\002\000\016\002\uffff\004" +
    "\uffff\043\uffff\044\uffff\055\uffff\074\uffff\001\002\000\004" +
    "\004\333\001\002\000\004\002\332\001\002\000\016\002" +
    "\ufffe\004\ufffe\043\ufffe\044\ufffe\055\ufffe\074\ufffe\001\002" +
    "\000\016\004\uffde\007\uffde\011\uffde\014\uffde\017\uffde\061" +
    "\uffde\001\002\000\006\004\020\017\021\001\002\000\016" +
    "\002\ufffd\004\014\043\007\044\004\055\006\074\011\001" +
    "\002\000\004\002\ufffc\001\002\000\004\010\022\001\002" +
    "\000\016\004\uffdd\007\uffdd\011\uffdd\014\uffdd\017\uffdd\061" +
    "\uffdd\001\002\000\006\004\023\011\025\001\002\000\004" +
    "\057\330\001\002\000\006\011\uffee\061\326\001\002\000" +
    "\006\006\031\075\325\001\002\000\004\011\027\001\002" +
    "\000\006\006\031\075\032\001\002\000\016\002\ufff6\004" +
    "\ufff6\043\ufff6\044\ufff6\055\ufff6\074\ufff6\001\002\000\064" +
    "\004\047\005\041\007\040\010\046\014\055\016\057\017" +
    "\033\042\036\046\045\050\044\051\060\052\070\056\043" +
    "\060\073\062\065\063\064\064\062\065\066\072\063\073" +
    "\042\076\054\077\034\106\035\107\051\110\056\001\002" +
    "\000\016\002\ufff5\004\ufff5\043\ufff5\044\ufff5\055\ufff5\074" +
    "\ufff5\001\002\000\042\004\047\005\041\010\046\016\057" +
    "\017\033\042\036\050\044\051\060\052\070\062\065\063" +
    "\064\064\062\065\066\106\035\107\051\110\056\001\002" +
    "\000\006\011\uffcd\014\uffcd\001\002\000\042\004\047\005" +
    "\041\010\046\016\057\017\033\042\036\050\044\051\060" +
    "\052\070\062\065\063\064\064\062\065\066\106\035\107" +
    "\051\110\056\001\002\000\042\004\047\005\041\010\046" +
    "\016\057\017\033\042\036\050\044\051\060\052\070\062" +
    "\065\063\064\064\062\065\066\106\035\107\051\110\056" +
    "\001\002\000\106\011\uffd1\012\125\014\uffd1\015\117\016" +
    "\141\017\115\020\132\021\310\022\116\024\307\025\311" +
    "\026\306\027\305\030\312\031\131\032\147\033\121\034" +
    "\137\035\133\036\122\037\146\040\120\041\136\053\142" +
    "\054\143\063\145\066\126\067\124\070\144\071\140\101" +
    "\135\102\134\104\127\105\123\001\002\000\016\002\uffe8" +
    "\004\uffe8\043\uffe8\044\uffe8\055\uffe8\074\uffe8\001\002\000" +
    "\112\011\uff98\012\uff98\013\uff98\014\uff98\015\uff98\016\uff98" +
    "\017\uff98\020\uff98\021\uff98\022\uff98\024\uff98\025\uff98\026" +
    "\uff98\027\uff98\030\uff98\031\uff98\032\uff98\033\uff98\034\uff98" +
    "\035\uff98\036\uff98\037\uff98\040\uff98\041\uff98\053\uff98\054" +
    "\uff98\061\uff98\063\uff98\066\uff98\067\uff98\070\uff98\071\uff98" +
    "\101\uff98\102\uff98\104\uff98\105\uff98\001\002\000\004\010" +
    "\301\001\002\000\046\004\047\005\041\010\046\011\uffcf" +
    "\014\uffcf\016\057\017\033\042\036\050\044\051\060\052" +
    "\070\062\065\063\064\064\062\065\066\106\035\107\051" +
    "\110\056\001\002\000\112\011\uff97\012\uff97\013\uff97\014" +
    "\uff97\015\uff97\016\uff97\017\uff97\020\uff97\021\uff97\022\uff97" +
    "\024\uff97\025\uff97\026\uff97\027\uff97\030\uff97\031\uff97\032" +
    "\uff97\033\uff97\034\uff97\035\uff97\036\uff97\037\uff97\040\uff97" +
    "\041\uff97\053\uff97\054\uff97\061\uff97\063\uff97\066\uff97\067" +
    "\uff97\070\uff97\071\uff97\101\uff97\102\uff97\104\uff97\105\uff97" +
    "\001\002\000\004\010\272\001\002\000\042\004\047\005" +
    "\041\010\046\016\057\017\033\042\036\050\044\051\060" +
    "\052\070\062\065\063\064\064\062\065\066\106\035\107" +
    "\051\110\056\001\002\000\114\010\261\011\uff9d\012\uff9d" +
    "\013\uff9d\014\uff9d\015\uff9d\016\uff9d\017\uff9d\020\uff9d\021" +
    "\uff9d\022\uff9d\024\uff9d\025\uff9d\026\uff9d\027\uff9d\030\uff9d" +
    "\031\uff9d\032\uff9d\033\uff9d\034\uff9d\035\uff9d\036\uff9d\037" +
    "\uff9d\040\uff9d\041\uff9d\053\uff9d\054\uff9d\061\uff9d\063\uff9d" +
    "\066\uff9d\067\uff9d\070\uff9d\071\uff9d\101\uff9d\102\uff9d\104" +
    "\uff9d\105\uff9d\001\002\000\064\004\uffd6\005\uffd6\007\uffd6" +
    "\010\uffd6\014\uffd6\016\uffd6\017\uffd6\042\uffd6\046\uffd6\047" +
    "\uffd6\050\uffd6\051\uffd6\052\uffd6\056\uffd6\062\uffd6\063\uffd6" +
    "\064\uffd6\065\uffd6\072\uffd6\073\uffd6\076\uffd6\077\uffd6\106" +
    "\uffd6\107\uffd6\110\uffd6\001\002\000\004\010\256\001\002" +
    "\000\006\011\uffd2\014\uffd2\001\002\000\064\004\uffe7\005" +
    "\uffe7\007\uffe7\010\uffe7\014\uffe7\016\uffe7\017\uffe7\042\uffe7" +
    "\046\uffe7\050\uffe7\051\uffe7\052\uffe7\056\uffe7\060\073\062" +
    "\uffe7\063\uffe7\064\uffe7\065\uffe7\072\uffe7\073\uffe7\076\uffe7" +
    "\077\uffe7\106\uffe7\107\uffe7\110\uffe7\001\002\000\006\011" +
    "\uffce\014\uffce\001\002\000\064\004\uffd5\005\uffd5\007\uffd5" +
    "\010\uffd5\014\uffd5\016\uffd5\017\uffd5\042\uffd5\046\uffd5\047" +
    "\uffd5\050\uffd5\051\uffd5\052\uffd5\056\uffd5\062\uffd5\063\uffd5" +
    "\064\uffd5\065\uffd5\072\uffd5\073\uffd5\076\uffd5\077\uffd5\106" +
    "\uffd5\107\uffd5\110\uffd5\001\002\000\004\010\252\001\002" +
    "\000\042\004\047\005\041\010\046\016\057\017\033\042" +
    "\036\050\044\051\060\052\070\062\065\063\064\064\062" +
    "\065\066\106\035\107\051\110\056\001\002\000\112\011" +
    "\uff96\012\uff96\013\uff96\014\uff96\015\uff96\016\uff96\017\uff96" +
    "\020\uff96\021\uff96\022\uff96\024\uff96\025\uff96\026\uff96\027" +
    "\uff96\030\uff96\031\uff96\032\uff96\033\uff96\034\uff96\035\uff96" +
    "\036\uff96\037\uff96\040\uff96\041\uff96\053\uff96\054\uff96\061" +
    "\uff96\063\uff96\066\uff96\067\uff96\070\uff96\071\uff96\101\uff96" +
    "\102\uff96\104\uff96\105\uff96\001\002\000\062\004\047\005" +
    "\041\007\246\010\046\014\055\016\057\017\033\042\036" +
    "\046\045\050\044\051\060\052\070\056\043\062\065\063" +
    "\064\064\062\065\066\072\063\073\042\076\054\077\034" +
    "\106\035\107\051\110\056\001\002\000\004\010\243\001" +
    "\002\000\004\010\212\001\002\000\042\004\047\005\041" +
    "\010\046\016\057\017\033\042\036\050\044\051\060\052" +
    "\070\062\065\063\064\064\062\065\066\106\035\107\051" +
    "\110\056\001\002\000\112\011\uff95\012\uff95\013\uff95\014" +
    "\uff95\015\uff95\016\uff95\017\uff95\020\uff95\021\uff95\022\uff95" +
    "\024\uff95\025\uff95\026\uff95\027\uff95\030\uff95\031\uff95\032" +
    "\uff95\033\uff95\034\uff95\035\uff95\036\uff95\037\uff95\040\uff95" +
    "\041\uff95\053\uff95\054\uff95\061\uff95\063\uff95\066\uff95\067" +
    "\uff95\070\uff95\071\uff95\101\uff95\102\uff95\104\uff95\105\uff95" +
    "\001\002\000\004\010\206\001\002\000\004\014\205\001" +
    "\002\000\004\010\113\001\002\000\062\004\047\005\041" +
    "\007\uffd9\010\046\014\055\016\057\017\033\042\036\046" +
    "\045\050\044\051\060\052\070\056\043\062\065\063\064" +
    "\064\062\065\066\072\063\073\042\076\054\077\034\106" +
    "\035\107\051\110\056\001\002\000\004\007\111\001\002" +
    "\000\004\004\074\001\002\000\006\057\uffe1\061\uffe1\001" +
    "\002\000\006\057\077\061\076\001\002\000\004\004\074" +
    "\001\002\000\010\004\014\043\007\044\004\001\002\000" +
    "\006\014\101\017\021\001\002\000\064\004\uffe5\005\uffe5" +
    "\007\uffe5\010\uffe5\014\uffe5\016\uffe5\017\uffe5\042\uffe5\046" +
    "\uffe5\050\uffe5\051\uffe5\052\uffe5\056\uffe5\060\uffe5\062\uffe5" +
    "\063\uffe5\064\uffe5\065\uffe5\072\uffe5\073\uffe5\076\uffe5\077" +
    "\uffe5\106\uffe5\107\uffe5\110\uffe5\001\002\000\006\057\uffe3" +
    "\061\107\001\002\000\004\057\104\001\002\000\010\004" +
    "\014\043\007\044\004\001\002\000\006\014\106\017\021" +
    "\001\002\000\064\004\uffe4\005\uffe4\007\uffe4\010\uffe4\014" +
    "\uffe4\016\uffe4\017\uffe4\042\uffe4\046\uffe4\050\uffe4\051\uffe4" +
    "\052\uffe4\056\uffe4\060\uffe4\062\uffe4\063\uffe4\064\uffe4\065" +
    "\uffe4\072\uffe4\073\uffe4\076\uffe4\077\uffe4\106\uffe4\107\uffe4" +
    "\110\uffe4\001\002\000\004\004\074\001\002\000\004\057" +
    "\uffe2\001\002\000\016\002\uffeb\004\uffeb\043\uffeb\044\uffeb" +
    "\055\uffeb\074\uffeb\001\002\000\004\007\uffd8\001\002\000" +
    "\042\004\047\005\041\010\046\016\057\017\033\042\036" +
    "\050\044\051\060\052\070\062\065\063\064\064\062\065" +
    "\066\106\035\107\051\110\056\001\002\000\070\012\125" +
    "\015\117\016\141\017\115\020\132\022\116\031\131\032" +
    "\147\033\121\034\137\035\133\036\122\037\146\040\120" +
    "\041\136\053\142\054\143\061\130\063\145\066\126\067" +
    "\124\070\144\071\140\101\135\102\134\104\127\105\123" +
    "\001\002\000\042\004\047\005\041\010\046\016\057\017" +
    "\033\042\036\050\044\051\060\052\070\062\065\063\064" +
    "\064\062\065\066\106\035\107\051\110\056\001\002\000" +
    "\042\004\047\005\041\010\046\016\057\017\033\042\036" +
    "\050\044\051\060\052\070\062\065\063\064\064\062\065" +
    "\066\106\035\107\051\110\056\001\002\000\042\004\047" +
    "\005\041\010\046\016\057\017\033\042\036\050\044\051" +
    "\060\052\070\062\065\063\064\064\062\065\066\106\035" +
    "\107\051\110\056\001\002\000\042\004\047\005\041\010" +
    "\046\016\057\017\033\042\036\050\044\051\060\052\070" +
    "\062\065\063\064\064\062\065\066\106\035\107\051\110" +
    "\056\001\002\000\042\004\047\005\041\010\046\016\057" +
    "\017\033\042\036\050\044\051\060\052\070\062\065\063" +
    "\064\064\062\065\066\106\035\107\051\110\056\001\002" +
    "\000\042\004\047\005\041\010\046\016\057\017\033\042" +
    "\036\050\044\051\060\052\070\062\065\063\064\064\062" +
    "\065\066\106\035\107\051\110\056\001\002\000\042\004" +
    "\047\005\041\010\046\016\057\017\033\042\036\050\044" +
    "\051\060\052\070\062\065\063\064\064\062\065\066\106" +
    "\035\107\051\110\056\001\002\000\042\004\047\005\041" +
    "\010\046\016\057\017\033\042\036\050\044\051\060\052" +
    "\070\062\065\063\064\064\062\065\066\106\035\107\051" +
    "\110\056\001\002\000\042\004\047\005\041\010\046\016" +
    "\057\017\033\042\036\050\044\051\060\052\070\062\065" +
    "\063\064\064\062\065\066\106\035\107\051\110\056\001" +
    "\002\000\042\004\047\005\041\010\046\016\057\017\033" +
    "\042\036\050\044\051\060\052\070\062\065\063\064\064" +
    "\062\065\066\106\035\107\051\110\056\001\002\000\042" +
    "\004\047\005\041\010\046\016\057\017\033\042\036\050" +
    "\044\051\060\052\070\062\065\063\064\064\062\065\066" +
    "\106\035\107\051\110\056\001\002\000\010\004\014\043" +
    "\007\044\004\001\002\000\042\004\047\005\041\010\046" +
    "\016\057\017\033\042\036\050\044\051\060\052\070\062" +
    "\065\063\064\064\062\065\066\106\035\107\051\110\056" +
    "\001\002\000\042\004\047\005\041\010\046\016\057\017" +
    "\033\042\036\050\044\051\060\052\070\062\065\063\064" +
    "\064\062\065\066\106\035\107\051\110\056\001\002\000" +
    "\042\004\047\005\041\010\046\016\057\017\033\042\036" +
    "\050\044\051\060\052\070\062\065\063\064\064\062\065" +
    "\066\106\035\107\051\110\056\001\002\000\042\004\047" +
    "\005\041\010\046\016\057\017\033\042\036\050\044\051" +
    "\060\052\070\062\065\063\064\064\062\065\066\106\035" +
    "\107\051\110\056\001\002\000\042\004\047\005\041\010" +
    "\046\016\057\017\033\042\036\050\044\051\060\052\070" +
    "\062\065\063\064\064\062\065\066\106\035\107\051\110" +
    "\056\001\002\000\042\004\047\005\041\010\046\016\057" +
    "\017\033\042\036\050\044\051\060\052\070\062\065\063" +
    "\064\064\062\065\066\106\035\107\051\110\056\001\002" +
    "\000\042\004\047\005\041\010\046\016\057\017\033\042" +
    "\036\050\044\051\060\052\070\062\065\063\064\064\062" +
    "\065\066\106\035\107\051\110\056\001\002\000\042\004" +
    "\047\005\041\010\046\016\057\017\033\042\036\050\044" +
    "\051\060\052\070\062\065\063\064\064\062\065\066\106" +
    "\035\107\051\110\056\001\002\000\042\004\047\005\041" +
    "\010\046\016\057\017\033\042\036\050\044\051\060\052" +
    "\070\062\065\063\064\064\062\065\066\106\035\107\051" +
    "\110\056\001\002\000\004\004\155\001\002\000\004\004" +
    "\154\001\002\000\042\004\047\005\041\010\046\016\057" +
    "\017\033\042\036\050\044\051\060\052\070\062\065\063" +
    "\064\064\062\065\066\106\035\107\051\110\056\001\002" +
    "\000\042\004\047\005\041\010\046\016\057\017\033\042" +
    "\036\050\044\051\060\052\070\062\065\063\064\064\062" +
    "\065\066\106\035\107\051\110\056\001\002\000\042\004" +
    "\047\005\041\010\046\016\057\017\033\042\036\050\044" +
    "\051\060\052\070\062\065\063\064\064\062\065\066\106" +
    "\035\107\051\110\056\001\002\000\042\004\047\005\041" +
    "\010\046\016\057\017\033\042\036\050\044\051\060\052" +
    "\070\062\065\063\064\064\062\065\066\106\035\107\051" +
    "\110\056\001\002\000\112\011\uffab\012\125\013\uffab\014" +
    "\uffab\015\117\016\141\017\115\020\132\021\uffab\022\116" +
    "\024\uffab\025\uffab\026\uffab\027\uffab\030\uffab\031\uffab\032" +
    "\uffab\033\121\034\uffab\035\uffab\036\122\037\uffab\040\uffab" +
    "\041\uffab\053\142\054\143\061\uffab\063\145\066\126\067" +
    "\124\070\144\071\140\101\135\102\134\104\127\105\123" +
    "\001\002\000\112\011\uffb5\012\125\013\uffb5\014\uffb5\015" +
    "\117\016\141\017\115\020\132\021\uffb5\022\116\024\uffb5" +
    "\025\uffb5\026\uffb5\027\uffb5\030\uffb5\031\131\032\147\033" +
    "\121\034\137\035\133\036\122\037\uffb5\040\uffb5\041\uffb5" +
    "\053\142\054\143\061\uffb5\063\145\066\126\067\124\070" +
    "\144\071\140\101\135\102\134\104\127\105\123\001\002" +
    "\000\112\011\uffb4\012\125\013\uffb4\014\uffb4\015\117\016" +
    "\141\017\115\020\132\021\uffb4\022\116\024\uffb4\025\uffb4" +
    "\026\uffb4\027\uffb4\030\uffb4\031\uffb4\032\uffb4\033\uffb4\034" +
    "\uffb4\035\uffb4\036\uffb4\037\uffb4\040\uffb4\041\uffb4\053\142" +
    "\054\143\061\uffb4\063\uffb4\066\uffb4\067\uffb4\070\uffb4\071" +
    "\uffb4\101\uffb4\102\uffb4\104\127\105\123\001\002\000\112" +
    "\011\uffa8\012\125\013\uffa8\014\uffa8\015\117\016\141\017" +
    "\115\020\132\021\uffa8\022\116\024\uffa8\025\uffa8\026\uffa8" +
    "\027\uffa8\030\uffa8\031\uffa8\032\uffa8\033\uffa8\034\uffa8\035" +
    "\uffa8\036\uffa8\037\uffa8\040\uffa8\041\uffa8\053\142\054\143" +
    "\061\uffa8\063\145\066\126\067\124\070\uffa8\071\uffa8\101" +
    "\135\102\134\104\127\105\123\001\002\000\112\011\uff99" +
    "\012\uff99\013\uff99\014\uff99\015\uff99\016\uff99\017\uff99\020" +
    "\uff99\021\uff99\022\uff99\024\uff99\025\uff99\026\uff99\027\uff99" +
    "\030\uff99\031\uff99\032\uff99\033\uff99\034\uff99\035\uff99\036" +
    "\uff99\037\uff99\040\uff99\041\uff99\053\uff99\054\uff99\061\uff99" +
    "\063\uff99\066\uff99\067\uff99\070\uff99\071\uff99\101\uff99\102" +
    "\uff99\104\uff99\105\uff99\001\002\000\112\011\uff9a\012\uff9a" +
    "\013\uff9a\014\uff9a\015\uff9a\016\uff9a\017\uff9a\020\uff9a\021" +
    "\uff9a\022\uff9a\024\uff9a\025\uff9a\026\uff9a\027\uff9a\030\uff9a" +
    "\031\uff9a\032\uff9a\033\uff9a\034\uff9a\035\uff9a\036\uff9a\037" +
    "\uff9a\040\uff9a\041\uff9a\053\uff9a\054\uff9a\061\uff9a\063\uff9a" +
    "\066\uff9a\067\uff9a\070\uff9a\071\uff9a\101\uff9a\102\uff9a\104" +
    "\uff9a\105\uff9a\001\002\000\112\011\uffba\012\125\013\uffba" +
    "\014\uffba\015\uffba\016\uffba\017\115\020\132\021\uffba\022" +
    "\116\024\uffba\025\uffba\026\uffba\027\uffba\030\uffba\031\uffba" +
    "\032\uffba\033\uffba\034\uffba\035\uffba\036\uffba\037\uffba\040" +
    "\uffba\041\uffba\053\142\054\143\061\uffba\063\uffba\066\uffba" +
    "\067\uffba\070\uffba\071\uffba\101\uffba\102\uffba\104\uffba\105" +
    "\uffba\001\002\000\112\011\uffa6\012\125\013\uffa6\014\uffa6" +
    "\015\117\016\141\017\115\020\132\021\uffa6\022\116\024" +
    "\uffa6\025\uffa6\026\uffa6\027\uffa6\030\uffa6\031\uffa6\032\uffa6" +
    "\033\uffa6\034\uffa6\035\uffa6\036\uffa6\037\uffa6\040\uffa6\041" +
    "\uffa6\053\142\054\143\061\uffa6\063\145\066\126\067\124" +
    "\070\uffa6\071\uffa6\101\135\102\134\104\127\105\123\001" +
    "\002\000\112\011\uffac\012\125\013\uffac\014\uffac\015\117" +
    "\016\141\017\115\020\132\021\uffac\022\116\024\uffac\025" +
    "\uffac\026\uffac\027\uffac\030\uffac\031\uffac\032\uffac\033\121" +
    "\034\uffac\035\uffac\036\122\037\uffac\040\uffac\041\uffac\053" +
    "\142\054\143\061\uffac\063\145\066\126\067\124\070\144" +
    "\071\140\101\135\102\134\104\127\105\123\001\002\000" +
    "\112\011\uffae\012\125\013\uffae\014\uffae\015\117\016\141" +
    "\017\115\020\132\021\uffae\022\116\024\uffae\025\uffae\026" +
    "\uffae\027\uffae\030\uffae\031\131\032\147\033\121\034\137" +
    "\035\133\036\122\037\146\040\uffae\041\uffae\053\142\054" +
    "\143\061\uffae\063\145\066\126\067\124\070\144\071\140" +
    "\101\135\102\134\104\127\105\123\001\002\000\112\011" +
    "\uffb3\012\125\013\uffb3\014\uffb3\015\117\016\141\017\115" +
    "\020\132\021\uffb3\022\116\024\uffb3\025\uffb3\026\uffb3\027" +
    "\uffb3\030\uffb3\031\uffb3\032\uffb3\033\uffb3\034\uffb3\035\uffb3" +
    "\036\uffb3\037\uffb3\040\uffb3\041\uffb3\053\142\054\143\061" +
    "\uffb3\063\145\066\uffb3\067\uffb3\070\uffb3\071\uffb3\101\uffb3" +
    "\102\134\104\127\105\123\001\002\000\112\011\uffb2\012" +
    "\125\013\uffb2\014\uffb2\015\117\016\141\017\115\020\132" +
    "\021\uffb2\022\116\024\uffb2\025\uffb2\026\uffb2\027\uffb2\030" +
    "\uffb2\031\uffb2\032\uffb2\033\uffb2\034\uffb2\035\uffb2\036\uffb2" +
    "\037\uffb2\040\uffb2\041\uffb2\053\142\054\143\061\uffb2\063" +
    "\145\066\uffb2\067\uffb2\070\uffb2\071\uffb2\101\uffb2\102\uffb2" +
    "\104\127\105\123\001\002\000\112\011\uffaa\012\125\013" +
    "\uffaa\014\uffaa\015\117\016\141\017\115\020\132\021\uffaa" +
    "\022\116\024\uffaa\025\uffaa\026\uffaa\027\uffaa\030\uffaa\031" +
    "\uffaa\032\uffaa\033\121\034\uffaa\035\uffaa\036\122\037\uffaa" +
    "\040\uffaa\041\uffaa\053\142\054\143\061\uffaa\063\145\066" +
    "\126\067\124\070\144\071\140\101\135\102\134\104\127" +
    "\105\123\001\002\000\112\011\uffb7\012\125\013\uffb7\014" +
    "\uffb7\015\uffb7\016\uffb7\017\uffb7\020\uffb7\021\uffb7\022\uffb7" +
    "\024\uffb7\025\uffb7\026\uffb7\027\uffb7\030\uffb7\031\uffb7\032" +
    "\uffb7\033\uffb7\034\uffb7\035\uffb7\036\uffb7\037\uffb7\040\uffb7" +
    "\041\uffb7\053\142\054\143\061\uffb7\063\uffb7\066\uffb7\067" +
    "\uffb7\070\uffb7\071\uffb7\101\uffb7\102\uffb7\104\uffb7\105\uffb7" +
    "\001\002\000\112\011\uffad\012\125\013\uffad\014\uffad\015" +
    "\117\016\141\017\115\020\132\021\uffad\022\116\024\uffad" +
    "\025\uffad\026\uffad\027\uffad\030\uffad\031\uffad\032\uffad\033" +
    "\121\034\uffad\035\uffad\036\122\037\uffad\040\uffad\041\uffad" +
    "\053\142\054\143\061\uffad\063\145\066\126\067\124\070" +
    "\144\071\140\101\135\102\134\104\127\105\123\001\002" +
    "\000\006\011\170\017\021\001\002\000\112\011\uffa3\012" +
    "\uffa3\013\uffa3\014\uffa3\015\uffa3\016\uffa3\017\uffa3\020\uffa3" +
    "\021\uffa3\022\uffa3\024\uffa3\025\uffa3\026\uffa3\027\uffa3\030" +
    "\uffa3\031\uffa3\032\uffa3\033\uffa3\034\uffa3\035\uffa3\036\uffa3" +
    "\037\uffa3\040\uffa3\041\uffa3\053\uffa3\054\uffa3\061\uffa3\063" +
    "\uffa3\066\uffa3\067\uffa3\070\uffa3\071\uffa3\101\uffa3\102\uffa3" +
    "\104\uffa3\105\uffa3\001\002\000\112\011\uffb1\012\125\013" +
    "\uffb1\014\uffb1\015\117\016\141\017\115\020\132\021\uffb1" +
    "\022\116\024\uffb1\025\uffb1\026\uffb1\027\uffb1\030\uffb1\031" +
    "\uffb1\032\uffb1\033\uffb1\034\uffb1\035\uffb1\036\uffb1\037\uffb1" +
    "\040\uffb1\041\uffb1\053\142\054\143\061\uffb1\063\uffb1\066" +
    "\uffb1\067\uffb1\070\uffb1\071\uffb1\101\uffb1\102\uffb1\104\uffb1" +
    "\105\uffb1\001\002\000\112\011\uffbb\012\125\013\uffbb\014" +
    "\uffbb\015\117\016\141\017\115\020\132\021\uffbb\022\116" +
    "\024\uffbb\025\uffbb\026\uffbb\027\uffbb\030\uffbb\031\uffbb\032" +
    "\uffbb\033\uffbb\034\uffbb\035\uffbb\036\uffbb\037\uffbb\040\uffbb" +
    "\041\uffbb\053\142\054\143\061\uffbb\063\145\066\uffbb\067" +
    "\uffbb\070\uffbb\071\uffbb\101\135\102\134\104\127\105\123" +
    "\001\002\000\070\012\125\013\174\015\117\016\141\017" +
    "\115\020\132\022\116\031\131\032\147\033\121\034\137" +
    "\035\133\036\122\037\146\040\120\041\136\053\142\054" +
    "\143\063\145\066\126\067\124\070\144\071\140\101\135" +
    "\102\134\104\127\105\123\001\002\000\112\011\uff9b\012" +
    "\uff9b\013\uff9b\014\uff9b\015\uff9b\016\uff9b\017\uff9b\020\uff9b" +
    "\021\uff9b\022\uff9b\024\uff9b\025\uff9b\026\uff9b\027\uff9b\030" +
    "\uff9b\031\uff9b\032\uff9b\033\uff9b\034\uff9b\035\uff9b\036\uff9b" +
    "\037\uff9b\040\uff9b\041\uff9b\053\uff9b\054\uff9b\061\uff9b\063" +
    "\uff9b\066\uff9b\067\uff9b\070\uff9b\071\uff9b\101\uff9b\102\uff9b" +
    "\104\uff9b\105\uff9b\001\002\000\112\011\uffb9\012\125\013" +
    "\uffb9\014\uffb9\015\117\016\141\017\115\020\132\021\uffb9" +
    "\022\116\024\uffb9\025\uffb9\026\uffb9\027\uffb9\030\uffb9\031" +
    "\uffb9\032\uffb9\033\uffb9\034\uffb9\035\uffb9\036\uffb9\037\uffb9" +
    "\040\uffb9\041\uffb9\053\142\054\143\061\uffb9\063\145\066" +
    "\uffb9\067\uffb9\070\uffb9\071\uffb9\101\135\102\134\104\127" +
    "\105\123\001\002\000\112\011\uffb0\012\125\013\uffb0\014" +
    "\uffb0\015\117\016\141\017\115\020\132\021\uffb0\022\116" +
    "\024\uffb0\025\uffb0\026\uffb0\027\uffb0\030\uffb0\031\uffb0\032" +
    "\uffb0\033\uffb0\034\uffb0\035\uffb0\036\uffb0\037\uffb0\040\uffb0" +
    "\041\uffb0\053\142\054\143\061\uffb0\063\uffb0\066\uffb0\067" +
    "\uffb0\070\uffb0\071\uffb0\101\uffb0\102\uffb0\104\uffb0\105\uffb0" +
    "\001\002\000\112\011\uffa7\012\125\013\uffa7\014\uffa7\015" +
    "\117\016\141\017\115\020\132\021\uffa7\022\116\024\uffa7" +
    "\025\uffa7\026\uffa7\027\uffa7\030\uffa7\031\uffa7\032\uffa7\033" +
    "\uffa7\034\uffa7\035\uffa7\036\uffa7\037\uffa7\040\uffa7\041\uffa7" +
    "\053\142\054\143\061\uffa7\063\145\066\126\067\124\070" +
    "\uffa7\071\uffa7\101\135\102\134\104\127\105\123\001\002" +
    "\000\112\011\uffa9\012\125\013\uffa9\014\uffa9\015\117\016" +
    "\141\017\115\020\132\021\uffa9\022\116\024\uffa9\025\uffa9" +
    "\026\uffa9\027\uffa9\030\uffa9\031\uffa9\032\uffa9\033\uffa9\034" +
    "\uffa9\035\uffa9\036\uffa9\037\uffa9\040\uffa9\041\uffa9\053\142" +
    "\054\143\061\uffa9\063\145\066\126\067\124\070\uffa9\071" +
    "\uffa9\101\135\102\134\104\127\105\123\001\002\000\112" +
    "\011\uffaf\012\125\013\uffaf\014\uffaf\015\117\016\141\017" +
    "\115\020\132\021\uffaf\022\116\024\uffaf\025\uffaf\026\uffaf" +
    "\027\uffaf\030\uffaf\031\131\032\147\033\121\034\137\035" +
    "\133\036\122\037\146\040\uffaf\041\136\053\142\054\143" +
    "\061\uffaf\063\145\066\126\067\124\070\144\071\140\101" +
    "\135\102\134\104\127\105\123\001\002\000\112\011\uffbc" +
    "\012\125\013\uffbc\014\uffbc\015\uffbc\016\uffbc\017\115\020" +
    "\132\021\uffbc\022\116\024\uffbc\025\uffbc\026\uffbc\027\uffbc" +
    "\030\uffbc\031\uffbc\032\uffbc\033\uffbc\034\uffbc\035\uffbc\036" +
    "\uffbc\037\uffbc\040\uffbc\041\uffbc\053\142\054\143\061\uffbc" +
    "\063\uffbc\066\uffbc\067\uffbc\070\uffbc\071\uffbc\101\uffbc\102" +
    "\uffbc\104\uffbc\105\uffbc\001\002\000\112\011\uffb6\012\125" +
    "\013\uffb6\014\uffb6\015\uffb6\016\uffb6\017\uffb6\020\uffb6\021" +
    "\uffb6\022\uffb6\024\uffb6\025\uffb6\026\uffb6\027\uffb6\030\uffb6" +
    "\031\uffb6\032\uffb6\033\uffb6\034\uffb6\035\uffb6\036\uffb6\037" +
    "\uffb6\040\uffb6\041\uffb6\053\142\054\143\061\uffb6\063\uffb6" +
    "\066\uffb6\067\uffb6\070\uffb6\071\uffb6\101\uffb6\102\uffb6\104" +
    "\uffb6\105\uffb6\001\002\000\112\011\uffb8\012\125\013\uffb8" +
    "\014\uffb8\015\uffb8\016\uffb8\017\uffb8\020\uffb8\021\uffb8\022" +
    "\uffb8\024\uffb8\025\uffb8\026\uffb8\027\uffb8\030\uffb8\031\uffb8" +
    "\032\uffb8\033\uffb8\034\uffb8\035\uffb8\036\uffb8\037\uffb8\040" +
    "\uffb8\041\uffb8\053\142\054\143\061\uffb8\063\uffb8\066\uffb8" +
    "\067\uffb8\070\uffb8\071\uffb8\101\uffb8\102\uffb8\104\uffb8\105" +
    "\uffb8\001\002\000\064\004\uffd7\005\uffd7\007\uffd7\010\uffd7" +
    "\014\uffd7\016\uffd7\017\uffd7\042\uffd7\046\uffd7\047\uffd7\050" +
    "\uffd7\051\uffd7\052\uffd7\056\uffd7\062\uffd7\063\uffd7\064\uffd7" +
    "\065\uffd7\072\uffd7\073\uffd7\076\uffd7\077\uffd7\106\uffd7\107" +
    "\uffd7\110\uffd7\001\002\000\042\004\047\005\041\010\046" +
    "\016\057\017\033\042\036\050\044\051\060\052\070\062" +
    "\065\063\064\064\062\065\066\106\035\107\051\110\056" +
    "\001\002\000\070\011\210\012\125\015\117\016\141\017" +
    "\115\020\132\022\116\031\131\032\147\033\121\034\137" +
    "\035\133\036\122\037\146\040\120\041\136\053\142\054" +
    "\143\063\145\066\126\067\124\070\144\071\140\101\135" +
    "\102\134\104\127\105\123\001\002\000\112\011\uffa0\012" +
    "\uffa0\013\uffa0\014\uffa0\015\uffa0\016\uffa0\017\uffa0\020\uffa0" +
    "\021\uffa0\022\uffa0\024\uffa0\025\uffa0\026\uffa0\027\uffa0\030" +
    "\uffa0\031\uffa0\032\uffa0\033\uffa0\034\uffa0\035\uffa0\036\uffa0" +
    "\037\uffa0\040\uffa0\041\uffa0\053\uffa0\054\uffa0\061\uffa0\063" +
    "\uffa0\066\uffa0\067\uffa0\070\uffa0\071\uffa0\101\uffa0\102\uffa0" +
    "\104\uffa0\105\uffa0\001\002\000\112\011\uffa2\012\125\013" +
    "\uffa2\014\uffa2\015\uffa2\016\uffa2\017\uffa2\020\uffa2\021\uffa2" +
    "\022\uffa2\024\uffa2\025\uffa2\026\uffa2\027\uffa2\030\uffa2\031" +
    "\uffa2\032\uffa2\033\uffa2\034\uffa2\035\uffa2\036\uffa2\037\uffa2" +
    "\040\uffa2\041\uffa2\053\142\054\143\061\uffa2\063\uffa2\066" +
    "\uffa2\067\uffa2\070\uffa2\071\uffa2\101\uffa2\102\uffa2\104\uffa2" +
    "\105\uffa2\001\002\000\044\004\047\005\041\010\046\014" +
    "\214\016\057\017\033\042\036\050\044\051\060\052\070" +
    "\062\065\063\064\064\062\065\066\106\035\107\051\110" +
    "\056\001\002\000\070\012\125\015\117\016\141\017\115" +
    "\020\132\021\231\022\116\031\131\032\147\033\121\034" +
    "\137\035\133\036\122\037\146\040\120\041\136\053\142" +
    "\054\143\063\145\066\126\067\124\070\144\071\140\101" +
    "\135\102\134\104\127\105\123\001\002\000\042\004\047" +
    "\005\041\010\046\016\057\017\033\042\036\050\044\051" +
    "\060\052\070\062\065\063\064\064\062\065\066\106\035" +
    "\107\051\110\056\001\002\000\070\012\125\014\216\015" +
    "\117\016\141\017\115\020\132\022\116\031\131\032\147" +
    "\033\121\034\137\035\133\036\122\037\146\040\120\041" +
    "\136\053\142\054\143\063\145\066\126\067\124\070\144" +
    "\071\140\101\135\102\134\104\127\105\123\001\002\000" +
    "\052\004\047\005\041\010\046\011\217\016\057\017\033" +
    "\042\036\050\044\051\060\052\070\056\043\062\065\063" +
    "\064\064\062\065\066\076\054\077\034\106\035\107\051" +
    "\110\056\001\002\000\062\004\047\005\041\006\223\010" +
    "\046\014\055\016\057\017\033\042\036\046\045\050\044" +
    "\051\060\052\070\056\043\062\065\063\064\064\062\065" +
    "\066\072\063\073\042\076\054\077\034\106\035\107\051" +
    "\110\056\001\002\000\004\011\221\001\002\000\062\004" +
    "\047\005\041\006\223\010\046\014\055\016\057\017\033" +
    "\042\036\046\045\050\044\051\060\052\070\056\043\062" +
    "\065\063\064\064\062\065\066\072\063\073\042\076\054" +
    "\077\034\106\035\107\051\110\056\001\002\000\064\004" +
    "\uffc7\005\uffc7\007\uffc7\010\uffc7\014\uffc7\016\uffc7\017\uffc7" +
    "\042\uffc7\046\uffc7\047\uffc7\050\uffc7\051\uffc7\052\uffc7\056" +
    "\uffc7\062\uffc7\063\uffc7\064\uffc7\065\uffc7\072\uffc7\073\uffc7" +
    "\076\uffc7\077\uffc7\106\uffc7\107\uffc7\110\uffc7\001\002\000" +
    "\062\004\047\005\041\007\225\010\046\014\055\016\057" +
    "\017\033\042\036\046\045\050\044\051\060\052\070\056" +
    "\043\062\065\063\064\064\062\065\066\072\063\073\042" +
    "\076\054\077\034\106\035\107\051\110\056\001\002\000" +
    "\064\004\uffdc\005\uffdc\007\uffdc\010\uffdc\014\uffdc\016\uffdc" +
    "\017\uffdc\042\uffdc\046\uffdc\047\uffdc\050\uffdc\051\uffdc\052" +
    "\uffdc\056\uffdc\062\uffdc\063\uffdc\064\uffdc\065\uffdc\072\uffdc" +
    "\073\uffdc\076\uffdc\077\uffdc\106\uffdc\107\uffdc\110\uffdc\001" +
    "\002\000\064\004\uffda\005\uffda\007\uffda\010\uffda\014\uffda" +
    "\016\uffda\017\uffda\042\uffda\046\uffda\047\uffda\050\uffda\051" +
    "\uffda\052\uffda\056\uffda\062\uffda\063\uffda\064\uffda\065\uffda" +
    "\072\uffda\073\uffda\076\uffda\077\uffda\106\uffda\107\uffda\110" +
    "\uffda\001\002\000\004\007\227\001\002\000\064\004\uffdb" +
    "\005\uffdb\007\uffdb\010\uffdb\014\uffdb\016\uffdb\017\uffdb\042" +
    "\uffdb\046\uffdb\047\uffdb\050\uffdb\051\uffdb\052\uffdb\056\uffdb" +
    "\062\uffdb\063\uffdb\064\uffdb\065\uffdb\072\uffdb\073\uffdb\076" +
    "\uffdb\077\uffdb\106\uffdb\107\uffdb\110\uffdb\001\002\000\064" +
    "\004\uffc8\005\uffc8\007\uffc8\010\uffc8\014\uffc8\016\uffc8\017" +
    "\uffc8\042\uffc8\046\uffc8\047\uffc8\050\uffc8\051\uffc8\052\uffc8" +
    "\056\uffc8\062\uffc8\063\uffc8\064\uffc8\065\uffc8\072\uffc8\073" +
    "\uffc8\076\uffc8\077\uffc8\106\uffc8\107\uffc8\110\uffc8\001\002" +
    "\000\042\004\047\005\041\010\046\016\057\017\033\042" +
    "\036\050\044\051\060\052\070\062\065\063\064\064\062" +
    "\065\066\106\035\107\051\110\056\001\002\000\070\012" +
    "\125\014\233\015\117\016\141\017\115\020\132\022\116" +
    "\031\131\032\147\033\121\034\137\035\133\036\122\037" +
    "\146\040\120\041\136\053\142\054\143\063\145\066\126" +
    "\067\124\070\144\071\140\101\135\102\134\104\127\105" +
    "\123\001\002\000\042\004\047\005\041\010\046\016\057" +
    "\017\033\042\036\050\044\051\060\052\070\062\065\063" +
    "\064\064\062\065\066\106\035\107\051\110\056\001\002" +
    "\000\070\012\125\014\235\015\117\016\141\017\115\020" +
    "\132\022\116\031\131\032\147\033\121\034\137\035\133" +
    "\036\122\037\146\040\120\041\136\053\142\054\143\063" +
    "\145\066\126\067\124\070\144\071\140\101\135\102\134" +
    "\104\127\105\123\001\002\000\052\004\047\005\041\010" +
    "\046\011\236\016\057\017\033\042\036\050\044\051\060" +
    "\052\070\056\043\062\065\063\064\064\062\065\066\076" +
    "\054\077\034\106\035\107\051\110\056\001\002\000\062" +
    "\004\047\005\041\006\223\010\046\014\055\016\057\017" +
    "\033\042\036\046\045\050\044\051\060\052\070\056\043" +
    "\062\065\063\064\064\062\065\066\072\063\073\042\076" +
    "\054\077\034\106\035\107\051\110\056\001\002\000\004" +
    "\011\240\001\002\000\062\004\047\005\041\006\223\010" +
    "\046\014\055\016\057\017\033\042\036\046\045\050\044" +
    "\051\060\052\070\056\043\062\065\063\064\064\062\065" +
    "\066\072\063\073\042\076\054\077\034\106\035\107\051" +
    "\110\056\001\002\000\064\004\uffca\005\uffca\007\uffca\010" +
    "\uffca\014\uffca\016\uffca\017\uffca\042\uffca\046\uffca\047\uffca" +
    "\050\uffca\051\uffca\052\uffca\056\uffca\062\uffca\063\uffca\064" +
    "\uffca\065\uffca\072\uffca\073\uffca\076\uffca\077\uffca\106\uffca" +
    "\107\uffca\110\uffca\001\002\000\064\004\uffc9\005\uffc9\007" +
    "\uffc9\010\uffc9\014\uffc9\016\uffc9\017\uffc9\042\uffc9\046\uffc9" +
    "\047\uffc9\050\uffc9\051\uffc9\052\uffc9\056\uffc9\062\uffc9\063" +
    "\uffc9\064\uffc9\065\uffc9\072\uffc9\073\uffc9\076\uffc9\077\uffc9" +
    "\106\uffc9\107\uffc9\110\uffc9\001\002\000\042\004\047\005" +
    "\041\010\046\016\057\017\033\042\036\050\044\051\060" +
    "\052\070\062\065\063\064\064\062\065\066\106\035\107" +
    "\051\110\056\001\002\000\070\011\245\012\125\015\117" +
    "\016\141\017\115\020\132\022\116\031\131\032\147\033" +
    "\121\034\137\035\133\036\122\037\146\040\120\041\136" +
    "\053\142\054\143\063\145\066\126\067\124\070\144\071" +
    "\140\101\135\102\134\104\127\105\123\001\002\000\112" +
    "\011\uffa1\012\uffa1\013\uffa1\014\uffa1\015\uffa1\016\uffa1\017" +
    "\uffa1\020\uffa1\021\uffa1\022\uffa1\024\uffa1\025\uffa1\026\uffa1" +
    "\027\uffa1\030\uffa1\031\uffa1\032\uffa1\033\uffa1\034\uffa1\035" +
    "\uffa1\036\uffa1\037\uffa1\040\uffa1\041\uffa1\053\uffa1\054\uffa1" +
    "\061\uffa1\063\uffa1\066\uffa1\067\uffa1\070\uffa1\071\uffa1\101" +
    "\uffa1\102\uffa1\104\uffa1\105\uffa1\001\002\000\016\002\uffe9" +
    "\004\uffe9\043\uffe9\044\uffe9\055\uffe9\074\uffe9\001\002\000" +
    "\004\007\250\001\002\000\016\002\uffea\004\uffea\043\uffea" +
    "\044\uffea\055\uffea\074\uffea\001\002\000\112\011\uffbe\012" +
    "\125\013\uffbe\014\uffbe\015\uffbe\016\uffbe\017\uffbe\020\uffbe" +
    "\021\uffbe\022\uffbe\024\uffbe\025\uffbe\026\uffbe\027\uffbe\030" +
    "\uffbe\031\uffbe\032\uffbe\033\uffbe\034\uffbe\035\uffbe\036\uffbe" +
    "\037\uffbe\040\uffbe\041\uffbe\053\142\054\143\061\uffbe\063" +
    "\uffbe\066\uffbe\067\uffbe\070\uffbe\071\uffbe\101\uffbe\102\uffbe" +
    "\104\uffbe\105\uffbe\001\002\000\042\004\047\005\041\010" +
    "\046\016\057\017\033\042\036\050\044\051\060\052\070" +
    "\062\065\063\064\064\062\065\066\106\035\107\051\110" +
    "\056\001\002\000\070\011\254\012\125\015\117\016\141" +
    "\017\115\020\132\022\116\031\131\032\147\033\121\034" +
    "\137\035\133\036\122\037\146\040\120\041\136\053\142" +
    "\054\143\063\145\066\126\067\124\070\144\071\140\101" +
    "\135\102\134\104\127\105\123\001\002\000\112\011\uff9e" +
    "\012\uff9e\013\uff9e\014\uff9e\015\uff9e\016\uff9e\017\uff9e\020" +
    "\uff9e\021\uff9e\022\uff9e\024\uff9e\025\uff9e\026\uff9e\027\uff9e" +
    "\030\uff9e\031\uff9e\032\uff9e\033\uff9e\034\uff9e\035\uff9e\036" +
    "\uff9e\037\uff9e\040\uff9e\041\uff9e\053\uff9e\054\uff9e\061\uff9e" +
    "\063\uff9e\066\uff9e\067\uff9e\070\uff9e\071\uff9e\101\uff9e\102" +
    "\uff9e\104\uff9e\105\uff9e\001\002\000\062\004\uffe6\005\uffe6" +
    "\007\uffe6\010\uffe6\014\uffe6\016\uffe6\017\uffe6\042\uffe6\046" +
    "\uffe6\050\uffe6\051\uffe6\052\uffe6\056\uffe6\062\uffe6\063\uffe6" +
    "\064\uffe6\065\uffe6\072\uffe6\073\uffe6\076\uffe6\077\uffe6\106" +
    "\uffe6\107\uffe6\110\uffe6\001\002\000\042\004\047\005\041" +
    "\010\046\016\057\017\033\042\036\050\044\051\060\052" +
    "\070\062\065\063\064\064\062\065\066\106\035\107\051" +
    "\110\056\001\002\000\070\011\260\012\125\015\117\016" +
    "\141\017\115\020\132\022\116\031\131\032\147\033\121" +
    "\034\137\035\133\036\122\037\146\040\120\041\136\053" +
    "\142\054\143\063\145\066\126\067\124\070\144\071\140" +
    "\101\135\102\134\104\127\105\123\001\002\000\112\011" +
    "\uff9f\012\uff9f\013\uff9f\014\uff9f\015\uff9f\016\uff9f\017\uff9f" +
    "\020\uff9f\021\uff9f\022\uff9f\024\uff9f\025\uff9f\026\uff9f\027" +
    "\uff9f\030\uff9f\031\uff9f\032\uff9f\033\uff9f\034\uff9f\035\uff9f" +
    "\036\uff9f\037\uff9f\040\uff9f\041\uff9f\053\uff9f\054\uff9f\061" +
    "\uff9f\063\uff9f\066\uff9f\067\uff9f\070\uff9f\071\uff9f\101\uff9f" +
    "\102\uff9f\104\uff9f\105\uff9f\001\002\000\044\004\047\005" +
    "\041\010\046\011\263\016\057\017\033\042\036\050\044" +
    "\051\060\052\070\062\065\063\064\064\062\065\066\106" +
    "\035\107\051\110\056\001\002\000\072\011\uffd4\012\125" +
    "\015\117\016\141\017\115\020\132\022\116\031\131\032" +
    "\147\033\121\034\137\035\133\036\122\037\146\040\120" +
    "\041\136\053\142\054\143\061\266\063\145\066\126\067" +
    "\124\070\144\071\140\101\135\102\134\104\127\105\123" +
    "\001\002\000\112\011\uffa5\012\uffa5\013\uffa5\014\uffa5\015" +
    "\uffa5\016\uffa5\017\uffa5\020\uffa5\021\uffa5\022\uffa5\024\uffa5" +
    "\025\uffa5\026\uffa5\027\uffa5\030\uffa5\031\uffa5\032\uffa5\033" +
    "\uffa5\034\uffa5\035\uffa5\036\uffa5\037\uffa5\040\uffa5\041\uffa5" +
    "\053\uffa5\054\uffa5\061\uffa5\063\uffa5\066\uffa5\067\uffa5\070" +
    "\uffa5\071\uffa5\101\uffa5\102\uffa5\104\uffa5\105\uffa5\001\002" +
    "\000\004\011\265\001\002\000\112\011\uffa4\012\uffa4\013" +
    "\uffa4\014\uffa4\015\uffa4\016\uffa4\017\uffa4\020\uffa4\021\uffa4" +
    "\022\uffa4\024\uffa4\025\uffa4\026\uffa4\027\uffa4\030\uffa4\031" +
    "\uffa4\032\uffa4\033\uffa4\034\uffa4\035\uffa4\036\uffa4\037\uffa4" +
    "\040\uffa4\041\uffa4\053\uffa4\054\uffa4\061\uffa4\063\uffa4\066" +
    "\uffa4\067\uffa4\070\uffa4\071\uffa4\101\uffa4\102\uffa4\104\uffa4" +
    "\105\uffa4\001\002\000\042\004\047\005\041\010\046\016" +
    "\057\017\033\042\036\050\044\051\060\052\070\062\065" +
    "\063\064\064\062\065\066\106\035\107\051\110\056\001" +
    "\002\000\004\011\uffd3\001\002\000\070\011\271\012\125" +
    "\015\117\016\141\017\115\020\132\022\116\031\131\032" +
    "\147\033\121\034\137\035\133\036\122\037\146\040\120" +
    "\041\136\053\142\054\143\063\145\066\126\067\124\070" +
    "\144\071\140\101\135\102\134\104\127\105\123\001\002" +
    "\000\112\011\uffbf\012\uffbf\013\uffbf\014\uffbf\015\uffbf\016" +
    "\uffbf\017\uffbf\020\uffbf\021\uffbf\022\uffbf\024\uffbf\025\uffbf" +
    "\026\uffbf\027\uffbf\030\uffbf\031\uffbf\032\uffbf\033\uffbf\034" +
    "\uffbf\035\uffbf\036\uffbf\037\uffbf\040\uffbf\041\uffbf\053\uffbf" +
    "\054\uffbf\061\uffbf\063\uffbf\066\uffbf\067\uffbf\070\uffbf\071" +
    "\uffbf\101\uffbf\102\uffbf\104\uffbf\105\uffbf\001\002\000\042" +
    "\004\047\005\041\010\046\016\057\017\033\042\036\050" +
    "\044\051\060\052\070\062\065\063\064\064\062\065\066" +
    "\106\035\107\051\110\056\001\002\000\070\011\274\012" +
    "\125\015\117\016\141\017\115\020\132\022\116\031\131" +
    "\032\147\033\121\034\137\035\133\036\122\037\146\040" +
    "\120\041\136\053\142\054\143\063\145\066\126\067\124" +
    "\070\144\071\140\101\135\102\134\104\127\105\123\001" +
    "\002\000\062\004\047\005\041\006\223\010\046\014\055" +
    "\016\057\017\033\042\036\046\045\050\044\051\060\052" +
    "\070\056\043\062\065\063\064\064\062\065\066\072\063" +
    "\073\042\076\054\077\034\106\035\107\051\110\056\001" +
    "\002\000\064\004\uffcb\005\uffcb\007\uffcb\010\uffcb\014\uffcb" +
    "\016\uffcb\017\uffcb\042\uffcb\046\uffcb\047\276\050\uffcb\051" +
    "\uffcb\052\uffcb\056\uffcb\062\uffcb\063\uffcb\064\uffcb\065\uffcb" +
    "\072\uffcb\073\uffcb\076\uffcb\077\uffcb\106\uffcb\107\uffcb\110" +
    "\uffcb\001\002\000\062\004\047\005\041\006\223\010\046" +
    "\014\055\016\057\017\033\042\036\046\045\050\044\051" +
    "\060\052\070\056\043\062\065\063\064\064\062\065\066" +
    "\072\063\073\042\076\054\077\034\106\035\107\051\110" +
    "\056\001\002\000\064\004\uffcc\005\uffcc\007\uffcc\010\uffcc" +
    "\014\uffcc\016\uffcc\017\uffcc\042\uffcc\046\uffcc\047\uffcc\050" +
    "\uffcc\051\uffcc\052\uffcc\056\uffcc\062\uffcc\063\uffcc\064\uffcc" +
    "\065\uffcc\072\uffcc\073\uffcc\076\uffcc\077\uffcc\106\uffcc\107" +
    "\uffcc\110\uffcc\001\002\000\072\011\uffd0\012\125\014\uffd0" +
    "\015\117\016\141\017\115\020\132\022\116\031\131\032" +
    "\147\033\121\034\137\035\133\036\122\037\146\040\120" +
    "\041\136\053\142\054\143\063\145\066\126\067\124\070" +
    "\144\071\140\101\135\102\134\104\127\105\123\001\002" +
    "\000\042\004\047\005\041\010\046\016\057\017\033\042" +
    "\036\050\044\051\060\052\070\062\065\063\064\064\062" +
    "\065\066\106\035\107\051\110\056\001\002\000\070\011" +
    "\303\012\125\015\117\016\141\017\115\020\132\022\116" +
    "\031\131\032\147\033\121\034\137\035\133\036\122\037" +
    "\146\040\120\041\136\053\142\054\143\063\145\066\126" +
    "\067\124\070\144\071\140\101\135\102\134\104\127\105" +
    "\123\001\002\000\062\004\047\005\041\006\223\010\046" +
    "\014\055\016\057\017\033\042\036\046\045\050\044\051" +
    "\060\052\070\056\043\062\065\063\064\064\062\065\066" +
    "\072\063\073\042\076\054\077\034\106\035\107\051\110" +
    "\056\001\002\000\064\004\uffc6\005\uffc6\007\uffc6\010\uffc6" +
    "\014\uffc6\016\uffc6\017\uffc6\042\uffc6\046\uffc6\047\uffc6\050" +
    "\uffc6\051\uffc6\052\uffc6\056\uffc6\062\uffc6\063\uffc6\064\uffc6" +
    "\065\uffc6\072\uffc6\073\uffc6\076\uffc6\077\uffc6\106\uffc6\107" +
    "\uffc6\110\uffc6\001\002\000\042\004\047\005\041\010\046" +
    "\016\057\017\033\042\036\050\044\051\060\052\070\062" +
    "\065\063\064\064\062\065\066\106\035\107\051\110\056" +
    "\001\002\000\042\004\047\005\041\010\046\016\057\017" +
    "\033\042\036\050\044\051\060\052\070\062\065\063\064" +
    "\064\062\065\066\106\035\107\051\110\056\001\002\000" +
    "\042\004\047\005\041\010\046\016\057\017\033\042\036" +
    "\050\044\051\060\052\070\062\065\063\064\064\062\065" +
    "\066\106\035\107\051\110\056\001\002\000\042\004\047" +
    "\005\041\010\046\016\057\017\033\042\036\050\044\051" +
    "\060\052\070\062\065\063\064\064\062\065\066\106\035" +
    "\107\051\110\056\001\002\000\042\004\047\005\041\010" +
    "\046\016\057\017\033\042\036\050\044\051\060\052\070" +
    "\062\065\063\064\064\062\065\066\106\035\107\051\110" +
    "\056\001\002\000\042\004\047\005\041\010\046\016\057" +
    "\017\033\042\036\050\044\051\060\052\070\062\065\063" +
    "\064\064\062\065\066\106\035\107\051\110\056\001\002" +
    "\000\072\011\uffc0\012\125\014\uffc0\015\117\016\141\017" +
    "\115\020\132\022\116\031\131\032\147\033\121\034\137" +
    "\035\133\036\122\037\146\040\120\041\136\053\142\054" +
    "\143\063\145\066\126\067\124\070\144\071\140\101\135" +
    "\102\134\104\127\105\123\001\002\000\072\011\uffc3\012" +
    "\125\014\uffc3\015\117\016\141\017\115\020\132\022\116" +
    "\031\131\032\147\033\121\034\137\035\133\036\122\037" +
    "\146\040\120\041\136\053\142\054\143\063\145\066\126" +
    "\067\124\070\144\071\140\101\135\102\134\104\127\105" +
    "\123\001\002\000\072\011\uffc5\012\125\014\uffc5\015\117" +
    "\016\141\017\115\020\132\022\116\031\131\032\147\033" +
    "\121\034\137\035\133\036\122\037\146\040\120\041\136" +
    "\053\142\054\143\063\145\066\126\067\124\070\144\071" +
    "\140\101\135\102\134\104\127\105\123\001\002\000\072" +
    "\011\uffc4\012\125\014\uffc4\015\117\016\141\017\115\020" +
    "\132\022\116\031\131\032\147\033\121\034\137\035\133" +
    "\036\122\037\146\040\120\041\136\053\142\054\143\063" +
    "\145\066\126\067\124\070\144\071\140\101\135\102\134" +
    "\104\127\105\123\001\002\000\072\011\uffc2\012\125\014" +
    "\uffc2\015\117\016\141\017\115\020\132\022\116\031\131" +
    "\032\147\033\121\034\137\035\133\036\122\037\146\040" +
    "\120\041\136\053\142\054\143\063\145\066\126\067\124" +
    "\070\144\071\140\101\135\102\134\104\127\105\123\001" +
    "\002\000\072\011\uffc1\012\125\014\uffc1\015\117\016\141" +
    "\017\115\020\132\022\116\031\131\032\147\033\121\034" +
    "\137\035\133\036\122\037\146\040\120\041\136\053\142" +
    "\054\143\063\145\066\126\067\124\070\144\071\140\101" +
    "\135\102\134\104\127\105\123\001\002\000\112\011\uff94" +
    "\012\125\013\uff94\014\uff94\015\uff94\016\uff94\017\uff94\020" +
    "\uff94\021\uff94\022\uff94\024\uff94\025\uff94\026\uff94\027\uff94" +
    "\030\uff94\031\uff94\032\uff94\033\uff94\034\uff94\035\uff94\036" +
    "\uff94\037\uff94\040\uff94\041\uff94\053\142\054\143\061\uff94" +
    "\063\uff94\066\uff94\067\uff94\070\uff94\071\uff94\101\uff94\102" +
    "\uff94\104\uff94\105\uff94\001\002\000\112\011\uffbd\012\125" +
    "\013\uffbd\014\uffbd\015\uffbd\016\uffbd\017\uffbd\020\uffbd\021" +
    "\uffbd\022\uffbd\024\uffbd\025\uffbd\026\uffbd\027\uffbd\030\uffbd" +
    "\031\uffbd\032\uffbd\033\uffbd\034\uffbd\035\uffbd\036\uffbd\037" +
    "\uffbd\040\uffbd\041\uffbd\053\142\054\143\061\uffbd\063\uffbd" +
    "\066\uffbd\067\uffbd\070\uffbd\071\uffbd\101\uffbd\102\uffbd\104" +
    "\uffbd\105\uffbd\001\002\000\112\011\uff9c\012\125\013\uff9c" +
    "\014\uff9c\015\uff9c\016\uff9c\017\uff9c\020\uff9c\021\uff9c\022" +
    "\uff9c\024\uff9c\025\uff9c\026\uff9c\027\uff9c\030\uff9c\031\uff9c" +
    "\032\uff9c\033\uff9c\034\uff9c\035\uff9c\036\uff9c\037\uff9c\040" +
    "\uff9c\041\uff9c\053\142\054\143\061\uff9c\063\uff9c\066\uff9c" +
    "\067\uff9c\070\uff9c\071\uff9c\101\uff9c\102\uff9c\104\uff9c\105" +
    "\uff9c\001\002\000\016\002\ufff2\004\ufff2\043\ufff2\044\ufff2" +
    "\055\ufff2\074\ufff2\001\002\000\016\002\ufff1\004\ufff1\043" +
    "\ufff1\044\ufff1\055\ufff1\074\ufff1\001\002\000\004\004\023" +
    "\001\002\000\004\011\uffed\001\002\000\010\004\014\043" +
    "\007\044\004\001\002\000\010\011\uffec\017\021\061\uffec" +
    "\001\002\000\004\002\001\001\002\000\004\010\334\001" +
    "\002\000\006\004\023\011\335\001\002\000\006\006\031" +
    "\075\343\001\002\000\004\011\337\001\002\000\006\006" +
    "\031\075\341\001\002\000\016\002\ufff4\004\ufff4\043\ufff4" +
    "\044\ufff4\055\ufff4\074\ufff4\001\002\000\016\002\ufff3\004" +
    "\ufff3\043\ufff3\044\ufff3\055\ufff3\074\ufff3\001\002\000\016" +
    "\002\ufff0\004\ufff0\043\ufff0\044\ufff0\055\ufff0\074\ufff0\001" +
    "\002\000\016\002\uffef\004\uffef\043\uffef\044\uffef\055\uffef" +
    "\074\uffef\001\002\000\004\006\345\001\002\000\004\004" +
    "\346\001\002\000\004\057\355\001\002\000\006\007\ufff9" +
    "\014\353\001\002\000\004\007\351\001\002\000\004\014" +
    "\352\001\002\000\016\002\ufffb\004\ufffb\043\ufffb\044\ufffb" +
    "\055\ufffb\074\ufffb\001\002\000\006\004\346\007\ufff8\001" +
    "\002\000\004\007\ufff7\001\002\000\010\004\014\043\007" +
    "\044\004\001\002\000\010\007\ufffa\014\ufffa\017\021\001" +
    "\002" });

  /** Access to parse-action table. */
  public short[][] action_table() {return _action_table;}

  /** <code>reduce_goto</code> table. */
  protected static final short[][] _reduce_table = 
    unpackFromStrings(new String[] {
    "\000\354\000\016\003\011\015\014\021\012\025\007\027" +
    "\015\030\004\001\001\000\002\001\001\000\002\001\001" +
    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\014\015\014\021\012\025" +
    "\007\027\015\030\016\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\006\023\025\024\023\001" +
    "\001\000\002\001\001\000\002\001\001\000\004\022\323" +
    "\001\001\000\002\001\001\000\004\022\027\001\001\000" +
    "\002\001\001\000\022\004\071\005\070\006\051\007\036" +
    "\010\066\011\047\016\060\017\052\001\001\000\002\001" +
    "\001\000\004\007\322\001\001\000\002\001\001\000\004" +
    "\007\321\001\001\000\004\007\320\001\001\000\002\001" +
    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
    "\000\004\007\277\001\001\000\002\001\001\000\002\001" +
    "\001\000\004\007\267\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\006\016" +
    "\254\017\052\001\001\000\002\001\001\000\002\001\001" +
    "\000\002\001\001\000\004\007\250\001\001\000\002\001" +
    "\001\000\016\004\246\005\070\006\051\007\036\010\066" +
    "\011\047\001\001\000\002\001\001\000\002\001\001\000" +
    "\004\007\210\001\001\000\002\001\001\000\002\001\001" +
    "\000\002\001\001\000\002\001\001\000\016\004\111\005" +
    "\070\006\051\007\036\010\066\011\047\001\001\000\002" +
    "\001\001\000\004\012\074\001\001\000\002\001\001\000" +
    "\002\001\001\000\006\012\101\013\102\001\001\000\004" +
    "\015\077\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\004\015\104\001\001" +
    "\000\002\001\001\000\002\001\001\000\006\012\101\013" +
    "\107\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\004\007\113\001\001\000\002\001\001\000" +
    "\004\007\203\001\001\000\004\007\202\001\001\000\004" +
    "\007\201\001\001\000\004\007\200\001\001\000\004\007" +
    "\177\001\001\000\004\007\176\001\001\000\004\007\175" +
    "\001\001\000\004\007\174\001\001\000\004\007\172\001" +
    "\001\000\004\007\171\001\001\000\004\007\170\001\001" +
    "\000\004\015\166\001\001\000\004\007\165\001\001\000" +
    "\004\007\164\001\001\000\004\007\163\001\001\000\004" +
    "\007\162\001\001\000\004\007\161\001\001\000\004\007" +
    "\160\001\001\000\004\007\157\001\001\000\004\007\156" +
    "\001\001\000\004\007\155\001\001\000\002\001\001\000" +
    "\002\001\001\000\004\007\152\001\001\000\004\007\151" +
    "\001\001\000\004\007\150\001\001\000\004\007\147\001" +
    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
    "\000\002\001\001\000\004\007\206\001\001\000\002\001" +
    "\001\000\002\001\001\000\002\001\001\000\004\007\212" +
    "\001\001\000\002\001\001\000\004\007\214\001\001\000" +
    "\002\001\001\000\010\006\051\007\036\010\217\001\001" +
    "\000\016\005\223\006\051\007\036\010\066\011\047\014" +
    "\227\001\001\000\002\001\001\000\016\005\223\006\051" +
    "\007\036\010\066\011\047\014\221\001\001\000\002\001" +
    "\001\000\016\004\225\005\070\006\051\007\036\010\066" +
    "\011\047\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\004" +
    "\007\231\001\001\000\002\001\001\000\004\007\233\001" +
    "\001\000\002\001\001\000\010\006\051\007\036\010\236" +
    "\001\001\000\016\005\223\006\051\007\036\010\066\011" +
    "\047\014\241\001\001\000\002\001\001\000\016\005\223" +
    "\006\051\007\036\010\066\011\047\014\240\001\001\000" +
    "\002\001\001\000\002\001\001\000\004\007\243\001\001" +
    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\004" +
    "\007\252\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\004\007\256\001\001\000\002\001\001" +
    "\000\002\001\001\000\006\007\261\026\263\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\006\007\261\026\266\001\001\000\002\001" +
    "\001\000\002\001\001\000\002\001\001\000\004\007\272" +
    "\001\001\000\002\001\001\000\016\005\223\006\051\007" +
    "\036\010\066\011\047\014\274\001\001\000\002\001\001" +
    "\000\016\005\223\006\051\007\036\010\066\011\047\014" +
    "\276\001\001\000\002\001\001\000\002\001\001\000\004" +
    "\007\301\001\001\000\002\001\001\000\016\005\223\006" +
    "\051\007\036\010\066\011\047\014\303\001\001\000\002" +
    "\001\001\000\004\007\317\001\001\000\004\007\316\001" +
    "\001\000\004\007\315\001\001\000\004\007\314\001\001" +
    "\000\004\007\313\001\001\000\004\007\312\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
    "\000\002\001\001\000\006\023\326\024\023\001\001\000" +
    "\002\001\001\000\004\015\330\001\001\000\002\001\001" +
    "\000\002\001\001\000\002\001\001\000\006\023\335\024" +
    "\023\001\001\000\004\022\341\001\001\000\002\001\001" +
    "\000\004\022\337\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
    "\000\006\020\347\031\346\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\006\020\353\031\346\001\001\000\002\001" +
    "\001\000\004\015\355\001\001\000\002\001\001" });

  /** Access to <code>reduce_goto</code> table. */
  public short[][] reduce_table() {return _reduce_table;}

  /** Instance of action encapsulation class. */
  protected CUP$parser$actions action_obj;

  /** Action encapsulation object initializer. */
  protected void init_actions()
    {
      action_obj = new CUP$parser$actions(this);
    }

  /** Invoke a user supplied parse action. */
  public java_cup.runtime.Symbol do_action(
    int                        act_num,
    java_cup.runtime.lr_parser parser,
    java.util.Stack            stack,
    int                        top)
    throws java.lang.Exception
  {
    /* call code in generated class */
    return action_obj.CUP$parser$do_action(act_num, parser, stack, top);
  }

  /** Indicates start state. */
  public int start_state() {return 0;}
  /** Indicates start production. */
  public int start_production() {return 0;}

  /** <code>EOF</code> Symbol index. */
  public int EOF_sym() {return 0;}

  /** <code>error</code> Symbol index. */
  public int error_sym() {return 1;}


  /** Scan to get the next Symbol. */
  public java_cup.runtime.Symbol scan()
    throws java.lang.Exception
    {
 return lexer.nextToken(); 
    }


  public ASDeclaration parseResult;
  Lexer lexer;
  boolean debugon = false;

  public void syntax_error(java_cup.runtime.Symbol current) {
   report_error("Syntax error (" + current.sym + ")", current);
  }

  ErrorMsg errorMsg;

  public void report_error(String message,
			   java_cup.runtime.Symbol info) {
      errorMsg.error(info.left, message);
  }
  
  public void debugprint(String s) {
     if (debugon)
       System.out.println(s);
  }

  public ASLval make_lval(ASExpression exp) throws Exception {
     ASLval lval = null;
     try {
          lval = ((ASLvalExpression)exp).getVariable();
     }
     catch (Exception e) {
          errorMsg.error(0,"expression not a lval");
          throw new Exception("expression not a lval");
     }

     return lval;
  }

  public parser(Lexer l, ErrorMsg err) {
    this();
    errorMsg=err;
    lexer=l;
  }

}

/** Cup generated class to encapsulate user supplied action code.*/
class CUP$parser$actions {

 static Symbol sym(String s) {
	         return Symbol.symbol(s);
	        }
	    
  private final parser parser;

  /** Constructor */
  CUP$parser$actions(parser parser) {
    this.parser = parser;
  }

  /** Method with the actual generated action code. */
  public final java_cup.runtime.Symbol CUP$parser$do_action(
    int                        CUP$parser$act_num,
    java_cup.runtime.lr_parser CUP$parser$parser,
    java.util.Stack            CUP$parser$stack,
    int                        CUP$parser$top)
    throws java.lang.Exception
    {
      /* Symbol object for return from actions */
      java_cup.runtime.Symbol CUP$parser$result;

      /* select the action based on the action number */
      switch (CUP$parser$act_num)
        {
          /*. . . . . . . . . . . . . . . . . . . .*/
          case 109: // expr ::= BOOLNOT expr 
            {
              Object RESULT = null;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.NOT, (ASExpression)e, null); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 108: // expr ::= NULL 
            {
              Object RESULT = null;
		int fleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int fright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object f = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASNullConstant(fleft); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 107: // expr ::= FALSE 
            {
              Object RESULT = null;
		int fleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int fright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object f = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASBoolConstant(fleft,false); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 106: // expr ::= TRUE 
            {
              Object RESULT = null;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASBoolConstant(tleft,true); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 105: // expr ::= INT 
            {
              Object RESULT = null;
		int nleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int nright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		String n = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 if (n.equals("2147483648"))
		RESULT = new ASOpExpression(nleft, ASOpExpression.LSHIFT, new ASIntConstant(nleft, 1), new ASIntConstant(nleft, 31));
	   else
		RESULT = new ASIntConstant(nleft, Integer.parseInt(n)); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 104: // expr ::= expr ARROW ID 
            {
              Object RESULT = null;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		String i = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASLvalExpression(eleft, new ASFieldLval(eleft, new ASDerefLval(eleft, (ASExpression)e), Symbol.symbol(i))); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 103: // expr ::= expr DOT ID 
            {
              Object RESULT = null;
		int lleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int lright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object l = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		String i = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 ASLval v = parser.make_lval((ASExpression)l);
	   RESULT = new ASLvalExpression(lleft, new ASFieldLval(lleft, v, Symbol.symbol(i))); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 102: // expr ::= expr LBRACKET expr RBRACKET 
            {
              Object RESULT = null;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object i = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		 RESULT = new ASLvalExpression(eleft, new ASDerefLval(eleft,new ASOpExpression(eleft,ASOpExpression.PADD,(ASExpression)e,(ASExpression)i))); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 101: // expr ::= TIMES expr 
            {
              Object RESULT = null;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASLvalExpression(tleft, new ASDerefLval(tleft, (ASExpression)e)); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 100: // expr ::= ID 
            {
              Object RESULT = null;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		String i = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASLvalExpression(ileft, new ASSimpleLval(ileft, Symbol.symbol(i))); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 99: // expr ::= DEC LPAREN expr RPAREN 
            {
              Object RESULT = null;
		int sleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left;
		int sright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).right;
		Object s = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		 RESULT = new ASPointerExpression(sleft, ASPointerExpression.DEC, (ASExpression)e); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 98: // expr ::= INC LPAREN expr RPAREN 
            {
              Object RESULT = null;
		int sleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left;
		int sright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).right;
		Object s = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		 RESULT = new ASPointerExpression(sleft, ASPointerExpression.INC, (ASExpression)e); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 97: // expr ::= SIZE LPAREN expr RPAREN 
            {
              Object RESULT = null;
		int sleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left;
		int sright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).right;
		Object s = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		 RESULT = new ASPointerExpression(sleft, ASPointerExpression.SIZE, (ASExpression)e); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 96: // expr ::= OFFSET LPAREN expr RPAREN 
            {
              Object RESULT = null;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		 RESULT = new ASPointerExpression(oleft, ASPointerExpression.OFFSET, (ASExpression)e); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 95: // expr ::= BAND expr 
            {
              Object RESULT = null;
		int aleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int aright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object a = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 ASLval v = parser.make_lval((ASExpression)e);
	   RESULT = new ASPointerExpression(aleft, ASPointerExpression.AMP, (ASExpression)e); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 94: // expr ::= ALLOC LPAREN expr COMMA type RPAREN 
            {
              Object RESULT = null;
		int aleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).left;
		int aright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).right;
		Object a = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-5)).value;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		 RESULT = new ASPointerExpression(aleft, (ASType)t, (ASExpression)e, null); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 93: // expr ::= ID LPAREN explist RPAREN 
            {
              Object RESULT = null;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).right;
		String i = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		 RESULT = new ASProcedureExpression(ileft, Symbol.symbol(i), (List)e); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 92: // expr ::= ID LPAREN RPAREN 
            {
              Object RESULT = null;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		String i = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		 RESULT = new ASProcedureExpression(ileft, Symbol.symbol(i), new ArrayList()); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 91: // expr ::= expr PNOTEQUAL expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.PNEQ, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 90: // expr ::= expr NOTEQUAL expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.NE, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 89: // expr ::= expr PEQUAL expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.PEQ, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 88: // expr ::= expr EQUAL expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.EQ, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 87: // expr ::= expr GREATERTHANOREQUAL expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.GE, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 86: // expr ::= expr GREATERTHAN expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.GT, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 85: // expr ::= expr LESSTHANOREQUAL expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.LE, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 84: // expr ::= expr LESSTHAN expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.LT, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 83: // expr ::= expr BOOLXOR expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.XOR, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 82: // expr ::= expr BOOLOR expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.OR, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 81: // expr ::= expr RSHIFT expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.RSHIFT, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 80: // expr ::= expr LSHIFT expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.LSHIFT, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 79: // expr ::= expr BXOR expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.BXOR, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 78: // expr ::= expr BOR expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.BOR, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 77: // expr ::= expr BAND expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.BAND, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 76: // expr ::= expr BOOLAND expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.AND, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 75: // expr ::= expr MOD expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.MOD, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 74: // expr ::= expr DIVIDE expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.DIV, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 73: // expr ::= expr TIMES expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.MUL, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 72: // expr ::= expr PMINUS expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.PMINUS, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 71: // expr ::= expr MINUS expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.MINUS, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 70: // expr ::= expr PPLUS expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.PADD, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 69: // expr ::= expr PLUS expr 
            {
              Object RESULT = null;
		int e1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int e1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.PLUS, (ASExpression)e1, (ASExpression)e2); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 68: // expr ::= BNOT expr 
            {
              Object RESULT = null;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.BXOR, (ASExpression)e, new ASIntConstant(eleft, 0xffffffff)); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 67: // expr ::= MINUS expr 
            {
              Object RESULT = null;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASOpExpression(oleft, ASOpExpression.NEG, (ASExpression)e, null); 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 66: // expr ::= LPAREN expr RPAREN 
            {
              Object RESULT = null;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		 RESULT = e; 
              CUP$parser$result = new java_cup.runtime.Symbol(5/*expr*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 65: // assgnstmt ::= expr MODASSIGN expr 
            {
              Object RESULT = null;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object i = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 ASLval v = parser.make_lval((ASExpression)i);
           RESULT =
	   new ASAssignStatement(ileft,(ASLval)v, new ASOpExpression(oleft,ASOpExpression.MOD,
	       new ASLvalExpression(ileft, (ASLval)v), (ASExpression)e));
	
              CUP$parser$result = new java_cup.runtime.Symbol(4/*assgnstmt*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 64: // assgnstmt ::= expr DIVIDEASSIGN expr 
            {
              Object RESULT = null;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object i = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 ASLval v = parser.make_lval((ASExpression)i);
           RESULT =
	   new ASAssignStatement(ileft,(ASLval)v, new ASOpExpression(oleft,ASOpExpression.DIV,
	       new ASLvalExpression(ileft, (ASLval)v), (ASExpression)e));
	
              CUP$parser$result = new java_cup.runtime.Symbol(4/*assgnstmt*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 63: // assgnstmt ::= expr TIMESASSIGN expr 
            {
              Object RESULT = null;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object i = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 ASLval v = parser.make_lval((ASExpression)i);
           RESULT =
	   new ASAssignStatement(ileft,(ASLval)v, new ASOpExpression(oleft,ASOpExpression.MUL,
	       new ASLvalExpression(ileft, (ASLval)v), (ASExpression)e));
	
              CUP$parser$result = new java_cup.runtime.Symbol(4/*assgnstmt*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 62: // assgnstmt ::= expr MINUSASSIGN expr 
            {
              Object RESULT = null;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object i = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 ASLval v = parser.make_lval((ASExpression)i);
           RESULT =
	   new ASAssignStatement(ileft,(ASLval)v, new ASOpExpression(oleft,ASOpExpression.MINUS,
	       new ASLvalExpression(ileft, (ASLval)v), (ASExpression)e));
	
              CUP$parser$result = new java_cup.runtime.Symbol(4/*assgnstmt*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 61: // assgnstmt ::= expr PLUSASSIGN expr 
            {
              Object RESULT = null;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object i = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int oleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int oright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object o = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 ASLval v = parser.make_lval((ASExpression)i);
           RESULT =
	   new ASAssignStatement(ileft,(ASLval)v, new ASOpExpression(oleft,ASOpExpression.PLUS,
	       new ASLvalExpression(ileft, (ASLval)v), (ASExpression)e));
	
              CUP$parser$result = new java_cup.runtime.Symbol(4/*assgnstmt*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 60: // assgnstmt ::= expr ASSIGN expr 
            {
              Object RESULT = null;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object i = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 ASLval v = parser.make_lval((ASExpression)i);
	   RESULT = new ASAssignStatement(ileft, v, (ASExpression)e); 
              CUP$parser$result = new java_cup.runtime.Symbol(4/*assgnstmt*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 59: // control ::= WHILE LPAREN expr RPAREN block 
            {
              Object RESULT = null;
		int wleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left;
		int wright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).right;
		Object w = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-4)).value;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int bleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int bright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object b = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASWhileStatement(wleft, (ASExpression)t, (ASStatement)b); 
              CUP$parser$result = new java_cup.runtime.Symbol(7/*control*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 58: // control ::= FOR LPAREN SEMICOL expr SEMICOL simp RPAREN block 
            {
              Object RESULT = null;
		int fleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-7)).left;
		int fright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-7)).right;
		Object f = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-7)).value;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-4)).value;
		int wleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int wright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object w = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int bleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int bright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object b = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASForStatement(fleft, new ASBlankStatement(fleft), (ASExpression)t, (ASStatement)w, (ASStatement)b); 
              CUP$parser$result = new java_cup.runtime.Symbol(7/*control*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-7)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 57: // control ::= FOR LPAREN SEMICOL expr SEMICOL RPAREN block 
            {
              Object RESULT = null;
		int fleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-6)).left;
		int fright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-6)).right;
		Object f = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-6)).value;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
		int bleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int bright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object b = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASForStatement(fleft, new ASBlankStatement(fleft), (ASExpression)t, new ASBlankStatement(tleft), (ASStatement)b); 
              CUP$parser$result = new java_cup.runtime.Symbol(7/*control*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-6)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 56: // control ::= FOR LPAREN expr ASSIGN expr SEMICOL expr SEMICOL RPAREN block 
            {
              Object RESULT = null;
		int fleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-9)).left;
		int fright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-9)).right;
		Object f = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-9)).value;
		int veleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-7)).left;
		int veright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-7)).right;
		Object ve = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-7)).value;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).right;
		Object i = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-5)).value;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
		int bleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int bright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object b = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 ASLval v = parser.make_lval((ASExpression)ve);
	   ASAssignStatement as = new ASAssignStatement(veleft, v, (ASExpression)i); 
	   RESULT = new ASForStatement(fleft, as, (ASExpression)t, new ASBlankStatement(tleft), (ASStatement)b); 
              CUP$parser$result = new java_cup.runtime.Symbol(7/*control*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-9)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 55: // control ::= FOR LPAREN expr ASSIGN expr SEMICOL expr SEMICOL simp RPAREN block 
            {
              Object RESULT = null;
		int fleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-10)).left;
		int fright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-10)).right;
		Object f = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-10)).value;
		int veleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-8)).left;
		int veright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-8)).right;
		Object ve = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-8)).value;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-6)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-6)).right;
		Object i = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-6)).value;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-4)).value;
		int wleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int wright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object w = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int bleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int bright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object b = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 ASLval v = parser.make_lval((ASExpression)ve);
	   ASAssignStatement as = new ASAssignStatement(veleft, v, (ASExpression)i); 
	   RESULT = new ASForStatement(fleft, as, (ASExpression)t, (ASStatement)w, (ASStatement)b); 
              CUP$parser$result = new java_cup.runtime.Symbol(7/*control*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-10)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 54: // control ::= IF LPAREN expr RPAREN block 
            {
              Object RESULT = null;
		int i1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left;
		int i1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).right;
		Object i1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-4)).value;
		int t1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int t1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object t1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int a1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int a1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object a1 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASIfStatement(i1left,(ASExpression)t1, (ASStatement)a1); 
              CUP$parser$result = new java_cup.runtime.Symbol(7/*control*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 53: // control ::= IF LPAREN expr RPAREN block ELSE block 
            {
              Object RESULT = null;
		int i2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-6)).left;
		int i2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-6)).right;
		Object i2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-6)).value;
		int t2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left;
		int t2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).right;
		Object t2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-4)).value;
		int a2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int a2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object a2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int b2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int b2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object b2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASIfStatement(i2left,(ASExpression)t2, (ASStatement)a2, (ASStatement)b2);  
              CUP$parser$result = new java_cup.runtime.Symbol(7/*control*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-6)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 52: // simp ::= CONTINUE 
            {
              Object RESULT = null;
		int cleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int cright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object c = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASContinueStatement(cleft); 
              CUP$parser$result = new java_cup.runtime.Symbol(6/*simp*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 51: // simp ::= BREAK 
            {
              Object RESULT = null;
		int bleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int bright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object b = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASBreakStatement(bleft); 
              CUP$parser$result = new java_cup.runtime.Symbol(6/*simp*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 50: // simp ::= RETURN 
            {
              Object RESULT = null;
		int rleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int rright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object r = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASReturnStatement(rleft, null); 
              CUP$parser$result = new java_cup.runtime.Symbol(6/*simp*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 49: // simp ::= RETURN expr 
            {
              Object RESULT = null;
		int rsleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int rsright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object rs = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASReturnStatement(rsleft, (ASExpression)e); 
              CUP$parser$result = new java_cup.runtime.Symbol(6/*simp*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 48: // simp ::= expr 
            {
              Object RESULT = null;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASExpressionStatement(eleft, (ASExpression)e); 
              CUP$parser$result = new java_cup.runtime.Symbol(6/*simp*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 47: // simp ::= assgnstmt 
            {
              Object RESULT = null;
		int sleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int sright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object s = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = s; 
              CUP$parser$result = new java_cup.runtime.Symbol(6/*simp*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 46: // explist ::= expr COMMA explist 
            {
              Object RESULT = null;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int e2left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int e2right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e2 = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 List elist = new ArrayList(); elist.add(e); elist.addAll((List)e2); RESULT = elist; 
              CUP$parser$result = new java_cup.runtime.Symbol(20/*explist*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 45: // explist ::= expr 
            {
              Object RESULT = null;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object e = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 List elist = new ArrayList(); elist.add(e); RESULT = elist; 
              CUP$parser$result = new java_cup.runtime.Symbol(20/*explist*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 44: // stmt ::= SEMICOL 
            {
              Object RESULT = null;
		int sleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int sright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object s = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASBlankStatement(sleft); 
              CUP$parser$result = new java_cup.runtime.Symbol(3/*stmt*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 43: // stmt ::= control 
            {
              Object RESULT = null;
		int cleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int cright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object c = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = (ASStatement)c; 
              CUP$parser$result = new java_cup.runtime.Symbol(3/*stmt*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 42: // stmt ::= simp SEMICOL 
            {
              Object RESULT = null;
		int sleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int sright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object s = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		 RESULT = (ASStatement)s; 
              CUP$parser$result = new java_cup.runtime.Symbol(3/*stmt*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 41: // stmtseq ::= stmt stmtseq 
            {
              Object RESULT = null;
		int sleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int sright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object s = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int ssleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int ssright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object ss = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 ASStatementList tail = new ASStatementList(sleft, (ASStatement)ss);
           RESULT = tail.prepend((ASStatement)s); 
              CUP$parser$result = new java_cup.runtime.Symbol(2/*stmtseq*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 40: // stmtseq ::= stmt 
            {
              Object RESULT = null;
		int sleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int sright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object s = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASStatementList(sleft, (ASStatement)s); 
              CUP$parser$result = new java_cup.runtime.Symbol(2/*stmtseq*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 39: // block ::= LBRACE RBRACE 
            {
              Object RESULT = null;
		int lleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int lright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object l = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		 RESULT = new ASBlock(lleft, new ASBlankStatement(lleft)); 
              CUP$parser$result = new java_cup.runtime.Symbol(10/*block*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 38: // block ::= LBRACE stmtseq RBRACE 
            {
              Object RESULT = null;
		int lleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int lright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object l = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int ssleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int ssright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object ss = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int rleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int rright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object r = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASBlock(ssleft, (ASStatement) ss); 
              CUP$parser$result = new java_cup.runtime.Symbol(10/*block*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 37: // block ::= stmt 
            {
              Object RESULT = null;
		int sleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int sright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object s = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASBlock(sleft, (ASStatement) s); 
              CUP$parser$result = new java_cup.runtime.Symbol(10/*block*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 36: // type ::= type TIMES 
            {
              Object RESULT = null;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		 RESULT = new ASPointerType(tleft, (ASType)t); 
              CUP$parser$result = new java_cup.runtime.Symbol(11/*type*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 35: // type ::= ID 
            {
              Object RESULT = null;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		String i = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASUserType(ileft, Symbol.symbol(i)); 
              CUP$parser$result = new java_cup.runtime.Symbol(11/*type*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 34: // type ::= DBOOL 
            {
              Object RESULT = null;
		int dleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int dright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object d = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASPrimitiveType(dleft, Symbol.symbol("bool"), 1); 
              CUP$parser$result = new java_cup.runtime.Symbol(11/*type*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 33: // type ::= DINT 
            {
              Object RESULT = null;
		int dleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int dright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object d = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASPrimitiveType(dleft, Symbol.symbol("int"), 4); 
              CUP$parser$result = new java_cup.runtime.Symbol(11/*type*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 32: // decl ::= ID 
            {
              Object RESULT = null;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		String i = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASDeclarationVariable(ileft, Symbol.symbol(i), null); 
              CUP$parser$result = new java_cup.runtime.Symbol(8/*decl*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 31: // declseq ::= decl COMMA declseq 
            {
              Object RESULT = null;
		int dleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int dright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object d = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int dsleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int dsright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object ds = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = ((ASDeclarationList)ds).prepend((ASDeclaration)d); 
              CUP$parser$result = new java_cup.runtime.Symbol(9/*declseq*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 30: // declseq ::= decl 
            {
              Object RESULT = null;
		int dleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int dright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object d = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASDeclarationList(dleft,(ASDeclaration)d); 
              CUP$parser$result = new java_cup.runtime.Symbol(9/*declseq*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 29: // declstart ::= VAR decl COMMA declseq COLON type SEMICOL 
            {
              Object RESULT = null;
		int vleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-6)).left;
		int vright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-6)).right;
		Object v = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-6)).value;
		int dleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).left;
		int dright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).right;
		Object d = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-5)).value;
		int dsleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left;
		int dsright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).right;
		Object ds = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		 ((ASDeclaration)d).getTypeInfo().setASType((ASType)t);
	   ((ASDeclarationList)ds).setType((ASType)t);
	   RESULT = ((ASDeclarationList)ds).prepend((ASDeclaration)d); 
              CUP$parser$result = new java_cup.runtime.Symbol(13/*declstart*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-6)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 28: // declstart ::= VAR decl COLON type SEMICOL 
            {
              Object RESULT = null;
		int vleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left;
		int vright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).right;
		Object v = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-4)).value;
		int dleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left;
		int dright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).right;
		Object d = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		 ((ASDeclaration)d).getTypeInfo().setASType((ASType)t);
	   RESULT = new ASDeclarationList(vleft, (ASDeclaration)d); 
              CUP$parser$result = new java_cup.runtime.Symbol(13/*declstart*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 27: // declblock ::= declstart declblock 
            {
              Object RESULT = null;
		int dleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int dright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object d = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int dsleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int dsright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object ds = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 ASDeclarationList r = (ASDeclarationList) ds;
	   ASDeclarationList l = (ASDeclarationList) d; 
	   RESULT = l.join(r);  
              CUP$parser$result = new java_cup.runtime.Symbol(12/*declblock*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 26: // declblock ::= declstart 
            {
              Object RESULT = null;
		int dleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int dright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object d = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = d; 
              CUP$parser$result = new java_cup.runtime.Symbol(12/*declblock*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 25: // body ::= LBRACE RBRACE 
            {
              Object RESULT = null;
		int lleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int lright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object l = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		 RESULT = new ASBlock(lleft, null, new ASStatementList(lleft)); 
              CUP$parser$result = new java_cup.runtime.Symbol(16/*body*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 24: // body ::= LBRACE declblock RBRACE 
            {
              Object RESULT = null;
		int lleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int lright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object l = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int dsleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int dsright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object ds = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		 RESULT = new ASBlock(lleft, (ASDeclaration)ds, null); 
              CUP$parser$result = new java_cup.runtime.Symbol(16/*body*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 23: // body ::= LBRACE declblock stmtseq RBRACE 
            {
              Object RESULT = null;
		int lleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left;
		int lright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).right;
		Object l = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
		int dsleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int dsright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object ds = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int ssleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int ssright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object ss = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		 RESULT = new ASBlock(lleft, (ASDeclaration)ds, (ASStatement)ss); 
              CUP$parser$result = new java_cup.runtime.Symbol(16/*body*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 22: // body ::= LBRACE stmtseq RBRACE 
            {
              Object RESULT = null;
		int lleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int lright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object l = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int ssleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int ssright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object ss = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		 RESULT = new ASBlock(lleft, (ASStatement)ss); 
              CUP$parser$result = new java_cup.runtime.Symbol(16/*body*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 21: // arg ::= ID COLON type 
            {
              Object RESULT = null;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		String i = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new Pair(Symbol.symbol(i), t); 
              CUP$parser$result = new java_cup.runtime.Symbol(18/*arg*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 20: // arglist ::= arg COMMA arglist 
            {
              Object RESULT = null;
		int aleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int aright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object a = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int lleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int lright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object l = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 List ls = new ArrayList(); ls.add(a); ls.addAll((List)l); RESULT = ls; 
              CUP$parser$result = new java_cup.runtime.Symbol(17/*arglist*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 19: // arglist ::= arg 
            {
              Object RESULT = null;
		int aleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int aright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object a = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 List l = new ArrayList(); l.add(a); RESULT = l; 
              CUP$parser$result = new java_cup.runtime.Symbol(17/*arglist*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 18: // function ::= VOID ID LPAREN RPAREN FOREIGN 
            {
              Object RESULT = null;
		int vleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left;
		int vright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).right;
		Object v = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-4)).value;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).right;
		String i = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
		 RESULT = new ASDeclarationProc(vleft, null, Symbol.symbol(i), new ArrayList(), null); 
              CUP$parser$result = new java_cup.runtime.Symbol(15/*function*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 17: // function ::= VOID ID LPAREN RPAREN body 
            {
              Object RESULT = null;
		int vleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left;
		int vright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).right;
		Object v = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-4)).value;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).right;
		String i = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
		int bleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int bright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object b = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASDeclarationProc(vleft, null, Symbol.symbol(i), new ArrayList(), (ASBlock)b); 
              CUP$parser$result = new java_cup.runtime.Symbol(15/*function*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 16: // function ::= type ID LPAREN RPAREN FOREIGN 
            {
              Object RESULT = null;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-4)).value;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).right;
		String i = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
		 RESULT = new ASDeclarationProc(tleft, (ASType)t, Symbol.symbol(i), new ArrayList(), null); 
              CUP$parser$result = new java_cup.runtime.Symbol(15/*function*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 15: // function ::= type ID LPAREN RPAREN body 
            {
              Object RESULT = null;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-4)).value;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).right;
		String i = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
		int bleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int bright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object b = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASDeclarationProc(tleft, (ASType)t, Symbol.symbol(i), new ArrayList(), (ASBlock)b); 
              CUP$parser$result = new java_cup.runtime.Symbol(15/*function*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 14: // function ::= VOID ID LPAREN arglist RPAREN FOREIGN 
            {
              Object RESULT = null;
		int vleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).left;
		int vright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).right;
		Object v = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-5)).value;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).right;
		String i = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-4)).value;
		int lleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int lright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object l = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		 RESULT = new ASDeclarationProc(vleft, null, Symbol.symbol(i), (List)l, null); 
              CUP$parser$result = new java_cup.runtime.Symbol(15/*function*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 13: // function ::= VOID ID LPAREN arglist RPAREN body 
            {
              Object RESULT = null;
		int vleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).left;
		int vright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).right;
		Object v = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-5)).value;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).right;
		String i = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-4)).value;
		int lleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int lright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object l = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int bleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int bright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object b = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASDeclarationProc(vleft, null, Symbol.symbol(i), (List)l, (ASBlock)b); 
              CUP$parser$result = new java_cup.runtime.Symbol(15/*function*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 12: // function ::= type ID LPAREN arglist RPAREN FOREIGN 
            {
              Object RESULT = null;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-5)).value;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).right;
		String i = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-4)).value;
		int lleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int lright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object l = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		 RESULT = new ASDeclarationProc(tleft, (ASType)t, Symbol.symbol(i), (List)l, null); 
              CUP$parser$result = new java_cup.runtime.Symbol(15/*function*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 11: // function ::= type ID LPAREN arglist RPAREN body 
            {
              Object RESULT = null;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-5)).value;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).right;
		String i = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-4)).value;
		int lleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int lright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object l = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int bleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int bright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object b = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASDeclarationProc(tleft, (ASType)t, Symbol.symbol(i), (List)l, (ASBlock)b); 
              CUP$parser$result = new java_cup.runtime.Symbol(15/*function*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 10: // structtype ::= lonestructtype SEMICOL structtype 
            {
              Object RESULT = null;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int stleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int stright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object st = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 List l = new ArrayList(); 
	   l.addAll(((ASRecordType)t).getFields());	
	   l.addAll(((ASRecordType)st).getFields());
	   RESULT = new ASRecordType(tleft,l);
	
              CUP$parser$result = new java_cup.runtime.Symbol(14/*structtype*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 9: // structtype ::= lonestructtype SEMICOL 
            {
              Object RESULT = null;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		 RESULT = t; 
              CUP$parser$result = new java_cup.runtime.Symbol(14/*structtype*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 8: // structtype ::= lonestructtype 
            {
              Object RESULT = null;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = t; 
              CUP$parser$result = new java_cup.runtime.Symbol(14/*structtype*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 7: // lonestructtype ::= ID COLON type 
            {
              Object RESULT = null;
		int dleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int dright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		String d = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 List l = new ArrayList(); l.add(new Pair(Symbol.symbol(d),t));
           RESULT = new ASRecordType(dleft,l); 
              CUP$parser$result = new java_cup.runtime.Symbol(23/*lonestructtype*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 6: // struct ::= STRUCT ID LBRACE structtype RBRACE SEMICOL 
            {
              Object RESULT = null;
		int sleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).left;
		int sright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).right;
		Object s = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-5)).value;
		int ileft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left;
		int iright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).right;
		String i = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-4)).value;
		int stleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int stright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		Object st = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		 ((ASType)st).setTypeName(i);
	   RESULT = new ASDeclarationList(sleft, new ASDeclarationType(sleft, Symbol.symbol(i), (ASType)st)); 
              CUP$parser$result = new java_cup.runtime.Symbol(19/*struct*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 5: // toplevelseq ::= toplevel toplevelseq 
            {
              Object RESULT = null;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		int sleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int sright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object s = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = ((ASDeclarationList)t).join((ASDeclarationList)s); 
              CUP$parser$result = new java_cup.runtime.Symbol(22/*toplevelseq*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 4: // toplevelseq ::= toplevel 
            {
              Object RESULT = null;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = t; 
              CUP$parser$result = new java_cup.runtime.Symbol(22/*toplevelseq*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 3: // toplevel ::= function 
            {
              Object RESULT = null;
		int fleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int fright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object f = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = new ASDeclarationList(fleft, (ASDeclaration)f); 
              CUP$parser$result = new java_cup.runtime.Symbol(21/*toplevel*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 2: // toplevel ::= struct 
            {
              Object RESULT = null;
		int sleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int sright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object s = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 RESULT = s; 
              CUP$parser$result = new java_cup.runtime.Symbol(21/*toplevel*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 1: // program ::= toplevelseq 
            {
              Object RESULT = null;
		int tleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
		int tright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
		Object t = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
		 parser.parseResult = (ASDeclarationList)t; 
              CUP$parser$result = new java_cup.runtime.Symbol(1/*program*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 0: // $START ::= program EOF 
            {
              Object RESULT = null;
		int start_valleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int start_valright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		Object start_val = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		RESULT = start_val;
              CUP$parser$result = new java_cup.runtime.Symbol(0/*$START*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
            }
          /* ACCEPT */
          CUP$parser$parser.done_parsing();
          return CUP$parser$result;

          /* . . . . . .*/
          default:
            throw new Exception(
               "Invalid action number found in internal parse table");

        }
    }
}

