~ubuntu-branches/debian/sid/kdevelop/sid

« back to all changes in this revision

Viewing changes to lib/antlr/src/LLkParser.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Jeremy Lainé
  • Date: 2010-05-05 07:21:55 UTC
  • mfrom: (1.2.3 upstream) (5.1.2 squeeze)
  • Revision ID: james.westby@ubuntu.com-20100505072155-h78lx19pu04sbhtn
Tags: 4:4.0.0-2
* Upload to unstable (Closes: #579947, #481832).
* Acknowledge obsolete NMU fixes (Closes: #562410, #546961).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* ANTLR Translator Generator
2
 
 * Project led by Terence Parr at http://www.jGuru.com
3
 
 * Software rights: http://www.antlr.org/license.html
4
 
 *
5
 
 * $Id: LLkParser.cpp 626096 2007-01-22 06:35:06Z okellogg $
6
 
 */
7
 
 
8
 
#include "antlr/LLkParser.hpp"
9
 
#include <iostream>
10
 
 
11
 
#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
12
 
namespace antlr {
13
 
#endif
14
 
 
15
 
ANTLR_USING_NAMESPACE(std)
16
 
 
17
 
/**An LL(k) parser.
18
 
 *
19
 
 * @see antlr.Token
20
 
 * @see antlr.TokenBuffer
21
 
 * @see antlr.LL1Parser
22
 
 */
23
 
 
24
 
//      LLkParser(int k_);
25
 
 
26
 
LLkParser::LLkParser(const ParserSharedInputState& state, int k_)
27
 
: Parser(state), k(k_)
28
 
{
29
 
}
30
 
 
31
 
LLkParser::LLkParser(TokenBuffer& tokenBuf, int k_)
32
 
: Parser(tokenBuf), k(k_)
33
 
{
34
 
}
35
 
 
36
 
LLkParser::LLkParser(TokenStream& lexer, int k_)
37
 
: Parser(new TokenBuffer(lexer)), k(k_)
38
 
{
39
 
}
40
 
 
41
 
void LLkParser::trace(const char* ee, const char* rname)
42
 
{
43
 
        traceIndent();
44
 
 
45
 
        cout << ee << rname << ((inputState->guessing>0)?"; [guessing]":"; ");
46
 
 
47
 
        for (int i = 1; i <= k; i++)
48
 
        {
49
 
                if (i != 1) {
50
 
                        cout << ", ";
51
 
                }
52
 
                cout << "LA(" << i << ")==";
53
 
 
54
 
                string temp;
55
 
 
56
 
                try {
57
 
                        temp = LT(i)->getText().c_str();
58
 
                }
59
 
                catch( ANTLRException& ae )
60
 
                {
61
 
                        temp = "[error: ";
62
 
                        temp += ae.toString();
63
 
                        temp += ']';
64
 
                }
65
 
                cout << temp;
66
 
        }
67
 
 
68
 
        cout << endl;
69
 
}
70
 
 
71
 
void LLkParser::traceIn(const char* rname)
72
 
{
73
 
        traceDepth++;
74
 
        trace("> ",rname);
75
 
}
76
 
 
77
 
void LLkParser::traceOut(const char* rname)
78
 
{
79
 
        trace("< ",rname);
80
 
        traceDepth--;
81
 
}
82
 
 
83
 
#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
84
 
}
85
 
#endif