summaryrefslogtreecommitdiffstats
path: root/src/syntaxParser/java_cup/reduce_action.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/syntaxParser/java_cup/reduce_action.java')
-rw-r--r--src/syntaxParser/java_cup/reduce_action.java84
1 files changed, 84 insertions, 0 deletions
diff --git a/src/syntaxParser/java_cup/reduce_action.java b/src/syntaxParser/java_cup/reduce_action.java
new file mode 100644
index 0000000..e8f4c84
--- /dev/null
+++ b/src/syntaxParser/java_cup/reduce_action.java
@@ -0,0 +1,84 @@
+
+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.
+ *
+ * @version last updated: 11/25/95
+ * @author Scott Hudson
+ */
+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() + ")";
+ }
+
+ /*-----------------------------------------------------------*/
+
+}