LLkParser.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #include "antlr/LLkParser.hpp"
00009 #include <iostream>
00010
00011 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
00012 namespace antlr {
00013 #endif
00014
00015 ANTLR_USING_NAMESPACE(std)
00016
00017
00024
00025
00026 LLkParser::LLkParser(const ParserSharedInputState& state, int k_)
00027 : Parser(state), k(k_)
00028 {
00029 }
00030
00031 LLkParser::LLkParser(TokenBuffer& tokenBuf, int k_)
00032 : Parser(tokenBuf), k(k_)
00033 {
00034 }
00035
00036 LLkParser::LLkParser(TokenStream& lexer, int k_)
00037 : Parser(new TokenBuffer(lexer)), k(k_)
00038 {
00039 }
00040
00041 void LLkParser::trace(const char* ee, const char* rname)
00042 {
00043 traceIndent();
00044
00045 cout << ee << rname << ((inputState->guessing>0)?"; [guessing]":"; ");
00046
00047 for (int i = 1; i <= k; i++)
00048 {
00049 if (i != 1) {
00050 cout << ", ";
00051 }
00052 cout << "LA(" << i << ")==";
00053
00054 string temp;
00055
00056 try {
00057 temp = LT(i)->getText().c_str();
00058 }
00059 catch( ANTLRException& ae )
00060 {
00061 temp = "[error: ";
00062 temp += ae.toString();
00063 temp += ']';
00064 }
00065 cout << temp;
00066 }
00067
00068 cout << endl;
00069 }
00070
00071 void LLkParser::traceIn(const char* rname)
00072 {
00073 traceDepth++;
00074 trace("> ",rname);
00075 }
00076
00077 void LLkParser::traceOut(const char* rname)
00078 {
00079 trace("< ",rname);
00080 traceDepth--;
00081 }
00082
00083 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
00084 }
00085 #endif
This file is part of the documentation for KDevelop Version 3.1.2.