| |
| 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() + "}"; |
| } |
| |
| /*-----------------------------------------------------------*/ |
| }; |