KDevelop API Documentation

lib/antlr/src/TreeParser.cpp

Go to the documentation of this file.
00001 /* ANTLR Translator Generator 00002 * Project led by Terence Parr at http://www.jGuru.com 00003 * Software rights: http://www.antlr.org/RIGHTS.html 00004 * 00005 * $Id: TreeParser.cpp,v 1.2 2003/05/02 00:36:20 okellogg Exp $ 00006 */ 00007 00008 #include "antlr/TreeParser.hpp" 00009 #include "antlr/ASTNULLType.hpp" 00010 #include "antlr/MismatchedTokenException.hpp" 00011 #include <iostream> 00012 #include <stdio.h> 00013 00014 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE 00015 namespace antlr { 00016 #endif 00017 00018 ANTLR_C_USING(exit) 00019 00020 TreeParser::TreeParser() 00021 : astFactory(0), inputState(new TreeParserInputState()), traceDepth(0) 00022 { 00023 } 00024 00025 TreeParser::TreeParser(const TreeParserSharedInputState& state) 00026 : astFactory(0), inputState(state), traceDepth(0) 00027 { 00028 } 00029 00030 TreeParser::~TreeParser() 00031 { 00032 } 00033 00039 RefAST TreeParser::ASTNULL(new ASTNULLType); 00040 00042 //RefAST getAST() const { 00043 // return returnAST; 00044 //} 00045 00046 void TreeParser::match(RefAST t, int ttype) 00047 { 00048 if (!t || t==ASTNULL || t->getType()!=ttype) 00049 throw MismatchedTokenException(); 00050 } 00051 00056 void TreeParser::match(RefAST t, const BitSet& b) 00057 { 00058 if ( !t || t==ASTNULL || !b.member(t->getType()) ) { 00059 throw MismatchedTokenException(); 00060 } 00061 } 00062 00063 void TreeParser::matchNot(RefAST t, int ttype) 00064 { 00065 //ANTLR_USE_NAMESPACE(std)cout << "match(" << ttype << "); cursor is " << t.toString() << ANTLR_USE_NAMESPACE(std)endl; 00066 if ( !t || t==ASTNULL || t->getType()==ttype ) { 00067 throw MismatchedTokenException(); 00068 } 00069 } 00070 00071 void TreeParser::panic() 00072 { 00073 ANTLR_USE_NAMESPACE(std)cerr << "TreeWalker: panic" << ANTLR_USE_NAMESPACE(std)endl; 00074 exit(1); 00075 } 00076 00078 void TreeParser::reportError(const RecognitionException& ex) 00079 { 00080 ANTLR_USE_NAMESPACE(std)cerr << ex.toString().c_str() << ANTLR_USE_NAMESPACE(std)endl; 00081 } 00082 00084 void TreeParser::reportError(const ANTLR_USE_NAMESPACE(std)string& s) 00085 { 00086 ANTLR_USE_NAMESPACE(std)cerr << "error: " << s.c_str() << ANTLR_USE_NAMESPACE(std)endl; 00087 } 00088 00090 void TreeParser::reportWarning(const ANTLR_USE_NAMESPACE(std)string& s) 00091 { 00092 ANTLR_USE_NAMESPACE(std)cerr << "warning: " << s.c_str() << ANTLR_USE_NAMESPACE(std)endl; 00093 } 00094 00096 void TreeParser::traceIndent() 00097 { 00098 for( int i = 0; i < traceDepth; i++ ) 00099 ANTLR_USE_NAMESPACE(std)cout << " "; 00100 } 00101 00102 void TreeParser::traceIn(const char* rname, RefAST t) 00103 { 00104 traceDepth++; 00105 traceIndent(); 00106 00107 ANTLR_USE_NAMESPACE(std)cout << "> " << rname 00108 << "(" << (t ? t->toString().c_str() : "null") << ")" 00109 << ((inputState->guessing>0)?" [guessing]":"") 00110 << ANTLR_USE_NAMESPACE(std)endl; 00111 } 00112 00113 void TreeParser::traceOut(const char* rname, RefAST t) 00114 { 00115 traceIndent(); 00116 00117 ANTLR_USE_NAMESPACE(std)cout << "< " << rname 00118 << "(" << (t ? t->toString().c_str() : "null") << ")" 00119 << ((inputState->guessing>0)?" [guessing]":"") 00120 << ANTLR_USE_NAMESPACE(std)endl; 00121 00122 traceDepth--; 00123 } 00124 00125 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE 00126 } 00127 #endif
KDE Logo
This file is part of the documentation for KDevelop Version 3.0.4.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Oct 19 08:01:47 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003