1#ifndef INC_RequirementParser_hpp_
2#define INC_RequirementParser_hpp_
3
4#include <antlr/config.hpp>
5/* $ANTLR 2.7.7 (20120228): "requirements.grammar" -> "RequirementParser.hpp"$ */
6#include <antlr/TokenStream.hpp>
7#include <antlr/TokenBuffer.hpp>
8#include "RequirementParserTokenTypes.hpp"
9#include <antlr/LLkParser.hpp>
10
11
12#include "requirement.h"
13using namespace CodeSigning;
14typedef Requirement::Maker Maker;
15
16ANTLR_BEGIN_NAMESPACE(Security_CodeSigning)
17class CUSTOM_API RequirementParser : public antlr::LLkParser, public RequirementParserTokenTypes
18{
19
20public:
21	std::string errors;
22	void reportError(const antlr::RecognitionException &ex);
23	void reportError(const std::string &s);
24
25private:
26	static string hexString(const string &s);
27	static void hashString(const string &s, SHA1::Digest hash);
28	void certMatchOperation(Maker &maker, int32_t slot, string key);
29public:
30	void initializeASTFactory( antlr::ASTFactory& factory );
31protected:
32	RequirementParser(antlr::TokenBuffer& tokenBuf, int k);
33public:
34	RequirementParser(antlr::TokenBuffer& tokenBuf);
35protected:
36	RequirementParser(antlr::TokenStream& lexer, int k);
37public:
38	RequirementParser(antlr::TokenStream& lexer);
39	RequirementParser(const antlr::ParserSharedInputState& state);
40	int getNumTokens() const
41	{
42		return RequirementParser::NUM_TOKENS;
43	}
44	const char* getTokenName( int type ) const
45	{
46		if( type > getNumTokens() ) return 0;
47		return RequirementParser::tokenNames[type];
48	}
49	const char* const* getTokenNames() const
50	{
51		return RequirementParser::tokenNames;
52	}
53	public: BlobCore * autosense();
54	public: Requirement * requirement();
55	public: Requirements * requirementSet();
56	public: uint32_t  requirementType();
57	public: Requirement * requirementElement();
58	public: void expr(
59		Maker &maker
60	);
61	public: void fluff();
62	public: void term(
63		Maker &maker
64	);
65	public: void primary(
66		Maker &maker
67	);
68	public: void certspec(
69		Maker &maker
70	);
71	public: void infospec(
72		Maker &maker
73	);
74	public: void entitlementspec(
75		Maker &maker
76	);
77	public: void eql();
78	public: string  identifierString();
79	public: void hash(
80		SHA1::Digest digest
81	);
82	public: void appleanchor(
83		Maker &maker
84	);
85	public: int32_t  certSlot();
86	public: void certslotspec(
87		Maker &maker, int32_t slot
88	);
89	public: void empty();
90	public: void certificateDigest(
91		SHA1::Digest digest
92	);
93	public: string  bracketKey();
94	public: void match_suffix(
95		Maker &maker
96	);
97	public: string  datavalue();
98	public: string  stringvalue();
99	public: string  pathstring();
100public:
101	antlr::RefAST getAST()
102	{
103		return returnAST;
104	}
105
106protected:
107	antlr::RefAST returnAST;
108private:
109	static const char* tokenNames[];
110#ifndef NO_STATIC_CONSTS
111	static const int NUM_TOKENS = 57;
112#else
113	enum {
114		NUM_TOKENS = 57
115	};
116#endif
117
118	static const unsigned long _tokenSet_0_data_[];
119	static const antlr::BitSet _tokenSet_0;
120	static const unsigned long _tokenSet_1_data_[];
121	static const antlr::BitSet _tokenSet_1;
122	static const unsigned long _tokenSet_2_data_[];
123	static const antlr::BitSet _tokenSet_2;
124	static const unsigned long _tokenSet_3_data_[];
125	static const antlr::BitSet _tokenSet_3;
126	static const unsigned long _tokenSet_4_data_[];
127	static const antlr::BitSet _tokenSet_4;
128	static const unsigned long _tokenSet_5_data_[];
129	static const antlr::BitSet _tokenSet_5;
130	static const unsigned long _tokenSet_6_data_[];
131	static const antlr::BitSet _tokenSet_6;
132	static const unsigned long _tokenSet_7_data_[];
133	static const antlr::BitSet _tokenSet_7;
134	static const unsigned long _tokenSet_8_data_[];
135	static const antlr::BitSet _tokenSet_8;
136	static const unsigned long _tokenSet_9_data_[];
137	static const antlr::BitSet _tokenSet_9;
138	static const unsigned long _tokenSet_10_data_[];
139	static const antlr::BitSet _tokenSet_10;
140	static const unsigned long _tokenSet_11_data_[];
141	static const antlr::BitSet _tokenSet_11;
142	static const unsigned long _tokenSet_12_data_[];
143	static const antlr::BitSet _tokenSet_12;
144	static const unsigned long _tokenSet_13_data_[];
145	static const antlr::BitSet _tokenSet_13;
146	static const unsigned long _tokenSet_14_data_[];
147	static const antlr::BitSet _tokenSet_14;
148	static const unsigned long _tokenSet_15_data_[];
149	static const antlr::BitSet _tokenSet_15;
150};
151
152ANTLR_END_NAMESPACE
153#endif /*INC_RequirementParser_hpp_*/
154