
//----------------------------------------------------
// The following code was generated by CUP v0.11a beta 20060608
// Thu Dec 20 14:22:43 BRST 2007
//----------------------------------------------------

package odog.ruleChecker;

import java_cup.runtime.*;
import java.util.*;
import javax.swing.tree.DefaultMutableTreeNode;
import odog.syntax.Nodes.Node;

/** CUP v0.11a beta 20060608 generated parser.
  * @version Thu Dec 20 14:22:43 BRST 2007
  */
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\063\000\002\002\004\000\002\002\003\000\002\002" +
    "\005\000\002\020\010\000\002\021\003\000\002\021\005" +
    "\000\002\003\006\000\002\003\003\000\002\012\003\000" +
    "\002\012\005\000\002\013\003\000\002\013\005\000\002" +
    "\014\003\000\002\014\005\000\002\015\003\000\002\015" +
    "\005\000\002\004\003\000\002\004\005\000\002\004\005" +
    "\000\002\004\005\000\002\004\005\000\002\004\005\000" +
    "\002\004\005\000\002\005\003\000\002\005\003\000\002" +
    "\006\006\000\002\010\003\000\002\007\003\000\002\007" +
    "\005\000\002\017\003\000\002\017\005\000\002\017\005" +
    "\000\002\016\003\000\002\016\012\000\002\016\012\000" +
    "\002\022\005\000\002\022\006\000\002\011\003\000\002" +
    "\011\003\000\002\011\003\000\002\011\003\000\002\011" +
    "\003\000\002\011\003\000\002\011\003\000\002\011\003" +
    "\000\002\011\003\000\002\011\003\000\002\011\003\000" +
    "\002\011\003\000\002\011\003\000\002\011\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\145\000\020\022\023\023\014\027\030\033\006\044" +
    "\025\046\007\047\015\001\002\000\030\002\uffe7\024\uffe7" +
    "\025\uffe7\026\146\030\uffe7\031\uffe7\032\uffe7\034\uffe7\035" +
    "\uffe7\044\uffe7\050\uffe7\001\002\000\020\002\ufff5\030\ufff5" +
    "\031\ufff5\032\ufff5\034\ufff5\035\041\050\ufff5\001\002\000" +
    "\004\027\143\001\002\000\014\024\uffe6\025\uffe6\026\uffe6" +
    "\027\136\044\uffe6\001\002\000\004\002\135\001\002\000" +
    "\020\002\uffe1\030\uffe1\031\uffe1\032\uffe1\034\uffe1\035\uffe1" +
    "\050\uffe1\001\002\000\004\050\133\001\002\000\020\002" +
    "\uffe4\030\uffe4\031\uffe4\032\uffe4\034\uffe4\035\uffe4\050\uffe4" +
    "\001\002\000\004\026\124\001\002\000\034\002\uffe9\030" +
    "\uffe9\031\uffe9\032\uffe9\034\uffe9\035\uffe9\036\uffe9\037\uffe9" +
    "\040\uffe9\041\uffe9\042\uffe9\043\uffe9\050\uffe9\001\002\000" +
    "\016\002\ufff7\030\ufff7\031\ufff7\032\ufff7\034\037\050\ufff7" +
    "\001\002\000\016\036\110\037\111\040\112\041\107\042" +
    "\114\043\113\001\002\000\004\002\000\001\002\000\012" +
    "\002\ufffa\030\ufffa\032\105\050\ufffa\001\002\000\010\024" +
    "\100\025\076\044\077\001\002\000\004\026\051\001\002" +
    "\000\020\002\ufff1\030\ufff1\031\ufff1\032\ufff1\034\ufff1\035" +
    "\ufff1\050\ufff1\001\002\000\004\046\043\001\002\000\014" +
    "\002\ufff9\030\ufff9\031\035\032\ufff9\050\ufff9\001\002\000" +
    "\020\002\ufff3\030\ufff3\031\ufff3\032\ufff3\034\ufff3\035\ufff3" +
    "\050\ufff3\001\002\000\020\022\023\023\014\027\030\033" +
    "\006\044\025\046\032\047\015\001\002\000\034\002\uffea" +
    "\030\uffea\031\uffea\032\uffea\034\uffea\035\uffea\036\uffea\037" +
    "\uffea\040\uffea\041\uffea\042\uffea\043\uffea\050\uffea\001\002" +
    "\000\030\002\uffe6\024\uffe6\025\uffe6\026\uffe6\030\uffe6\031" +
    "\uffe6\032\uffe6\034\uffe6\035\uffe6\044\uffe6\050\uffe6\001\002" +
    "\000\004\030\034\001\002\000\020\002\uffde\030\uffde\031" +
    "\uffde\032\uffde\034\uffde\035\uffde\050\uffde\001\002\000\016" +
    "\022\023\023\014\027\030\044\025\046\032\047\015\001" +
    "\002\000\016\002\ufff6\030\ufff6\031\ufff6\032\ufff6\034\037" +
    "\050\ufff6\001\002\000\016\022\023\023\014\027\030\044" +
    "\025\046\032\047\015\001\002\000\020\002\ufff4\030\ufff4" +
    "\031\ufff4\032\ufff4\034\ufff4\035\041\050\ufff4\001\002\000" +
    "\016\022\023\023\014\027\030\044\025\046\032\047\015" +
    "\001\002\000\020\002\ufff2\030\ufff2\031\ufff2\032\ufff2\034" +
    "\ufff2\035\ufff2\050\ufff2\001\002\000\004\046\044\001\002" +
    "\000\010\030\ufffd\045\ufffd\051\ufffd\001\002\000\006\045" +
    "\046\051\047\001\002\000\020\002\uffdd\030\uffdd\031\uffdd" +
    "\032\uffdd\034\uffdd\035\uffdd\050\uffdd\001\002\000\004\046" +
    "\050\001\002\000\010\030\ufffc\045\ufffc\051\ufffc\001\002" +
    "\000\036\004\056\005\066\006\063\007\053\010\052\011" +
    "\067\012\054\013\060\014\062\015\064\016\070\017\057" +
    "\020\055\021\065\001\002\000\004\026\uffd8\001\002\000" +
    "\004\026\uffd9\001\002\000\004\026\uffd6\001\002\000\004" +
    "\026\uffd0\001\002\000\004\026\uffdc\001\002\000\004\026" +
    "\uffd1\001\002\000\004\026\uffd5\001\002\000\004\026\071" +
    "\001\002\000\004\026\uffd4\001\002\000\004\026\uffda\001" +
    "\002\000\004\026\uffd3\001\002\000\004\026\uffcf\001\002" +
    "\000\004\026\uffdb\001\002\000\004\026\uffd7\001\002\000" +
    "\004\026\uffd2\001\002\000\004\046\072\001\002\000\004" +
    "\027\073\001\002\000\020\022\023\023\014\027\030\033" +
    "\006\044\025\046\032\047\015\001\002\000\004\030\075" +
    "\001\002\000\020\002\uffe0\030\uffe0\031\uffe0\032\uffe0\034" +
    "\uffe0\035\uffe0\050\uffe0\001\002\000\004\046\032\001\002" +
    "\000\004\046\102\001\002\000\004\046\032\001\002\000" +
    "\020\002\uffe3\030\uffe3\031\uffe3\032\uffe3\034\uffe3\035\uffe3" +
    "\050\uffe3\001\002\000\004\045\103\001\002\000\034\002" +
    "\uffe8\030\uffe8\031\uffe8\032\uffe8\034\uffe8\035\uffe8\036\uffe8" +
    "\037\uffe8\040\uffe8\041\uffe8\042\uffe8\043\uffe8\050\uffe8\001" +
    "\002\000\020\002\uffe2\030\uffe2\031\uffe2\032\uffe2\034\uffe2" +
    "\035\uffe2\050\uffe2\001\002\000\016\022\023\023\014\027" +
    "\030\044\025\046\032\047\015\001\002\000\014\002\ufff8" +
    "\030\ufff8\031\035\032\ufff8\050\ufff8\001\002\000\006\046" +
    "\032\047\015\001\002\000\006\046\032\047\015\001\002" +
    "\000\006\046\032\047\015\001\002\000\006\046\032\047" +
    "\015\001\002\000\006\046\032\047\015\001\002\000\006" +
    "\046\032\047\015\001\002\000\004\044\077\001\002\000" +
    "\020\002\uffec\030\uffec\031\uffec\032\uffec\034\uffec\035\uffec" +
    "\050\uffec\001\002\000\020\002\uffeb\030\uffeb\031\uffeb\032" +
    "\uffeb\034\uffeb\035\uffeb\050\uffeb\001\002\000\020\002\uffed" +
    "\030\uffed\031\uffed\032\uffed\034\uffed\035\uffed\050\uffed\001" +
    "\002\000\020\002\ufff0\030\ufff0\031\ufff0\032\ufff0\034\ufff0" +
    "\035\ufff0\050\ufff0\001\002\000\020\002\uffef\030\uffef\031" +
    "\uffef\032\uffef\034\uffef\035\uffef\050\uffef\001\002\000\020" +
    "\002\uffee\030\uffee\031\uffee\032\uffee\034\uffee\035\uffee\050" +
    "\uffee\001\002\000\036\004\056\005\066\006\063\007\053" +
    "\010\052\011\067\012\054\013\060\014\062\015\064\016" +
    "\070\017\057\020\055\021\065\001\002\000\004\026\126" +
    "\001\002\000\004\046\127\001\002\000\004\027\130\001" +
    "\002\000\020\022\023\023\014\027\030\033\006\044\025" +
    "\046\032\047\015\001\002\000\004\030\132\001\002\000" +
    "\020\002\uffdf\030\uffdf\031\uffdf\032\uffdf\034\uffdf\035\uffdf" +
    "\050\uffdf\001\002\000\020\022\023\023\014\027\030\033" +
    "\006\044\025\046\007\047\015\001\002\000\004\002\uffff" +
    "\001\002\000\004\002\001\001\002\000\004\046\044\001" +
    "\002\000\006\030\140\051\047\001\002\000\004\036\141" +
    "\001\002\000\020\022\023\023\014\027\030\033\006\044" +
    "\025\046\032\047\015\001\002\000\004\050\ufffe\001\002" +
    "\000\020\022\023\023\014\027\030\033\006\044\025\046" +
    "\032\047\015\001\002\000\004\030\145\001\002\000\010" +
    "\002\ufffb\030\ufffb\050\ufffb\001\002\000\004\046\147\001" +
    "\002\000\030\002\uffe5\024\uffe5\025\uffe5\026\uffe5\030\uffe5" +
    "\031\uffe5\032\uffe5\034\uffe5\035\uffe5\044\uffe5\050\uffe5\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\145\000\040\002\007\003\017\004\026\005\016\006" +
    "\030\007\003\010\021\012\020\013\025\014\015\015\004" +
    "\016\012\017\023\020\011\022\010\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" +
    "\034\003\032\004\026\005\016\006\030\007\003\010\021" +
    "\012\020\013\025\014\015\015\004\016\012\017\023\022" +
    "\010\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\026\004\026\005\016\006" +
    "\030\007\003\010\021\014\035\015\004\016\012\017\023" +
    "\022\010\001\001\000\002\001\001\000\024\004\026\005" +
    "\016\006\030\007\003\010\021\015\037\016\012\017\023" +
    "\022\010\001\001\000\002\001\001\000\022\004\041\005" +
    "\016\006\030\007\003\010\021\016\012\017\023\022\010" +
    "\001\001\000\002\001\001\000\004\021\044\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
    "\001\001\000\002\001\001\000\004\011\060\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\034\003\073\004\026\005\016\006\030\007" +
    "\003\010\021\012\020\013\025\014\015\015\004\016\012" +
    "\017\023\022\010\001\001\000\002\001\001\000\002\001" +
    "\001\000\006\007\003\010\103\001\001\000\002\001\001" +
    "\000\006\007\003\010\100\001\001\000\002\001\001\000" +
    "\002\001\001\000\002\001\001\000\002\001\001\000\030" +
    "\004\026\005\016\006\030\007\003\010\021\013\105\014" +
    "\015\015\004\016\012\017\023\022\010\001\001\000\002" +
    "\001\001\000\012\005\122\006\030\007\003\010\114\001" +
    "\001\000\012\005\121\006\030\007\003\010\114\001\001" +
    "\000\012\005\120\006\030\007\003\010\114\001\001\000" +
    "\012\005\117\006\030\007\003\010\114\001\001\000\012" +
    "\005\116\006\030\007\003\010\114\001\001\000\012\005" +
    "\115\006\030\007\003\010\114\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" +
    "\011\124\001\001\000\002\001\001\000\002\001\001\000" +
    "\002\001\001\000\034\003\130\004\026\005\016\006\030" +
    "\007\003\010\021\012\020\013\025\014\015\015\004\016" +
    "\012\017\023\022\010\001\001\000\002\001\001\000\002" +
    "\001\001\000\040\002\133\003\017\004\026\005\016\006" +
    "\030\007\003\010\021\012\020\013\025\014\015\015\004" +
    "\016\012\017\023\020\011\022\010\001\001\000\002\001" +
    "\001\000\002\001\001\000\004\021\136\001\001\000\002" +
    "\001\001\000\002\001\001\000\034\003\141\004\026\005" +
    "\016\006\030\007\003\010\021\012\020\013\025\014\015" +
    "\015\004\016\012\017\023\022\010\001\001\000\002\001" +
    "\001\000\034\003\143\004\026\005\016\006\030\007\003" +
    "\010\021\012\020\013\025\014\015\015\004\016\012\017" +
    "\023\022\010\001\001\000\002\001\001\000\002\001\001" +
    "\000\002\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;}




   public HashMap<String,Function> getFunctionDefs() {
       return action_obj.functionDefs;
   }

}

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


/* 
 * Copyright (c) 2006-2014, Ivan Jeukens
 * All rights reserved.
 *
 * This software is open-source under GNU General Public License, version 2 
 * see LICENSE file
 */
       public HashMap<String, Function> functionDefs = new HashMap<String, Function>();

  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 50: // nodeType ::= DEFVER 
            {
              Integer RESULT =null;
		 RESULT = new Integer(Node.DEFVER); 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("nodeType",7, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 49: // nodeType ::= EXPORTEDPORT 
            {
              Integer RESULT =null;
		 RESULT = new Integer(Node.EXPORTEDPORT); 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("nodeType",7, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 48: // nodeType ::= CONNECTION 
            {
              Integer RESULT =null;
		 RESULT = new Integer(Node.CONNECTION); 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("nodeType",7, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 47: // nodeType ::= METHOD 
            {
              Integer RESULT =null;
		 RESULT = new Integer(Node.METHOD); 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("nodeType",7, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 46: // nodeType ::= REQSERV 
            {
              Integer RESULT =null;
		 RESULT = new Integer(Node.REQSERV); 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("nodeType",7, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 45: // nodeType ::= VALUE 
            {
              Integer RESULT =null;
		 RESULT = new Integer(Node.VALUE); 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("nodeType",7, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 44: // nodeType ::= HVER 
            {
              Integer RESULT =null;
		 RESULT = new Integer(Node.HVER); 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("nodeType",7, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 43: // nodeType ::= VER 
            {
              Integer RESULT =null;
		 RESULT = new Integer(Node.VER); 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("nodeType",7, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 42: // nodeType ::= ATTRCLASS 
            {
              Integer RESULT =null;
		 RESULT = new Integer(Node.ATTRCLASS); 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("nodeType",7, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 41: // nodeType ::= COMPONENTINSTANCE 
            {
              Integer RESULT =null;
		 RESULT = new Integer(Node.COMPONENTINSTANCE); 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("nodeType",7, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 40: // nodeType ::= TOPOLOGY 
            {
              Integer RESULT =null;
		 RESULT = new Integer(Node.TOPOLOGY); 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("nodeType",7, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 39: // nodeType ::= ATTR 
            {
              Integer RESULT =null;
		 RESULT = new Integer(Node.ATTR); 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("nodeType",7, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 38: // nodeType ::= ACOMP 
            {
              Integer RESULT =null;
		 RESULT = new Integer(Node.ACOMP); 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("nodeType",7, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 37: // nodeType ::= DPORT 
            {
              Integer RESULT =null;
		 RESULT = new Integer(Node.DPORT); 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("nodeType",7, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 36: // function_call ::= LBRAC IDENTIFIER parameter_list RBRAC 
            {
              DefaultMutableTreeNode RESULT =null;
		int idleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int idright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		String id = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int listleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int listright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		LinkedList list = (LinkedList)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		
                        Function f = new Function(TreeNode.FUNCTION_CALL, id, 
                            list.toArray(), null);
                        DefaultMutableTreeNode node = new DefaultMutableTreeNode(f);
                        RESULT = node;
                    
              CUP$parser$result = parser.getSymbolFactory().newSymbol("function_call",16, ((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 35: // function_call ::= LPAR conditionalExpr RPAR 
            {
              DefaultMutableTreeNode RESULT =null;
		int exprleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int exprright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		DefaultMutableTreeNode expr = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		
                        RESULT = expr;
                    
              CUP$parser$result = parser.getSymbolFactory().newSymbol("function_call",16, ((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 34: // quantifierExpression ::= EX_QUAL DOT nodeType DOT IDENTIFIER LPAR conditionalExpr RPAR 
            {
              DefaultMutableTreeNode RESULT =null;
		int typeleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).left;
		int typeright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).right;
		Integer type = (Integer)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-5)).value;
		int freeVarleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left;
		int freeVarright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).right;
		String freeVar = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
		int exprleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int exprright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		DefaultMutableTreeNode expr = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		
                         Quantifier qf = new Quantifier(Quantifier.EX, type.intValue(), freeVar);
                         DefaultMutableTreeNode node = new DefaultMutableTreeNode(qf);
                         node.add(expr);
                         RESULT = node;
                     
              CUP$parser$result = parser.getSymbolFactory().newSymbol("quantifierExpression",12, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-7)), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 33: // quantifierExpression ::= PT_QUAL DOT nodeType DOT IDENTIFIER LPAR conditionalExpr RPAR 
            {
              DefaultMutableTreeNode RESULT =null;
		int typeleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).left;
		int typeright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).right;
		Integer type = (Integer)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-5)).value;
		int freeVarleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left;
		int freeVarright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).right;
		String freeVar = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
		int exprleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int exprright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		DefaultMutableTreeNode expr = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		
                           Quantifier qf = new Quantifier(Quantifier.PT, type.intValue(),
                               freeVar);
                           DefaultMutableTreeNode node = new DefaultMutableTreeNode(qf);
                           node.add(expr);
                           RESULT = node; 
                     
              CUP$parser$result = parser.getSymbolFactory().newSymbol("quantifierExpression",12, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-7)), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 32: // quantifierExpression ::= function_call 
            {
              DefaultMutableTreeNode RESULT =null;
		int exprleft = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int exprright = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode expr = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		
                        RESULT = expr;
                    
              CUP$parser$result = parser.getSymbolFactory().newSymbol("quantifierExpression",12, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 31: // pathExpression ::= node EX_CM node 
            {
              DefaultMutableTreeNode RESULT =null;
		int n1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int n1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		DefaultMutableTreeNode n1 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int n2left = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int n2right = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode n2 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		
                        GConnection q = new GConnection(GConnection.CM);
                        DefaultMutableTreeNode node = new DefaultMutableTreeNode(q);

                        node.add(n1);
                        node.add(n2);

                        RESULT = node;
                    
              CUP$parser$result = parser.getSymbolFactory().newSymbol("pathExpression",13, ((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 30: // pathExpression ::= node EX_AR node 
            {
              DefaultMutableTreeNode RESULT =null;
		int n1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int n1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		DefaultMutableTreeNode n1 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int n2left = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int n2right = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode n2 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		
                        GConnection q = new GConnection(GConnection.AR);
                        DefaultMutableTreeNode node = new DefaultMutableTreeNode(q);

                        node.add(n1);
                        node.add(n2);
                        
                        RESULT = node;
                    
              CUP$parser$result = parser.getSymbolFactory().newSymbol("pathExpression",13, ((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 29: // pathExpression ::= quantifierExpression 
            {
              DefaultMutableTreeNode RESULT =null;
		int exprleft = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int exprright = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode expr = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		 RESULT = expr; 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("pathExpression",13, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 28: // completeName ::= completeName DOT IDENTIFIER 
            {
              String RESULT =null;
		int cleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int cright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		String c = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		String e = (String)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		 
                     RESULT = new String(c + "." + e);
                 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("completeName",5, ((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 27: // completeName ::= IDENTIFIER 
            {
              String RESULT =null;
		int eleft = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int eright = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		String e = (String)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		 RESULT = e; 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("completeName",5, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 26: // node ::= completeName 
            {
              DefaultMutableTreeNode RESULT =null;
		int nameleft = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int nameright = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		String name = (String)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		
             NodeRef ref = new NodeRef(name);
             DefaultMutableTreeNode node = new DefaultMutableTreeNode(ref);
             RESULT = node;
         
              CUP$parser$result = parser.getSymbolFactory().newSymbol("node",6, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 25: // attributeSpecification ::= node LBRAC IDENTIFIER RBRAC 
            {
              DefaultMutableTreeNode RESULT =null;
		int ndleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left;
		int ndright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).right;
		DefaultMutableTreeNode nd = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
		int attrleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int attrright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		String attr = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		
                              AttributeSpecification node = new AttributeSpecification(attr);
                              DefaultMutableTreeNode n = new DefaultMutableTreeNode(node);
                              n.add(nd);
                              RESULT = n;
                        
              CUP$parser$result = parser.getSymbolFactory().newSymbol("attributeSpecification",4, ((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 24: // compElement ::= STRING_LITERAL 
            {
              DefaultMutableTreeNode RESULT =null;
		int vleft = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int vright = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		String v = (String)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		 
                    RESULT = new DefaultMutableTreeNode(new StringLiteral(v)); 
                
              CUP$parser$result = parser.getSymbolFactory().newSymbol("compElement",3, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 23: // compElement ::= attributeSpecification 
            {
              DefaultMutableTreeNode RESULT =null;
		int attrsleft = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int attrsright = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode attrs = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		 RESULT = attrs; 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("compElement",3, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 22: // comparisonExpr ::= compElement LE compElement 
            {
              DefaultMutableTreeNode RESULT =null;
		int n1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int n1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		DefaultMutableTreeNode n1 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int n2left = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int n2right = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode n2 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		
                       Comparison node = new Comparison(Comparison.LE);
                       DefaultMutableTreeNode comp = new DefaultMutableTreeNode(node);
                       
                       comp.add(n1);
                       comp.add(n2);

                       RESULT = comp;
                   
              CUP$parser$result = parser.getSymbolFactory().newSymbol("comparisonExpr",2, ((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 21: // comparisonExpr ::= compElement GE compElement 
            {
              DefaultMutableTreeNode RESULT =null;
		int n1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int n1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		DefaultMutableTreeNode n1 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int n2left = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int n2right = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode n2 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		
                       Comparison node = new Comparison(Comparison.GE);
                       DefaultMutableTreeNode comp = new DefaultMutableTreeNode(node);
                       
                       comp.add(n1);
                       comp.add(n2);                       

                       RESULT = comp;
                       
                   
              CUP$parser$result = parser.getSymbolFactory().newSymbol("comparisonExpr",2, ((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 20: // comparisonExpr ::= compElement GT compElement 
            {
              DefaultMutableTreeNode RESULT =null;
		int n1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int n1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		DefaultMutableTreeNode n1 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int n2left = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int n2right = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode n2 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		
                       Comparison node = new Comparison(Comparison.GT);
                       DefaultMutableTreeNode comp = new DefaultMutableTreeNode(node);
                       
                       comp.add(n1);
                       comp.add(n2);                       

                       RESULT = comp;
                   
              CUP$parser$result = parser.getSymbolFactory().newSymbol("comparisonExpr",2, ((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: // comparisonExpr ::= compElement LT compElement 
            {
              DefaultMutableTreeNode RESULT =null;
		int n1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int n1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		DefaultMutableTreeNode n1 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int n2left = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int n2right = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode n2 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		
                       Comparison node = new Comparison(Comparison.LT);
                       DefaultMutableTreeNode comp = new DefaultMutableTreeNode(node);
                       
                       comp.add(n1);
                       comp.add(n2);                       

                       RESULT = comp;
                   
              CUP$parser$result = parser.getSymbolFactory().newSymbol("comparisonExpr",2, ((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 18: // comparisonExpr ::= compElement EQ compElement 
            {
              DefaultMutableTreeNode RESULT =null;
		int n1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int n1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		DefaultMutableTreeNode n1 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int n2left = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int n2right = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode n2 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		
                       Comparison node = new Comparison(Comparison.EQ);
                       DefaultMutableTreeNode comp = new DefaultMutableTreeNode(node);
                       
                       comp.add(n1);
                       comp.add(n2);

                       RESULT = comp;
                   
              CUP$parser$result = parser.getSymbolFactory().newSymbol("comparisonExpr",2, ((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 17: // comparisonExpr ::= compElement DIFF compElement 
            {
              DefaultMutableTreeNode RESULT =null;
		int n1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int n1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		DefaultMutableTreeNode n1 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int n2left = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int n2right = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode n2 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		
                       Comparison node = new Comparison(Comparison.DIFF);
                       DefaultMutableTreeNode comp = new DefaultMutableTreeNode(node);                      
                       comp.add(n1);
                       comp.add(n2);

                       RESULT = comp;
                   
              CUP$parser$result = parser.getSymbolFactory().newSymbol("comparisonExpr",2, ((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 16: // comparisonExpr ::= pathExpression 
            {
              DefaultMutableTreeNode RESULT =null;
		int exprleft = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int exprright = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode expr = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		 RESULT = expr; 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("comparisonExpr",2, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 15: // ifonlyif_conditionalExpr ::= ifonlyif_conditionalExpr IFONLYIF comparisonExpr 
            {
              DefaultMutableTreeNode RESULT =null;
		int ex1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int ex1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		DefaultMutableTreeNode ex1 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int ex2left = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int ex2right = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode ex2 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		
                                 Logical l = new Logical(Logical.IFONLYIF);
                                 DefaultMutableTreeNode n = new DefaultMutableTreeNode(l);
                                 n.add(ex1);
                                 n.add(ex2);
                                 RESULT = n;
                             
              CUP$parser$result = parser.getSymbolFactory().newSymbol("ifonlyif_conditionalExpr",11, ((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 14: // ifonlyif_conditionalExpr ::= comparisonExpr 
            {
              DefaultMutableTreeNode RESULT =null;
		int exleft = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int exright = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode ex = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		 RESULT = ex; 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("ifonlyif_conditionalExpr",11, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 13: // imply_conditionalExpr ::= imply_conditionalExpr IMPLY ifonlyif_conditionalExpr 
            {
              DefaultMutableTreeNode RESULT =null;
		int ex1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int ex1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		DefaultMutableTreeNode ex1 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int ex2left = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int ex2right = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode ex2 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		
                              Logical l = new Logical(Logical.IMPLY);
                              DefaultMutableTreeNode n = new DefaultMutableTreeNode(l);
                              n.add(ex1);
                              n.add(ex2);
                              RESULT = n;
                          
              CUP$parser$result = parser.getSymbolFactory().newSymbol("imply_conditionalExpr",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 12: // imply_conditionalExpr ::= ifonlyif_conditionalExpr 
            {
              DefaultMutableTreeNode RESULT =null;
		int exleft = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int exright = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode ex = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		 RESULT = ex; 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("imply_conditionalExpr",10, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 11: // and_conditionalExpr ::= and_conditionalExpr AND imply_conditionalExpr 
            {
              DefaultMutableTreeNode RESULT =null;
		int ex1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int ex1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		DefaultMutableTreeNode ex1 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int ex2left = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int ex2right = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode ex2 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		
                             Logical l = new Logical(Logical.AND);
                             DefaultMutableTreeNode n = new DefaultMutableTreeNode(l);
                             n.add(ex1);
                             n.add(ex2);
                             RESULT = n;
                        
              CUP$parser$result = parser.getSymbolFactory().newSymbol("and_conditionalExpr",9, ((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 10: // and_conditionalExpr ::= imply_conditionalExpr 
            {
              DefaultMutableTreeNode RESULT =null;
		int exleft = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int exright = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode ex = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		 RESULT = ex; 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("and_conditionalExpr",9, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 9: // or_conditionalExpr ::= or_conditionalExpr OR and_conditionalExpr 
            {
              DefaultMutableTreeNode RESULT =null;
		int ex1left = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
		int ex1right = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
		DefaultMutableTreeNode ex1 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int ex2left = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int ex2right = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode ex2 = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		 
                            Logical l = new Logical(Logical.OR);
                            DefaultMutableTreeNode n = new DefaultMutableTreeNode(l);
                            n.add(ex1);
                            n.add(ex2);
                            RESULT = n;
                       
              CUP$parser$result = parser.getSymbolFactory().newSymbol("or_conditionalExpr",8, ((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 8: // or_conditionalExpr ::= and_conditionalExpr 
            {
              DefaultMutableTreeNode RESULT =null;
		int exleft = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int exright = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode ex = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		
                           RESULT = ex;
                       
              CUP$parser$result = parser.getSymbolFactory().newSymbol("or_conditionalExpr",8, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 7: // conditionalExpr ::= or_conditionalExpr 
            {
              DefaultMutableTreeNode RESULT =null;
		int exprleft = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int exprright = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode expr = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		
                        RESULT = expr;
                    
              CUP$parser$result = parser.getSymbolFactory().newSymbol("conditionalExpr",1, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 6: // conditionalExpr ::= NOT LPAR conditionalExpr RPAR 
            {
              DefaultMutableTreeNode RESULT =null;
		int exprleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
		int exprright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
		DefaultMutableTreeNode expr = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
		
                        Logical comp = new Logical(Logical.NOT);
                        DefaultMutableTreeNode node = new DefaultMutableTreeNode(comp);
                        node.add(expr);
                        RESULT = node;
                    
              CUP$parser$result = parser.getSymbolFactory().newSymbol("conditionalExpr",1, ((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 5: // parameter_list ::= parameter_list COLON IDENTIFIER 
            {
              LinkedList 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;
		LinkedList l = (LinkedList)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
		int id2left = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int id2right = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		String id2 = (String)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		
                       LinkedList list = new LinkedList(); 
                       list.addAll(l);                        
                       list.add(id2);
                       RESULT = list; 
                   
              CUP$parser$result = parser.getSymbolFactory().newSymbol("parameter_list",15, ((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 4: // parameter_list ::= IDENTIFIER 
            {
              LinkedList RESULT =null;
		int idleft = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int idright = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		String id = (String)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		 LinkedList list = new LinkedList(); list.add(id); RESULT = list; 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("parameter_list",15, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 3: // function_def ::= IDENTIFIER LPAR parameter_list RPAR EQ conditionalExpr 
            {
              Object RESULT =null;
		int nameleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).left;
		int nameright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).right;
		String name = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-5)).value;
		int listleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left;
		int listright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).right;
		LinkedList list = (LinkedList)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
		int exprleft = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int exprright = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode expr = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		
              Function f = new Function(TreeNode.FUNCTION_DEF, name, 
                  list.toArray(), expr);
              functionDefs.put(name, f);
        
              CUP$parser$result = parser.getSymbolFactory().newSymbol("function_def",14, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 2: // rule ::= function_def SEMICOLON rule 
            {
              DefaultMutableTreeNode RESULT =null;
		int exprleft = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int exprright = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode expr = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		 RESULT = expr; 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("rule",0, ((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 1: // rule ::= conditionalExpr 
            {
              DefaultMutableTreeNode RESULT =null;
		int exprleft = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).left;
		int exprright = ((java_cup.runtime.Symbol)CUP$parser$stack.peek()).right;
		DefaultMutableTreeNode expr = (DefaultMutableTreeNode)((java_cup.runtime.Symbol) CUP$parser$stack.peek()).value;
		 RESULT = expr; 
              CUP$parser$result = parser.getSymbolFactory().newSymbol("rule",0, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
            }
          return CUP$parser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 0: // $START ::= rule 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;
		DefaultMutableTreeNode start_val = (DefaultMutableTreeNode)((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;

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

        }
    }
}

