1/*
2 * [The "BSD licence"]
3 * Copyright (c) 2005-2008 Terence Parr
4 * All rights reserved.
5 *
6 * Conversion to C#:
7 * Copyright (c) 2008-2009 Sam Harwell, Pixel Mine, Inc.
8 * All rights reserved.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 *    notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 *    notice, this list of conditions and the following disclaimer in the
17 *    documentation and/or other materials provided with the distribution.
18 * 3. The name of the author may not be used to endorse or promote products
19 *    derived from this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
22 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
24 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
25 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
26 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32
33namespace Antlr.Runtime {
34
35    public interface IToken {
36        /** <summary>Get the text of the token</summary> */
37        string Text {
38            get;
39            set;
40        }
41
42        int Type {
43            get;
44            set;
45        }
46
47        /** <summary>The line number on which this token was matched; line=1..n</summary> */
48        int Line {
49            get;
50            set;
51        }
52
53        /** <summary>The index of the first character relative to the beginning of the line 0..n-1</summary> */
54        int CharPositionInLine {
55            get;
56            set;
57        }
58
59        int Channel {
60            get;
61            set;
62        }
63
64        int StartIndex {
65            get;
66            set;
67        }
68
69        int StopIndex {
70            get;
71            set;
72        }
73
74        /** <summary>
75         *  An index from 0..n-1 of the token object in the input stream.
76         *  This must be valid in order to use the ANTLRWorks debugger.
77         *  </summary>
78         */
79        int TokenIndex {
80            get;
81            set;
82        }
83
84        /** <summary>
85         *  From what character stream was this token created?  You don't have to
86         *  implement but it's nice to know where a Token comes from if you have
87         *  include files etc... on the input.
88         *  </summary>
89         */
90        ICharStream InputStream {
91            get;
92            set;
93        }
94    }
95}
96