lib/antlr/src/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.0.4.