ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-2.0/src/antlr/ParserSharedInputState.hpp
Revision: 2469
Committed: Fri Dec 2 15:38:03 2005 UTC (18 years, 7 months ago) by tim
File size: 2079 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_ParserSharedInputState_hpp__
2     #define INC_ParserSharedInputState_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: ParserSharedInputState.hpp,v 1.1 2005-12-02 15:38:02 tim Exp $
9     */
10    
11     #include <antlr/config.hpp>
12     #include <antlr/TokenBuffer.hpp>
13     #include <antlr/RefCount.hpp>
14     #include <string>
15    
16     #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
17     namespace antlr {
18     #endif
19    
20     /** This object contains the data associated with an
21     * input stream of tokens. Multiple parsers
22     * share a single ParserSharedInputState to parse
23     * the same stream of tokens.
24     */
25     class ANTLR_API ParserInputState {
26     public:
27     /** Construct a new ParserInputState
28     * @param in the TokenBuffer to read from. The object is deleted together
29     * with the ParserInputState object.
30     */
31     ParserInputState( TokenBuffer* in )
32     : guessing(0)
33     , filename()
34     , input(in)
35     , inputResponsible(true)
36     {
37     }
38     /** Construct a new ParserInputState
39     * @param in the TokenBuffer to read from.
40     */
41     ParserInputState( TokenBuffer& in )
42     : guessing(0)
43     , filename("")
44     , input(&in)
45     , inputResponsible(false)
46     {
47     }
48    
49     virtual ~ParserInputState()
50     {
51     if (inputResponsible)
52     delete input;
53     }
54    
55     TokenBuffer& getInput( void )
56     {
57     return *input;
58     }
59    
60     /// Reset the ParserInputState and the underlying TokenBuffer
61     void reset( void )
62     {
63     input->reset();
64     guessing = 0;
65     }
66    
67     public:
68     /** Are we guessing (guessing>0)? */
69     int guessing;
70     /** What file (if known) caused the problem?
71     * @todo wrap this one..
72     */
73     ANTLR_USE_NAMESPACE(std)string filename;
74     private:
75     /** Where to get token objects */
76     TokenBuffer* input;
77     /// Do we need to free the TokenBuffer or is it owned by another..
78     bool inputResponsible;
79    
80     // we don't want these:
81     ParserInputState(const ParserInputState&);
82     ParserInputState& operator=(const ParserInputState&);
83     };
84    
85     /// A reference counted ParserInputState
86     typedef RefCount<ParserInputState> ParserSharedInputState;
87    
88     #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
89     }
90     #endif
91    
92     #endif //INC_ParserSharedInputState_hpp__