KDevelop API Documentation

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.1.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Mar 23 00:03:50 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003