|
Transition |
|
1 /* 2 * Transition.java 3 * 4 * Copyright (c) 1998-2001, The University of Sheffield. 5 * 6 * This file is part of GATE (see http://gate.ac.uk/), and is free 7 * software, licenced under the GNU Library General Public License, 8 * Version 2, June 1991 (in the distribution as file licence.html, 9 * and also available at http://gate.ac.uk/gate/licence.html). 10 * 11 * Valentin Tablan, 11/Apr/2000 12 * 13 * $Id: Transition.java,v 1.13 2001/11/05 16:23:28 nasso Exp $ 14 */ 15 16 package gate.fsm; 17 18 import gate.jape.*; 19 20 import java.util.*; 21 import java.io.*; 22 23 /** 24 * This class implements a Finite State Machine transition. 25 * A transition is owned by a gate.fsm.State object and contains set of 26 * restrictions and a reference to the next state that will be accessed after 27 * consuming a set of input symbols according to the restrictions. 28 * A transition can also hold information about the label that should be bound 29 * to the symbols (annotations) consumed during the state transition. 30 */ 31 // >>> DAM 32 /* 33 public class Transition implements Serializable { 34 */ 35 // >>> DAM, TransArray optimzation, now implements the Comparable interface 36 public class Transition implements Serializable, Comparable { 37 // >>> DAM, end 38 39 /** Debug flag */ 40 private static final boolean DEBUG = false; 41 42 /** 43 * Default constructor. Creates a new transition with a new unique index. 44 * This constructor should be called by all other constructors. 45 */ 46 public Transition() { 47 myIndex = Transition.index++; 48 } 49 50 /** 51 * Creates a new transition using the given set of constraints and target 52 * state. 53 * @param constraints the set on constraints associated to this transition 54 * @param state the target state of this transition 55 */ 56 public Transition(BasicPatternElement constraints, State state) { 57 this(); 58 this.constraints = constraints; 59 target = state; 60 bindings = new LinkedList(); 61 } 62 63 /** 64 * Ctreates a new transition from a set of constraints, a target state and a 65 * list of labels to be bound with the recognized input symbols 66 * (aka annotations). 67 */ 68 public Transition(BasicPatternElement constraints, State state, 69 LinkedList bindings) { 70 this(); 71 this.constraints = constraints; 72 target = state; 73 this.bindings = bindings; 74 } 75 76 /** 77 * Gets the target state of this transition 78 * @return an object of type gate.fsm.State 79 */ 80 public State getTarget(){ return target; } 81 82 /** 83 * Gets the constraints associated to this transition 84 */ 85 public BasicPatternElement getConstraints(){ return constraints; } 86 87 /** 88 * Returns a textual desciption of this transition. 89 * @return a String 90 */ 91 public String toString(){ 92 String res = "If: " + constraints + " then ->: " + target.getIndex(); 93 return res; 94 } 95 96 /** 97 * Returns a shorter description that toSting(). 98 * Actually, it returns the unique index in String form. 99 */ 100 public String shortDesc(){ 101 String res = "" + myIndex; 102 return res; 103 } 104 105 /** 106 * Returns the list of bindings associated to this transition 107 */ 108 public LinkedList getBindings(){ return bindings; } 109 110 /** 111 * The constraints on this transition. 112 */ 113 private BasicPatternElement constraints; 114 115 /** 116 * The state this transition leads to 117 */ 118 private State target; 119 120 /** 121 * A list with all the labels associated to the annotations recognized by 122 * this transition. 123 * We need to use the actual object and not the interface (java.util.List) 124 * because we need this object to be cloneable 125 */ 126 private LinkedList bindings; 127 128 /** The unique index of this transition. This value is not used by any of 129 * the algorithms. It is only provided as a convenient method of identifying 130 * the transitions in textual representations (toString() and GML related 131 * methods) 132 */ 133 private int myIndex; 134 135 /** Static member used for generating unique IDs for the objects of type 136 * Transition*/ 137 private static int index = 0; 138 139 // >>> DAM, TransArray optimzation, now implements the Comparable interface 140 public int compareTo(Object o) 141 throws ClassCastException 142 { 143 if (!(o instanceof Transition)) throw new ClassCastException("gate.frm.Transition(compareTo)"); 144 return myIndex - ((Transition)o).myIndex; 145 } 146 // >>> DAM, end 147 } // Transition 148
|
Transition |
|