All Downloads are FREE. Search and download functionalities are using the official Maven repository.

java_cup.reduce_action Maven / Gradle / Ivy

Go to download

A fork of the Java Cup parser generator with some bug fixes and enhancements. (Forked at version 11b)

The newest version!
package java_cup;

/**
 * This class represents a reduce action within the parse table.
 * The action simply stores the production that it reduces with and
 * responds to queries about its type.
 *
 * @author Scott Hudson
 * @version last updated: 11/25/95
 */
public class reduce_action extends parse_action {
 
  /*-----------------------------------------------------------*/
  /*--- Constructor(s) ----------------------------------------*/
  /*-----------------------------------------------------------*/

    /**
     * Simple constructor.
     *
     * @param prod the production this action reduces with.
     */
    public reduce_action(production prod) throws internal_error {
      /* sanity check */
        if (prod == null)
            throw new internal_error(
                    "Attempt to create a reduce_action with a null production");

        _reduce_with = prod;
    }

  /*-----------------------------------------------------------*/
  /*--- (Access to) Instance Variables ------------------------*/
  /*-----------------------------------------------------------*/

    /**
     * The production we reduce with.
     */
    protected production _reduce_with;

    /**
     * The production we reduce with.
     */
    public production reduce_with() {
        return _reduce_with;
    }

  /*-----------------------------------------------------------*/
  /*--- General Methods ---------------------------------------*/
  /*-----------------------------------------------------------*/

    /**
     * Quick access to type of action.
     */
    public int kind() {
        return REDUCE;
    }

  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/

    /**
     * Equality test.
     */
    public boolean equals(reduce_action other) {
        return other != null && other.reduce_with() == reduce_with();
    }

  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/

    /**
     * Generic equality test.
     */
    public boolean equals(Object other) {
        if (other instanceof reduce_action)
            return equals((reduce_action) other);
        else
            return false;
    }

  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/

    /**
     * Compute a hash code.
     */
    public int hashCode() {
      /* use the hash code of the production we are reducing with */
        return reduce_with().hashCode();
    }


    /**
     * Convert to string.
     */
    public String toString() {
        return "REDUCE(with prod " + reduce_with().index() + ")";
    }

  /*-----------------------------------------------------------*/

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy