package java_cup; /** * This class represents a part of a production which contains an * action. These are eventually eliminated from productions and converted * to trailing actions by factoring out with a production that derives the * empty string (and ends with this action). * * @see java_cup.production * @version last update: 11/25/95 * @author Scott Hudson */ public class action_part extends production_part { /*-----------------------------------------------------------*/ /*--- Constructors ------------------------------------------*/ /*-----------------------------------------------------------*/ /** Simple constructor. * @param code_str string containing the actual user code. */ public action_part(String code_str) { super(/* never have a label on code */null); _code_string = code_str; } /*-----------------------------------------------------------*/ /*--- (Access to) Instance Variables ------------------------*/ /*-----------------------------------------------------------*/ /** String containing code for the action in question. */ protected String _code_string; /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/ /** String containing code for the action in question. */ public String code_string() {return _code_string;} /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/ /** Set the code string. */ public void set_code_string(String new_str) {_code_string = new_str;} /*-----------------------------------------------------------*/ /*--- General Methods ---------------------------------------*/ /*-----------------------------------------------------------*/ /** Override to report this object as an action. */ public boolean is_action() { return true; } /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/ /** Equality comparison for properly typed object. */ public boolean equals(action_part other) { /* compare the strings */ return other != null && super.equals(other) && other.code_string().equals(code_string()); } /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/ /** Generic equality comparison. */ public boolean equals(Object other) { if (!(other instanceof action_part)) return false; else return equals((action_part)other); } /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/ /** Produce a hash code. */ public int hashCode() { return super.hashCode() ^ (code_string()==null ? 0 : code_string().hashCode()); } /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/ /** Convert to a string. */ public String toString() { return super.toString() + "{" + code_string() + "}"; } /*-----------------------------------------------------------*/ };