ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/antlr/LLkParser.hpp
Revision: 2469
Committed: Fri Dec 2 15:38:03 2005 UTC (18 years, 7 months ago) by tim
File size: 1573 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_LLkParser_hpp__
2     #define INC_LLkParser_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: LLkParser.hpp,v 1.1 2005-12-02 15:38:02 tim Exp $
9     */
10    
11     #include <antlr/config.hpp>
12     #include <antlr/Parser.hpp>
13    
14     #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
15     namespace antlr {
16     #endif
17    
18     /**An LL(k) parser.
19     *
20     * @see antlr.Token
21     * @see antlr.TokenBuffer
22     * @see antlr.LL1Parser
23     */
24     class ANTLR_API LLkParser : public Parser {
25     public:
26     LLkParser(const ParserSharedInputState& lexer, int k_);
27    
28     LLkParser(TokenBuffer& tokenBuf, int k_);
29    
30     LLkParser(TokenStream& lexer, int k_);
31    
32     /** Consume another token from the input stream. Can only write sequentially!
33     * If you need 3 tokens ahead, you must consume() 3 times.
34     * <p>
35     * Note that it is possible to overwrite tokens that have not been matched.
36     * For example, calling consume() 3 times when k=2, means that the first token
37     * consumed will be overwritten with the 3rd.
38     */
39     virtual inline void consume()
40     {
41     inputState->getInput().consume();
42     }
43    
44     virtual inline int LA(unsigned int i)
45     {
46     return inputState->getInput().LA(i);
47     }
48    
49     virtual inline RefToken LT(unsigned int i)
50     {
51     return inputState->getInput().LT(i);
52     }
53     protected:
54     /// the lookahead this LL(k) parser is using.
55     int k;
56     private:
57     void trace(const char* ee, const char* rname);
58     public:
59     virtual void traceIn(const char* rname);
60     virtual void traceOut(const char* rname);
61     };
62    
63     #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
64     }
65     #endif
66    
67     #endif //INC_LLkParser_hpp__