01: /*
02: * Sun Public License Notice
03: *
04: * The contents of this file are subject to the Sun Public License
05: * Version 1.0 (the "License"). You may not use this file except in
06: * compliance with the License. A copy of the License is available at
07: * http://www.sun.com/
08: *
09: * The Original Code is NetBeans. The Initial Developer of the Original
10: * Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun
11: * Microsystems, Inc. All Rights Reserved.
12: */
13:
14: package org.netbeans.editor;
15:
16: /**
17: * Process the tokens
18: *
19: * @author Miloslav Metelka
20: * @version 1.00
21: */
22:
23: public interface TokenProcessor {
24:
25: /**
26: * Notify that the token was found.
27: *
28: * @param tokenID
29: * ID of the token found
30: * @param tokenContextPath
31: * Context-path in which the token that was found.
32: * @param tokenBufferOffset
33: * Offset of the token in the buffer. The buffer is provided in
34: * the <tt>nextBuffer()</tt> method.
35: * @param tokenLength
36: * Length of the token found
37: * @return true if the next token should be searched or false if the scan
38: * should be stopped completely.
39: */
40: public boolean token(TokenID tokenID,
41: TokenContextPath tokenContextPath, int tokenBufferOffset,
42: int tokenLength);
43:
44: /**
45: * Notify that end of scanned buffer was found. The method decides whether
46: * to continue the scan or stop. The rest of characters that were not
47: * scanned, because the is not completed is also provided.
48: *
49: * @param offset
50: * offset of the rest of the characters
51: * @return 0 to stop token processing, > 0 process additional characters
52: * in the document
53: */
54: public int eot(int offset);
55:
56: /**
57: * Notify that the following buffer will be scanned. This method is called
58: * before the buffer is being scanned.
59: *
60: * @param buffer
61: * buffer that will be scanned. To get the text of the tokens the
62: * buffer should be stored in some instance variable.
63: * @param offset
64: * offset in the buffer with the first character to be scanned.
65: * If doesn't reflect the possible preScan. If the preScan would
66: * be non-zero then the first buffer offset that contains the
67: * valid data is <tt>offset - preScan</tt>.
68: * @param len
69: * count of the characters that will be scanned. It doesn't
70: * reflect the ppossible reScan.
71: * @param startPos
72: * starting position of the scanning in the document. It
73: * logically corresponds to the <tt>offset</tt> because of the
74: * same text data both in the buffer and in the document. It
75: * again doesn't reflect the possible preScan and the
76: * <tt>startPos - preScan</tt> gives the real start of the
77: * first token. If it's necessary to know the position of each
78: * token, it's a good idea to store the value
79: * <tt>startPos - offset</tt> in an instance variable that
80: * could be called <tt>bufferStartPos</tt>. The position of
81: * the token can be then computed as
82: * <tt>bufferStartPos + tokenBufferOffset</tt>.
83: * @param preScan
84: * preScan needed for the scanning.
85: * @param lastBuffer
86: * whether this is the last buffer to scan in the document so
87: * there are no more characters in the document after this
88: * buffer. @
89: */
90: public void nextBuffer(char[] buffer, int offset, int len,
91: int startPos, int preScan, boolean lastBuffer);
92:
93: }
|