]> git.saurik.com Git - apple/security.git/blame - libsecurity_codesigning/antlr2/src/LLkParser.cpp
Security-55471.tar.gz
[apple/security.git] / libsecurity_codesigning / antlr2 / src / LLkParser.cpp
CommitLineData
427c49bc
A
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: //depot/code/org.antlr/release/antlr-2.7.7/lib/cpp/src/LLkParser.cpp#2 $
6 */
7
8#include "antlr/LLkParser.hpp"
9#include <stdio.h>
10
11#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
12namespace antlr {
13#endif
14
15ANTLR_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
26LLkParser::LLkParser(const ParserSharedInputState& state, int k_)
27: Parser(state), k(k_)
28{
29}
30
31LLkParser::LLkParser(TokenBuffer& tokenBuf, int k_)
32: Parser(tokenBuf), k(k_)
33{
34}
35
36LLkParser::LLkParser(TokenStream& lexer, int k_)
37: Parser(new TokenBuffer(lexer)), k(k_)
38{
39}
40
41void LLkParser::trace(const char* ee, const char* rname)
42{
43 traceIndent();
44
45 printf("%s", ((string)ee + rname + ((inputState->guessing>0)?"; [guessing]":"; ")).c_str());
46
47 for (int i = 1; i <= k; i++)
48 {
49 if (i != 1) {
50 printf(", ");
51 }
52 printf("LA(%d)==", 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 printf("%s", temp.c_str());
66 }
67
68 printf("\n");;
69}
70
71void LLkParser::traceIn(const char* rname)
72{
73 traceDepth++;
74 trace("> ",rname);
75}
76
77void LLkParser::traceOut(const char* rname)
78{
79 trace("< ",rname);
80 traceDepth--;
81}
82
83#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
84}
85#endif