1   /*
2    *  Matcher.java - transducer class
3    *
4    *  Copyright (c) 1998-2005, 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   *  Hamish Cunningham, 24/07/98
12   *
13   *  $Id: Matcher.java,v 1.7 2005/01/11 13:51:36 ian Exp $
14   */
15  
16  
17  package gate.jape;
18  
19  import gate.Document;
20  
21  
22  /**
23    * Interface to be implemented by classes providing matching on documents,
24    * e.g. PatternElement and LeftHandSide.
25    */
26  public interface Matcher extends java.io.Serializable
27  {
28    /** Does this element match the document at this position? */
29    abstract public boolean matches(
30      Document doc, int position, MutableInteger newPosition
31    );
32  
33    /** Reset: clear annotation caches etc. */
34    abstract public void reset();
35  
36    /** Finish: replace dynamic data structures with Java arrays; called
37      * after parsing.
38      */
39    abstract public void finish();
40  
41  } // class Matcher
42  
43  
44  // $Log: Matcher.java,v $
45  // Revision 1.7  2005/01/11 13:51:36  ian
46  // Updating copyrights to 1998-2005 in preparation for v3.0
47  //
48  // Revision 1.6  2004/07/21 17:10:08  akshay
49  // Changed copyright from 1998-2001 to 1998-2004
50  //
51  // Revision 1.5  2004/03/25 13:01:14  valyt
52  // Imports optimisation throughout the Java sources
53  // (to get rid of annoying warnings in Eclipse)
54  //
55  // Revision 1.4  2001/09/13 12:09:50  kalina
56  // Removed completely the use of jgl.objectspace.Array and such.
57  // Instead all sources now use the new Collections, typically ArrayList.
58  // I ran the tests and I ran some documents and compared with keys.
59  // JAPE seems to work well (that's where it all was). If there are problems
60  // maybe look at those new structures first.
61  //
62  // Revision 1.3  2000/11/08 16:35:03  hamish
63  // formatting
64  //
65  // Revision 1.2  2000/10/10 15:36:36  oana
66  // Changed System.out in Out and System.err in Err;
67  // Added the DEBUG variable seted on false;
68  // Added in the header the licence;
69  //
70  // Revision 1.1  2000/02/23 13:46:08  hamish
71  // added
72  //
73  // Revision 1.1.1.1  1999/02/03 16:23:02  hamish
74  // added gate2
75  //
76  // Revision 1.4  1998/11/01 21:21:38  hamish
77  // use Java arrays in transduction where possible
78  //
79  // Revision 1.3  1998/10/29 12:09:08  hamish
80  // added serializable
81  //
82  // Revision 1.2  1998/08/12 15:39:38  hamish
83  // added padding toString methods
84  //
85  // Revision 1.1  1998/08/03 19:51:23  hamish
86  // rollback added
87