
//----------------------------------------------------
// The following code was generated by CUP v0.11a beta 20060608
// Fri Jul 08 11:34:18 BRT 2016
//----------------------------------------------------

package compiler.syntax;

import java_cup.runtime.*;
import java.util.*;
import compiler.tree.*;
import compiler.tree.expressao.*;
import compiler.tree.comando.*;
import java_cup.runtime.Scanner.*;

/** CUP v0.11a beta 20060608 generated parser.
  * @version Fri Jul 08 11:34:18 BRT 2016
  */
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);}

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

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

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

  /** Parse-action table. */
  protected static final short[][] _action_table = 
    unpackFromStrings(new String[] {
    "\000\174\000\010\002\uffff\004\uffff\050\uffff\001\002\000" +
    "\010\002\012\004\007\050\005\001\002\000\004\004\160" +
    "\001\002\000\010\002\ufffe\004\ufffe\050\ufffe\001\002\000" +
    "\010\023\ufff9\030\154\032\ufff9\001\002\000\010\002\ufffd" +
    "\004\ufffd\050\ufffd\001\002\000\004\032\041\001\002\000" +
    "\004\002\000\001\002\000\004\026\016\001\002\000\010" +
    "\002\001\004\001\050\001\001\002\000\010\002\ufff4\004" +
    "\ufff4\050\ufff4\001\002\000\022\004\uffeb\026\uffeb\027\uffeb" +
    "\037\uffeb\041\uffeb\042\uffeb\047\uffeb\051\uffeb\001\002\000" +
    "\022\004\007\026\016\027\036\037\033\041\021\042\026" +
    "\047\031\051\030\001\002\000\024\004\uffe3\026\uffe3\027" +
    "\uffe3\037\uffe3\040\uffe3\041\uffe3\042\uffe3\047\uffe3\051\uffe3" +
    "\001\002\000\004\024\150\001\002\000\024\004\uffe6\026" +
    "\uffe6\027\uffe6\037\uffe6\040\uffe6\041\uffe6\042\uffe6\047\uffe6" +
    "\051\uffe6\001\002\000\024\004\uffe4\026\uffe4\027\uffe4\037" +
    "\uffe4\040\uffe4\041\uffe4\042\uffe4\047\uffe4\051\uffe4\001\002" +
    "\000\024\004\uffe9\026\uffe9\027\uffe9\037\uffe9\040\uffe9\041" +
    "\uffe9\042\uffe9\047\uffe9\051\uffe9\001\002\000\024\004\uffe7" +
    "\026\uffe7\027\uffe7\037\uffe7\040\uffe7\041\uffe7\042\uffe7\047" +
    "\uffe7\051\uffe7\001\002\000\022\004\061\014\053\022\060" +
    "\024\056\033\051\034\055\035\057\036\052\001\002\000" +
    "\024\004\uffe8\026\uffe8\027\uffe8\037\uffe8\040\uffe8\041\uffe8" +
    "\042\uffe8\047\uffe8\051\uffe8\001\002\000\004\024\142\001" +
    "\002\000\004\004\140\001\002\000\024\004\uffe5\026\uffe5" +
    "\027\uffe5\037\uffe5\040\uffe5\041\uffe5\042\uffe5\047\uffe5\051" +
    "\uffe5\001\002\000\004\024\131\001\002\000\024\004\uffea" +
    "\026\uffea\027\uffea\037\uffea\040\uffea\041\uffea\042\uffea\047" +
    "\uffea\051\uffea\001\002\000\006\023\040\032\041\001\002" +
    "\000\030\002\uffed\004\uffed\026\uffed\027\uffed\037\uffed\040" +
    "\uffed\041\uffed\042\uffed\047\uffed\050\uffed\051\uffed\001\002" +
    "\000\022\004\uffec\026\uffec\027\uffec\037\uffec\041\uffec\042" +
    "\uffec\047\uffec\051\uffec\001\002\000\022\004\061\014\053" +
    "\022\060\024\056\033\051\034\055\035\057\036\052\001" +
    "\002\000\012\043\044\044\042\045\046\046\045\001\002" +
    "\000\012\025\ufff6\026\ufff6\030\ufff6\031\ufff6\001\002\000" +
    "\004\031\047\001\002\000\012\025\ufff8\026\ufff8\030\ufff8" +
    "\031\ufff8\001\002\000\012\025\ufff5\026\ufff5\030\ufff5\031" +
    "\ufff5\001\002\000\012\025\ufff7\026\ufff7\030\ufff7\031\ufff7" +
    "\001\002\000\030\002\ufffc\004\ufffc\026\ufffc\027\ufffc\037" +
    "\ufffc\040\ufffc\041\ufffc\042\ufffc\047\ufffc\050\ufffc\051\ufffc" +
    "\001\002\000\042\005\uffc9\006\uffc9\007\uffc9\010\uffc9\011" +
    "\uffc9\012\uffc9\013\uffc9\014\uffc9\015\uffc9\016\uffc9\017\uffc9" +
    "\020\uffc9\021\uffc9\025\uffc9\030\uffc9\031\uffc9\001\002\000" +
    "\042\005\uffc5\006\uffc5\007\uffc5\010\uffc5\011\uffc5\012\uffc5" +
    "\013\uffc5\014\uffc5\015\uffc5\016\uffc5\017\uffc5\020\uffc5\021" +
    "\uffc5\025\uffc5\030\uffc5\031\uffc5\001\002\000\042\005\uffc2" +
    "\006\uffc2\007\uffc2\010\uffc2\011\uffc2\012\uffc2\013\uffc2\014" +
    "\uffc2\015\uffc2\016\uffc2\017\uffc2\020\uffc2\021\uffc2\025\uffc2" +
    "\030\uffc2\031\uffc2\001\002\000\022\004\061\014\053\022" +
    "\060\024\056\033\051\034\055\035\057\036\052\001\002" +
    "\000\036\005\074\006\070\007\077\010\073\011\101\012" +
    "\067\013\102\014\075\015\072\016\076\017\071\020\066" +
    "\021\103\031\127\001\002\000\042\005\uffc3\006\uffc3\007" +
    "\uffc3\010\uffc3\011\uffc3\012\uffc3\013\uffc3\014\uffc3\015\uffc3" +
    "\016\uffc3\017\uffc3\020\uffc3\021\uffc3\025\uffc3\030\uffc3\031" +
    "\uffc3\001\002\000\022\004\061\014\053\022\060\024\056" +
    "\033\051\034\055\035\057\036\052\001\002\000\042\005" +
    "\uffc4\006\uffc4\007\uffc4\010\uffc4\011\uffc4\012\uffc4\013\uffc4" +
    "\014\uffc4\015\uffc4\016\uffc4\017\uffc4\020\uffc4\021\uffc4\025" +
    "\uffc4\030\uffc4\031\uffc4\001\002\000\022\004\061\014\053" +
    "\022\060\024\056\033\051\034\055\035\057\036\052\001" +
    "\002\000\044\005\uffc1\006\uffc1\007\uffc1\010\uffc1\011\uffc1" +
    "\012\uffc1\013\uffc1\014\uffc1\015\uffc1\016\uffc1\017\uffc1\020" +
    "\uffc1\021\uffc1\024\063\025\uffc1\030\uffc1\031\uffc1\001\002" +
    "\000\042\005\uffc0\006\uffc0\007\uffc0\010\uffc0\011\uffc0\012" +
    "\uffc0\013\uffc0\014\uffc0\015\uffc0\016\uffc0\017\uffc0\020\uffc0" +
    "\021\uffc0\025\uffc0\030\uffc0\031\uffc0\001\002\000\024\004" +
    "\061\014\053\022\060\024\056\025\uffd9\033\051\034\055" +
    "\035\057\036\052\001\002\000\004\025\123\001\002\000" +
    "\040\005\074\006\070\007\077\010\073\011\101\012\067" +
    "\013\102\014\075\015\072\016\076\017\071\020\066\021" +
    "\103\025\uffd7\030\uffd7\001\002\000\022\004\061\014\053" +
    "\022\060\024\056\033\051\034\055\035\057\036\052\001" +
    "\002\000\022\004\061\014\053\022\060\024\056\033\051" +
    "\034\055\035\057\036\052\001\002\000\022\004\061\014" +
    "\053\022\060\024\056\033\051\034\055\035\057\036\052" +
    "\001\002\000\022\004\061\014\053\022\060\024\056\033" +
    "\051\034\055\035\057\036\052\001\002\000\022\004\061" +
    "\014\053\022\060\024\056\033\051\034\055\035\057\036" +
    "\052\001\002\000\022\004\061\014\053\022\060\024\056" +
    "\033\051\034\055\035\057\036\052\001\002\000\022\004" +
    "\061\014\053\022\060\024\056\033\051\034\055\035\057" +
    "\036\052\001\002\000\022\004\061\014\053\022\060\024" +
    "\056\033\051\034\055\035\057\036\052\001\002\000\022" +
    "\004\061\014\053\022\060\024\056\033\051\034\055\035" +
    "\057\036\052\001\002\000\022\004\061\014\053\022\060" +
    "\024\056\033\051\034\055\035\057\036\052\001\002\000" +
    "\006\025\uffda\030\107\001\002\000\022\004\061\014\053" +
    "\022\060\024\056\033\051\034\055\035\057\036\052\001" +
    "\002\000\022\004\061\014\053\022\060\024\056\033\051" +
    "\034\055\035\057\036\052\001\002\000\022\004\061\014" +
    "\053\022\060\024\056\033\051\034\055\035\057\036\052" +
    "\001\002\000\042\005\074\006\070\007\077\010\073\011" +
    "\101\012\067\013\102\014\075\015\072\016\076\017\071" +
    "\020\uffd0\021\uffd0\025\uffd0\030\uffd0\031\uffd0\001\002\000" +
    "\042\005\uffd6\006\uffd6\007\uffd6\010\uffd6\011\uffd6\012\uffd6" +
    "\013\uffd6\014\uffd6\015\072\016\076\017\071\020\uffd6\021" +
    "\uffd6\025\uffd6\030\uffd6\031\uffd6\001\002\000\042\005\uffcb" +
    "\006\uffcb\007\uffcb\010\uffcb\011\uffcb\012\uffcb\013\102\014" +
    "\075\015\072\016\076\017\071\020\uffcb\021\uffcb\025\uffcb" +
    "\030\uffcb\031\uffcb\001\002\000\022\004\061\014\053\022" +
    "\060\024\056\033\051\034\055\035\057\036\052\001\002" +
    "\000\040\005\074\006\070\007\077\010\073\011\101\012" +
    "\067\013\102\014\075\015\072\016\076\017\071\020\066" +
    "\021\103\025\uffd8\030\uffd8\001\002\000\042\005\uffca\006" +
    "\uffca\007\uffca\010\uffca\011\uffca\012\uffca\013\102\014\075" +
    "\015\072\016\076\017\071\020\uffca\021\uffca\025\uffca\030" +
    "\uffca\031\uffca\001\002\000\042\005\uffd3\006\uffd3\007\uffd3" +
    "\010\uffd3\011\uffd3\012\uffd3\013\uffd3\014\uffd3\015\uffd3\016" +
    "\uffd3\017\uffd3\020\uffd3\021\uffd3\025\uffd3\030\uffd3\031\uffd3" +
    "\001\002\000\042\005\uffd5\006\uffd5\007\uffd5\010\uffd5\011" +
    "\uffd5\012\uffd5\013\uffd5\014\uffd5\015\072\016\076\017\071" +
    "\020\uffd5\021\uffd5\025\uffd5\030\uffd5\031\uffd5\001\002\000" +
    "\042\005\uffcf\006\uffcf\007\uffcf\010\uffcf\011\uffcf\012\uffcf" +
    "\013\102\014\075\015\072\016\076\017\071\020\uffcf\021" +
    "\uffcf\025\uffcf\030\uffcf\031\uffcf\001\002\000\042\005\uffcd" +
    "\006\uffcd\007\uffcd\010\uffcd\011\uffcd\012\uffcd\013\102\014" +
    "\075\015\072\016\076\017\071\020\uffcd\021\uffcd\025\uffcd" +
    "\030\uffcd\031\uffcd\001\002\000\042\005\uffd4\006\uffd4\007" +
    "\uffd4\010\uffd4\011\uffd4\012\uffd4\013\uffd4\014\uffd4\015\uffd4" +
    "\016\uffd4\017\uffd4\020\uffd4\021\uffd4\025\uffd4\030\uffd4\031" +
    "\uffd4\001\002\000\042\005\uffd2\006\uffd2\007\uffd2\010\uffd2" +
    "\011\uffd2\012\uffd2\013\uffd2\014\uffd2\015\uffd2\016\uffd2\017" +
    "\uffd2\020\uffd2\021\uffd2\025\uffd2\030\uffd2\031\uffd2\001\002" +
    "\000\042\005\uffce\006\uffce\007\uffce\010\uffce\011\uffce\012" +
    "\uffce\013\102\014\075\015\072\016\076\017\071\020\uffce" +
    "\021\uffce\025\uffce\030\uffce\031\uffce\001\002\000\042\005" +
    "\uffcc\006\uffcc\007\uffcc\010\uffcc\011\uffcc\012\uffcc\013\102" +
    "\014\075\015\072\016\076\017\071\020\uffcc\021\uffcc\025" +
    "\uffcc\030\uffcc\031\uffcc\001\002\000\042\005\074\006\070" +
    "\007\077\010\073\011\101\012\067\013\102\014\075\015" +
    "\072\016\076\017\071\020\uffd1\021\uffd1\025\uffd1\030\uffd1" +
    "\031\uffd1\001\002\000\042\005\uffdb\006\uffdb\007\uffdb\010" +
    "\uffdb\011\uffdb\012\uffdb\013\uffdb\014\uffdb\015\uffdb\016\uffdb" +
    "\017\uffdb\020\uffdb\021\uffdb\025\uffdb\030\uffdb\031\uffdb\001" +
    "\002\000\042\005\uffc7\006\uffc7\007\uffc7\010\uffc7\011\uffc7" +
    "\012\uffc7\013\uffc7\014\uffc7\015\uffc7\016\uffc7\017\uffc7\020" +
    "\uffc7\021\uffc7\025\uffc7\030\uffc7\031\uffc7\001\002\000\036" +
    "\005\074\006\070\007\077\010\073\011\101\012\067\013" +
    "\102\014\075\015\072\016\076\017\071\020\066\021\103" +
    "\025\126\001\002\000\042\005\uffc8\006\uffc8\007\uffc8\010" +
    "\uffc8\011\uffc8\012\uffc8\013\uffc8\014\uffc8\015\uffc8\016\uffc8" +
    "\017\uffc8\020\uffc8\021\uffc8\025\uffc8\030\uffc8\031\uffc8\001" +
    "\002\000\024\004\uffe2\026\uffe2\027\uffe2\037\uffe2\040\uffe2" +
    "\041\uffe2\042\uffe2\047\uffe2\051\uffe2\001\002\000\042\005" +
    "\uffc6\006\uffc6\007\uffc6\010\uffc6\011\uffc6\012\uffc6\013\uffc6" +
    "\014\uffc6\015\uffc6\016\uffc6\017\uffc6\020\uffc6\021\uffc6\025" +
    "\uffc6\030\uffc6\031\uffc6\001\002\000\022\004\061\014\053" +
    "\022\060\024\056\033\051\034\055\035\057\036\052\001" +
    "\002\000\036\005\074\006\070\007\077\010\073\011\101" +
    "\012\067\013\102\014\075\015\072\016\076\017\071\020" +
    "\066\021\103\025\133\001\002\000\020\004\007\026\016" +
    "\037\033\041\021\042\026\047\031\051\030\001\002\000" +
    "\024\004\uffdf\026\uffdf\027\uffdf\037\uffdf\040\135\041\uffdf" +
    "\042\uffdf\047\uffdf\051\uffdf\001\002\000\020\004\007\026" +
    "\016\037\033\041\021\042\026\047\031\051\030\001\002" +
    "\000\024\004\uffe0\026\uffe0\027\uffe0\037\uffe0\040\uffe0\041" +
    "\uffe0\042\uffe0\047\uffe0\051\uffe0\001\002\000\004\031\141" +
    "\001\002\000\004\024\063\001\002\000\024\004\uffdd\026" +
    "\uffdd\027\uffdd\037\uffdd\040\uffdd\041\uffdd\042\uffdd\047\uffdd" +
    "\051\uffdd\001\002\000\022\004\061\014\053\022\060\024" +
    "\056\033\051\034\055\035\057\036\052\001\002\000\036" +
    "\005\074\006\070\007\077\010\073\011\101\012\067\013" +
    "\102\014\075\015\072\016\076\017\071\020\066\021\103" +
    "\025\144\001\002\000\004\031\145\001\002\000\024\004" +
    "\uffde\026\uffde\027\uffde\037\uffde\040\uffde\041\uffde\042\uffde" +
    "\047\uffde\051\uffde\001\002\000\036\005\074\006\070\007" +
    "\077\010\073\011\101\012\067\013\102\014\075\015\072" +
    "\016\076\017\071\020\066\021\103\031\147\001\002\000" +
    "\024\004\uffdc\026\uffdc\027\uffdc\037\uffdc\040\uffdc\041\uffdc" +
    "\042\uffdc\047\uffdc\051\uffdc\001\002\000\022\004\061\014" +
    "\053\022\060\024\056\033\051\034\055\035\057\036\052" +
    "\001\002\000\036\005\074\006\070\007\077\010\073\011" +
    "\101\012\067\013\102\014\075\015\072\016\076\017\071" +
    "\020\066\021\103\025\152\001\002\000\020\004\007\026" +
    "\016\037\033\041\021\042\026\047\031\051\030\001\002" +
    "\000\024\004\uffe1\026\uffe1\027\uffe1\037\uffe1\040\uffe1\041" +
    "\uffe1\042\uffe1\047\uffe1\051\uffe1\001\002\000\004\004\156" +
    "\001\002\000\006\023\ufffb\032\ufffb\001\002\000\010\023" +
    "\ufff9\030\154\032\ufff9\001\002\000\006\023\ufffa\032\ufffa" +
    "\001\002\000\004\024\161\001\002\000\006\004\162\025" +
    "\ufff0\001\002\000\004\032\167\001\002\000\004\025\164" +
    "\001\002\000\006\026\ufff2\032\165\001\002\000\012\043" +
    "\044\044\042\045\046\046\045\001\002\000\004\026\ufff3" +
    "\001\002\000\012\043\044\044\042\045\046\046\045\001" +
    "\002\000\006\025\uffee\030\172\001\002\000\004\025\ufff1" +
    "\001\002\000\004\004\173\001\002\000\004\032\174\001" +
    "\002\000\012\043\044\044\042\045\046\046\045\001\002" +
    "\000\006\025\uffee\030\172\001\002\000\004\025\uffef\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\174\000\004\002\003\001\001\000\014\003\013\004" +
    "\005\005\010\010\007\011\012\001\001\000\002\001\001" +
    "\000\002\001\001\000\004\006\154\001\001\000\002\001" +
    "\001\000\002\001\001\000\002\001\001\000\004\014\014" +
    "\001\001\000\002\001\001\000\002\001\001\000\004\015" +
    "\016\001\001\000\026\004\033\005\034\014\022\016\036" +
    "\017\023\020\026\021\024\022\021\023\017\024\031\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" +
    "\010\025\061\030\145\031\047\001\001\000\002\001\001" +
    "\000\002\001\001\000\004\025\136\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\010\025\061\030" +
    "\053\031\047\001\001\000\004\007\042\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\025\061\031" +
    "\127\001\001\000\002\001\001\000\002\001\001\000\010" +
    "\025\061\030\124\031\047\001\001\000\002\001\001\000" +
    "\006\025\061\031\123\001\001\000\002\001\001\000\002" +
    "\001\001\000\012\025\061\026\063\030\064\031\047\001" +
    "\001\000\002\001\001\000\004\027\077\001\001\000\010" +
    "\025\061\030\121\031\047\001\001\000\010\025\061\030" +
    "\120\031\047\001\001\000\010\025\061\030\117\031\047" +
    "\001\001\000\010\025\061\030\116\031\047\001\001\000" +
    "\010\025\061\030\115\031\047\001\001\000\010\025\061" +
    "\030\114\031\047\001\001\000\010\025\061\030\113\031" +
    "\047\001\001\000\010\025\061\030\112\031\047\001\001" +
    "\000\010\025\061\030\111\031\047\001\001\000\010\025" +
    "\061\030\110\031\047\001\001\000\002\001\001\000\010" +
    "\025\061\030\105\031\047\001\001\000\010\025\061\030" +
    "\104\031\047\001\001\000\010\025\061\030\103\031\047" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\010\025\061\030\107\031\047\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\010\025\061\030\131\031\047\001\001\000\002" +
    "\001\001\000\026\004\033\005\034\014\022\016\133\017" +
    "\023\020\026\021\024\022\021\023\017\024\031\001\001" +
    "\000\002\001\001\000\026\004\033\005\034\014\022\016" +
    "\135\017\023\020\026\021\024\022\021\023\017\024\031" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\010\025\061\030\142\031\047" +
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
    "\001\000\002\001\001\000\002\001\001\000\010\025\061" +
    "\030\150\031\047\001\001\000\002\001\001\000\026\004" +
    "\033\005\034\014\022\016\152\017\023\020\026\021\024" +
    "\022\021\023\017\024\031\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\004\006\156\001\001" +
    "\000\002\001\001\000\002\001\001\000\004\012\162\001" +
    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
    "\000\004\007\165\001\001\000\002\001\001\000\004\007" +
    "\167\001\001\000\004\013\170\001\001\000\002\001\001" +
    "\000\002\001\001\000\002\001\001\000\004\007\174\001" +
    "\001\000\004\013\175\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 1;}

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

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




  public void syntax_error(Symbol cur_token) {
	  System.out.printf("WHOOPS! ERRO DE  SINTAXE NA LINHA %d, COLUNA %d (token tipo %d inesperado). \n",
			  cur_token.left, cur_token.right, cur_token.sym);
  }
  public void unrecovered_syntax_error(Symbol cur_token) throws Exception {
	  done_parsing();
	  String msg = "WHOOPS! ERRO DE  SINTAXE NA LINHA" + cur_token.left + ", coluna " + cur_token.right 
			  + " (token tipo " + cur_token.sym + " INESPERADO).";
	  throw new Exception(msg);
  }


}

/** Cup generated class to encapsulate user supplied action code.*/
class CUP$Parser$actions {
  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 65: // expr_basica ::= chamada_func 
            {
              Expressao RESULT =null;
		int chafleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int chafright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		ChamadaFunc chaf = (ChamadaFunc)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = chaf; 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expr_basica",23, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 64: // expr_basica ::= IDENTIFICADOR 
            {
              Expressao RESULT =null;
		int lexleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int lexright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		String lex = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new ExprIdentificador(lex); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expr_basica",23, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 63: // expr_basica ::= STRING_LITERAL 
            {
              Expressao RESULT =null;
		int lexleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int lexright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		String lex = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new StringLiteral(lex); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expr_basica",23, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 62: // expr_basica ::= FLOAT_LITERAL 
            {
              Expressao RESULT =null;
		int floleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int floright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		String flo = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 float valor = Float.parseFloat(flo);
         	RESULT = new FloatLiteral(valor); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expr_basica",23, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 61: // expr_basica ::= CHAR_LITERAL 
            {
              Expressao RESULT =null;
		int chaleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int charight = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		String cha = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new CharLiteral(cha); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expr_basica",23, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 60: // expr_basica ::= INT_LITERAL 
            {
              Expressao RESULT =null;
		int lexleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int lexright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		String lex = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		  int valor = Integer.parseInt(lex); 
             RESULT = new IntLiteral(valor); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expr_basica",23, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 59: // expr_basica ::= SUB expr_basica 
            {
              Expressao RESULT =null;
		int expleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int expright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Expressao exp = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		  RESULT = new ExpUnaria("SUB", exp);  
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expr_basica",23, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 58: // expr_basica ::= NOT expr_basica 
            {
              Expressao RESULT =null;
		int expleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int expright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Expressao exp = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		  RESULT = new ExpUnaria("NOT", exp); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expr_basica",23, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 57: // expr_basica ::= ABRE_PAR expressao FECHA_PAR 
            {
              Expressao RESULT =null;
		int expleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
		int expright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
		Expressao exp = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
		  RESULT = exp; 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expr_basica",23, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 56: // expressao ::= expr_basica 
            {
              Expressao RESULT =null;
		int expleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int expright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Expressao exp = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		  RESULT = exp;  
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expressao",22, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 55: // expressao ::= expressao MAIOR_QUE expressao 
            {
              Expressao RESULT =null;
		int exp1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
		int exp1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
		Expressao exp1 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
		int exp2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int exp2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Expressao exp2 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new ExprRelacional(exp1, exp2, ">"); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expressao",22, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 54: // expressao ::= expressao MAIOR_OU_IGUAL expressao 
            {
              Expressao RESULT =null;
		int exp1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
		int exp1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
		Expressao exp1 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
		int exp2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int exp2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Expressao exp2 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new ExprRelacional(exp1, exp2, ">="); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expressao",22, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 53: // expressao ::= expressao MENOR_OU_IGUAL expressao 
            {
              Expressao RESULT =null;
		int exp1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
		int exp1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
		Expressao exp1 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
		int exp2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int exp2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Expressao exp2 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new ExprRelacional(exp1, exp2, "<="); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expressao",22, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 52: // expressao ::= expressao MENOR_QUE expressao 
            {
              Expressao RESULT =null;
		int exp1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
		int exp1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
		Expressao exp1 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
		int exp2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int exp2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Expressao exp2 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new ExprRelacional(exp1, exp2, "<"); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expressao",22, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 51: // expressao ::= expressao DIFERENTE_QUE expressao 
            {
              Expressao RESULT =null;
		int exp1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
		int exp1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
		Expressao exp1 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
		int exp2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int exp2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Expressao exp2 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new ExprRelacional(exp1, exp2, "!="); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expressao",22, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 50: // expressao ::= expressao IGUAL_QUE expressao 
            {
              Expressao RESULT =null;
		int exp1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
		int exp1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
		Expressao exp1 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
		int exp2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int exp2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Expressao exp2 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new ExprRelacional(exp1, exp2, "=="); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expressao",22, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 49: // expressao ::= expressao OR expressao 
            {
              Expressao RESULT =null;
		int exp1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
		int exp1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
		Expressao exp1 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
		int exp2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int exp2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Expressao exp2 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new ExprLogica(exp1, exp2, "or"); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expressao",22, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 48: // expressao ::= expressao AND expressao 
            {
              Expressao RESULT =null;
		int exp1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
		int exp1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
		Expressao exp1 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
		int exp2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int exp2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Expressao exp2 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new ExprLogica(exp1, exp2, "and"); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expressao",22, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 47: // expressao ::= expressao RESTO expressao 
            {
              Expressao RESULT =null;
		int exp1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
		int exp1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
		Expressao exp1 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
		int exp2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int exp2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Expressao exp2 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new ExprAritmetica(exp1, exp2, "%"); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expressao",22, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 46: // expressao ::= expressao DIV expressao 
            {
              Expressao RESULT =null;
		int exp1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
		int exp1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
		Expressao exp1 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
		int exp2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int exp2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Expressao exp2 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new ExprAritmetica(exp1, exp2, "/"); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expressao",22, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 45: // expressao ::= expressao MULT expressao 
            {
              Expressao RESULT =null;
		int exp1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
		int exp1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
		Expressao exp1 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
		int exp2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int exp2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Expressao exp2 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new ExprAritmetica(exp1, exp2, "*"); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expressao",22, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 44: // expressao ::= expressao SUB expressao 
            {
              Expressao RESULT =null;
		int exp1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
		int exp1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
		Expressao exp1 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
		int exp2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int exp2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Expressao exp2 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new ExprAritmetica(exp1, exp2, "-"); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expressao",22, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 43: // expressao ::= expressao SOMA expressao 
            {
              Expressao RESULT =null;
		int exp1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
		int exp1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
		Expressao exp1 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
		int exp2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int exp2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Expressao exp2 = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new ExprAritmetica(exp1, exp2, "+"); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expressao",22, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 42: // resto_lista_exprs ::= 
            {
              LinkedList<Expressao> RESULT =null;
		 RESULT = new LinkedList<Expressao>(); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("resto_lista_exprs",21, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 41: // resto_lista_exprs ::= resto_lista_exprs VIRGULA expressao 
            {
              LinkedList<Expressao> RESULT =null;
		int rlexpleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
		int rlexpright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
		LinkedList<Expressao> rlexp = (LinkedList<Expressao>)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
		int expleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int expright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Expressao exp = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 rlexp.addLast(exp);
					   RESULT = rlexp; 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("resto_lista_exprs",21, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 40: // lista_exprs ::= 
            {
              LinkedList<Expressao> RESULT =null;
		 RESULT = new LinkedList<Expressao>(); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("lista_exprs",20, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 39: // lista_exprs ::= expressao resto_lista_exprs 
            {
              LinkedList<Expressao> RESULT =null;
		int expleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
		int expright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
		Expressao exp = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
		int rlexpleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int rlexpright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		LinkedList<Expressao> rlexp = (LinkedList<Expressao>)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 rlexp.addLast(exp); RESULT = rlexp; 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("lista_exprs",20, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 38: // chamada_func ::= IDENTIFICADOR ABRE_PAR lista_exprs FECHA_PAR 
            {
              ChamadaFunc RESULT =null;
		int identificadorleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
		int identificadorright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
		String identificador = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
		int listaExprsleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
		int listaExprsright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
		LinkedList<Expressao> listaExprs = (LinkedList<Expressao>)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
		 RESULT = new ChamadaFunc(identificador, listaExprs); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("chamada_func",19, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 37: // retorno ::= KEY_RETURN expressao PONTO_VIRGULA 
            {
              Retorno RESULT =null;
		int expressaoleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
		int expressaoright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
		Expressao expressao = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
		 RESULT = new Retorno(expressao);  
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("retorno",18, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 36: // chamada_func_cmd ::= KEY_CALL chamada_func PONTO_VIRGULA 
            {
              ChamadaFuncCmd RESULT =null;
		int chamadaFuncleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
		int chamadaFuncright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
		ChamadaFunc chamadaFunc = (ChamadaFunc)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
		 RESULT = new ChamadaFuncCmd(chamadaFunc);  
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("chamada_func_cmd",17, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 35: // escrita ::= KEY_PRINT ABRE_PAR expressao FECHA_PAR PONTO_VIRGULA 
            {
              Escrita RESULT =null;
		int expressaoleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
		int expressaoright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
		Expressao expressao = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
		 RESULT = new Escrita(expressao);  
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("escrita",16, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 34: // decisao ::= KEY_IF ABRE_PAR expressao FECHA_PAR comando 
            {
              Decisao RESULT =null;
		int expleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
		int expright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
		Expressao exp = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
		int cmdleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int cmdright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Comando cmd = (Comando)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new Decisao(exp, cmd);  
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("decisao",15, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 33: // decisao ::= KEY_IF ABRE_PAR expressao FECHA_PAR comando KEY_ELSE comando 
            {
              Decisao RESULT =null;
		int exprleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left;
		int exprright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).right;
		Expressao expr = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-4)).value;
		int cmdIfleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
		int cmdIfright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
		Comando cmdIf = (Comando)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
		int cmdElseleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int cmdElseright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Comando cmdElse = (Comando)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new Decisao(expr, cmdIf, cmdElse);  
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("decisao",15, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 32: // iteracao ::= KEY_WHILE ABRE_PAR expressao FECHA_PAR comando 
            {
              Iteracao RESULT =null;
		int expressaoleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
		int expressaoright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
		Expressao expressao = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
		int comandoleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int comandoright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Comando comando = (Comando)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new Iteracao(expressao, comando);  
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("iteracao",14, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 31: // atribuicao ::= lista_idents ATRIBUICAO expressao PONTO_VIRGULA 
            {
              Atribuicao RESULT =null;
		int listaIdentsleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
		int listaIdentsright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
		LinkedList<String> listaIdents = (LinkedList<String>)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
		int expressaoleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
		int expressaoright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
		Expressao expressao = (Expressao)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
		 RESULT = new Atribuicao(listaIdents, expressao);  
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("atribuicao",13, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 30: // comando ::= chamada_func_cmd 
            {
              Comando RESULT =null;
		int cfcmdsleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int cfcmdsright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		ChamadaFuncCmd cfcmds = (ChamadaFuncCmd)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = cfcmds; 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("comando",12, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 29: // comando ::= bloco 
            {
              Comando RESULT =null;
		int blocoleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int blocoright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Bloco bloco = (Bloco)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = bloco; 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("comando",12, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 28: // comando ::= retorno 
            {
              Comando RESULT =null;
		int retorleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int retorright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Retorno retor = (Retorno)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = retor; 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("comando",12, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 27: // comando ::= escrita 
            {
              Comando RESULT =null;
		int escrleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int escrright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Escrita escr = (Escrita)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = escr; 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("comando",12, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 26: // comando ::= decisao 
            {
              Comando RESULT =null;
		int decileft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int deciright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Decisao deci = (Decisao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = deci; 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("comando",12, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 25: // comando ::= iteracao 
            {
              Comando RESULT =null;
		int iterleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int iterright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Iteracao iter = (Iteracao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = iter; 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("comando",12, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 24: // comando ::= atribuicao 
            {
              Comando RESULT =null;
		int atrileft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int atriright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Atribuicao atri = (Atribuicao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = atri; 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("comando",12, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 23: // comando ::= decl_variavel 
            {
              Comando RESULT =null;
		int dvleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int dvright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		DeclVariavel dv = (DeclVariavel)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = dv; 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("comando",12, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 22: // lista_comandos ::= 
            {
              LinkedList<Comando> RESULT =null;
		 RESULT = new LinkedList<Comando>(); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("lista_comandos",11, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 21: // lista_comandos ::= lista_comandos comando 
            {
              LinkedList<Comando> RESULT =null;
		int comandosleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
		int comandosright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
		LinkedList<Comando> comandos = (LinkedList<Comando>)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
		int comandoleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int comandoright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Comando comando = (Comando)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 comandos.addLast(comando); RESULT = comandos; 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("lista_comandos",11, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 20: // bloco ::= ABRE_CHAVE lista_comandos FECHA_CHAVE 
            {
              Bloco RESULT =null;
		int lcmdsleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
		int lcmdsright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
		LinkedList<Comando> lcmds = (LinkedList<Comando>)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
		 RESULT = new Bloco(lcmds);  
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("bloco",10, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 19: // resto_param_formais ::= 
            {
              LinkedList<DeclVariavel> RESULT =null;
		 RESULT = new LinkedList<DeclVariavel>(); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("resto_param_formais",9, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 18: // resto_param_formais ::= VIRGULA IDENTIFICADOR DOIS_PONTOS tipo resto_param_formais 
            {
              LinkedList<DeclVariavel> RESULT =null;
		int idleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
		int idright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
		String id = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
		int tipoleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
		int tiporight = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
		Tipo tipo = (Tipo)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
		int rpfsleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int rpfsright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		LinkedList<DeclVariavel> rpfs = (LinkedList<DeclVariavel>)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 rpfs.addLast(new DeclVariavel(id,tipo)); RESULT = rpfs; 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("resto_param_formais",9, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 17: // param_formais ::= 
            {
              LinkedList<DeclVariavel> RESULT =null;
		 RESULT = new LinkedList<DeclVariavel>(); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("param_formais",8, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 16: // param_formais ::= IDENTIFICADOR DOIS_PONTOS tipo resto_param_formais 
            {
              LinkedList<DeclVariavel> RESULT =null;
		int identificadorleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
		int identificadorright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
		String identificador = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
		int tipoleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
		int tiporight = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
		Tipo tipo = (Tipo)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
		int restoParamFormaisleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int restoParamFormaisright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		LinkedList<DeclVariavel> restoParamFormais = (LinkedList<DeclVariavel>)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 restoParamFormais.addLast(new DeclVariavel(identificador, tipo));  RESULT = restoParamFormais; 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("param_formais",8, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 15: // assinatura ::= KEY_DEF IDENTIFICADOR ABRE_PAR param_formais FECHA_PAR 
            {
              Assinatura RESULT =null;
		int idleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
		int idright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
		String id = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
		int pfsleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
		int pfsright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
		LinkedList<DeclVariavel> pfs = (LinkedList<DeclVariavel>)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
		 RESULT = new Assinatura(id,pfs);  
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("assinatura",7, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 14: // assinatura ::= KEY_DEF IDENTIFICADOR ABRE_PAR param_formais FECHA_PAR DOIS_PONTOS tipo 
            {
              Assinatura RESULT =null;
		int identificadorleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left;
		int identificadorright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).right;
		String identificador = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-5)).value;
		int paramFormaisleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
		int paramFormaisright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
		LinkedList<DeclVariavel> paramFormais = (LinkedList<DeclVariavel>)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
		int tipoleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int tiporight = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Tipo tipo = (Tipo)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new Assinatura(identificador,paramFormais,tipo);  
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("assinatura",7, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 13: // decl_funcao ::= assinatura bloco 
            {
              DeclFuncao RESULT =null;
		int assinaturaleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
		int assinaturaright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
		Assinatura assinatura = (Assinatura)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
		int blocoleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int blocoright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		Bloco bloco = (Bloco)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = new DeclFuncao(assinatura,bloco);  
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("decl_funcao",6, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 12: // tipo ::= KEY_STRING 
            {
              Tipo RESULT =null;
		 RESULT = Tipo.STRING;  
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("tipo",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 11: // tipo ::= KEY_FLOAT 
            {
              Tipo RESULT =null;
		 RESULT = Tipo.FLOAT;  
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("tipo",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 10: // tipo ::= KEY_CHAR 
            {
              Tipo RESULT =null;
		 RESULT = Tipo.CHAR;  
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("tipo",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 9: // tipo ::= KEY_INT 
            {
              Tipo RESULT =null;
		 RESULT = Tipo.INT;  
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("tipo",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 8: // resto_lista_idents ::= 
            {
              LinkedList<String> RESULT =null;
		 RESULT = new LinkedList<String>(); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("resto_lista_idents",4, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 7: // resto_lista_idents ::= VIRGULA IDENTIFICADOR resto_lista_idents 
            {
              LinkedList<String> RESULT =null;
		int idleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
		int idright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
		String id = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
		int rleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int rright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		LinkedList<String> r = (LinkedList<String>)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 r.addLast(id); RESULT = r; 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("resto_lista_idents",4, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 6: // lista_idents ::= IDENTIFICADOR resto_lista_idents 
            {
              LinkedList<String> RESULT =null;
		int idleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
		int idright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
		String id = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
		int rleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int rright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		LinkedList<String> r = (LinkedList<String>)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 r.addLast(id); RESULT = r; 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("lista_idents",3, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 5: // decl_variavel ::= lista_idents DOIS_PONTOS tipo PONTO_VIRGULA 
            {
              DeclVariavel RESULT =null;
		int lidleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
		int lidright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
		LinkedList<String> lid = (LinkedList<String>)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
		int tipoleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
		int tiporight = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
		Tipo tipo = (Tipo)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
		 RESULT = new DeclVariavel(lid,tipo);  
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("decl_variavel",2, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 4: // decl_global ::= decl_funcao 
            {
              DeclGlobal RESULT =null;
		int dfleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int dfright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		DeclFuncao df = (DeclFuncao)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = df; 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("decl_global",1, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 3: // decl_global ::= decl_variavel 
            {
              DeclGlobal RESULT =null;
		int dvleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int dvright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		DeclVariavel dv = (DeclVariavel)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 RESULT = dv; 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("decl_global",1, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 2: // programa ::= 
            {
              Programa RESULT =null;
		 RESULT = new Programa(); 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("programa",0, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 1: // $START ::= programa 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;
		Programa start_val = (Programa)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
		RESULT = start_val;
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("$START",0, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          /* ACCEPT */
          CUP$Parser$parser.done_parsing();
          return CUP$Parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 0: // programa ::= programa decl_global 
            {
              Programa RESULT =null;
		int pleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
		int pright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
		Programa p = (Programa)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
		int dleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
		int dright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
		DeclGlobal d = (DeclGlobal)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
		 p.addLast(d); RESULT = p ; 
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("programa",0, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
            }
          return CUP$Parser$result;

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

        }
    }
}

