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

# User Rev Content
1 tim 2469 #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__