ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/antlr/Token.hpp
Revision: 2469
Committed: Fri Dec 2 15:38:03 2005 UTC (18 years, 7 months ago) by tim
File size: 2223 byte(s)
Log Message:
End of the Link --> List
Return of the Oject-Oriented
replace yacc/lex parser with antlr parser

File Contents

# Content
1 #ifndef INC_Token_hpp__
2 #define INC_Token_hpp__
3
4 /* ANTLR Translator Generator
5 * Project led by Terence Parr at http://www.jGuru.com
6 * Software rights: http://www.antlr.org/license.html
7 *
8 * $Id: Token.hpp,v 1.1 2005-12-02 15:38:02 tim Exp $
9 */
10
11 #include <antlr/config.hpp>
12 #include <antlr/TokenRefCount.hpp>
13 #include <string>
14
15 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
16 namespace antlr {
17 #endif
18
19 struct TokenRef;
20
21 /** A token is minimally a token type. Subclasses can add the text matched
22 * for the token and line info.
23 */
24 class ANTLR_API Token
25 {
26 public:
27 // constants
28 #ifndef NO_STATIC_CONSTS
29 static const int MIN_USER_TYPE = 4;
30 static const int NULL_TREE_LOOKAHEAD = 3;
31 static const int INVALID_TYPE = 0;
32 static const int EOF_TYPE = 1;
33 static const int SKIP = -1;
34 #else
35 enum {
36 MIN_USER_TYPE = 4,
37 NULL_TREE_LOOKAHEAD = 3,
38 INVALID_TYPE = 0,
39 EOF_TYPE = 1,
40 SKIP = -1
41 };
42 #endif
43
44 Token()
45 : ref(0)
46 , type(INVALID_TYPE)
47 {
48 }
49 Token(int t)
50 : ref(0)
51 , type(t)
52 {
53 }
54 Token(int t, const ANTLR_USE_NAMESPACE(std)string& txt)
55 : ref(0)
56 , type(t)
57 {
58 setText(txt);
59 }
60 virtual ~Token()
61 {
62 }
63
64 virtual int getColumn() const;
65 virtual int getLine() const;
66 virtual ANTLR_USE_NAMESPACE(std)string getText() const;
67 virtual const ANTLR_USE_NAMESPACE(std)string& getFilename() const;
68 virtual int getType() const;
69
70 virtual void setColumn(int c);
71
72 virtual void setLine(int l);
73 virtual void setText(const ANTLR_USE_NAMESPACE(std)string& t);
74 virtual void setType(int t);
75
76 virtual void setFilename( const std::string& file );
77
78 virtual ANTLR_USE_NAMESPACE(std)string toString() const;
79
80 private:
81 friend struct TokenRef;
82 TokenRef* ref;
83
84 int type; ///< the type of the token
85
86 Token(RefToken other);
87 Token& operator=(const Token& other);
88 Token& operator=(RefToken other);
89
90 Token(const Token&);
91 };
92
93 extern ANTLR_API RefToken nullToken;
94
95 #ifdef NEEDS_OPERATOR_LESS_THAN
96 // RK: Added after 2.7.2 previously it was undefined.
97 // AL: what to return if l and/or r point to nullToken???
98 inline bool operator<( RefToken l, RefToken r )
99 {
100 return nullToken == l ? ( nullToken == r ? false : true ) : l->getType() < r->getType();
101 }
102 #endif
103
104 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
105 }
106 #endif
107
108 #endif //INC_Token_hpp__