00001
#ifndef INC_TreeParser_hpp__
00002
#define INC_TreeParser_hpp__
00003
00004
00005
00006
00007
00008
00009
00010
00011
#include <antlr/config.hpp>
00012
#include <antlr/AST.hpp>
00013
#include <antlr/ASTFactory.hpp>
00014
#include <antlr/BitSet.hpp>
00015
#include <antlr/RecognitionException.hpp>
00016
#include <antlr/TreeParserSharedInputState.hpp>
00017
00018
#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
00019
namespace antlr {
00020
#endif
00021
00022 class ANTLR_API TreeParser {
00023
public:
00024 TreeParser();
00025 TreeParser(
const TreeParserSharedInputState& state);
00026
virtual ~TreeParser();
00027
00029 RefAST getAST()
const
00030
{
00031
return returnAST;
00032 }
00033
00038
virtual void match(
RefAST t,
const BitSet& b);
00039
00046 virtual void setASTFactory(
ASTFactory* factory)
00047 {
00048 astFactory = factory;
00049 }
00051 virtual ASTFactory* getASTFactory()
const
00052
{
00053
return astFactory;
00054 }
00056
virtual const char* getTokenName(
int num)
const = 0;
00057
virtual int getNumTokens() const = 0;
00058
00060 virtual
void reportError(const
RecognitionException& ex);
00062 virtual
void reportError(const ANTLR_USE_NAMESPACE(std)string& s);
00064 virtual
void reportWarning(const ANTLR_USE_NAMESPACE(std)string& s);
00066 static
void panic();
00067
00069 virtual
void traceIndent();
00070 virtual
void traceIn(const
char* rname,
RefAST t);
00071 virtual
void traceOut(const
char* rname,
RefAST t);
00072
00078 static
RefAST ASTNULL;
00079
00080 protected:
00081 virtual
void match(
RefAST t,
int ttype);
00082 virtual
void matchNot(
RefAST t,
int ttype);
00083
00085 RefAST _retTree;
00087 RefAST returnAST;
00089 ASTFactory* astFactory;
00090
00092 TreeParserSharedInputState inputState;
00093
00095 int traceDepth;
00096
00100 class
Tracer {
00101
private:
00102 TreeParser* parser;
00103 const char*
text;
00104 RefAST tree;
00105
public:
00106 Tracer(TreeParser* p,
const char* t,
RefAST a)
00107 : parser(p),
text(t), tree(a)
00108 {
00109 parser->
traceIn(
text,tree);
00110 }
00111 ~Tracer()
00112 {
00113 parser->
traceOut(
text,tree);
00114 }
00115
private:
00116 Tracer(
const Tracer&);
00117
const Tracer& operator=(
const Tracer&);
00118 };
00119
00120
private:
00121
00122 TreeParser(
const TreeParser& other);
00123 TreeParser& operator=(
const TreeParser& other);
00124 };
00125
00126
#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
00127
}
00128
#endif
00129
00130
#endif //INC_TreeParser_hpp__