ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/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

# Content
1 #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__