/ OSX / libsecurity_codesigning / lib / RequirementParser.hpp
RequirementParser.hpp
  1  #ifndef INC_RequirementParser_hpp_
  2  #define INC_RequirementParser_hpp_
  3  
  4  #include <antlr/config.hpp>
  5  /* $ANTLR 2.7.7 (20121221): "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"
 13  using namespace CodeSigning;
 14  typedef Requirement::Maker Maker;
 15  
 16  ANTLR_BEGIN_NAMESPACE(Security_CodeSigning)
 17  class CUSTOM_API RequirementParser : public antlr::LLkParser, public RequirementParserTokenTypes
 18  {
 19  
 20  public:
 21  	std::string errors;
 22  	void reportError(const antlr::RecognitionException &ex);
 23  	void reportError(const std::string &s);
 24  
 25  private:
 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);
 29  public:
 30  	void initializeASTFactory( antlr::ASTFactory& factory );
 31  protected:
 32  	RequirementParser(antlr::TokenBuffer& tokenBuf, int k);
 33  public:
 34  	RequirementParser(antlr::TokenBuffer& tokenBuf);
 35  protected:
 36  	RequirementParser(antlr::TokenStream& lexer, int k);
 37  public:
 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: int32_t  integer();
 59  	public: void expr(
 60  		Maker &maker
 61  	);
 62  	public: void fluff();
 63  	public: void term(
 64  		Maker &maker
 65  	);
 66  	public: void primary(
 67  		Maker &maker
 68  	);
 69  	public: void certspec(
 70  		Maker &maker
 71  	);
 72  	public: void infospec(
 73  		Maker &maker
 74  	);
 75  	public: void entitlementspec(
 76  		Maker &maker
 77  	);
 78  	public: void eql();
 79  	public: string  identifierString();
 80  	public: void hash(
 81  		SHA1::Digest digest
 82  	);
 83  	public: void appleanchor(
 84  		Maker &maker
 85  	);
 86  	public: int32_t  certSlot();
 87  	public: void certslotspec(
 88  		Maker &maker, int32_t slot
 89  	);
 90  	public: void empty();
 91  	public: void certificateDigest(
 92  		SHA1::Digest digest
 93  	);
 94  	public: string  bracketKey();
 95  	public: void match_suffix(
 96  		Maker &maker
 97  	);
 98  	public: string  datavalue();
 99  	public: int64_t  timestamp();
100  	public: string  stringvalue();
101  	public: string  pathstring();
102  public:
103  	antlr::RefAST getAST()
104  	{
105  		return returnAST;
106  	}
107  	
108  protected:
109  	antlr::RefAST returnAST;
110  private:
111  	static const char* tokenNames[];
112  #ifndef NO_STATIC_CONSTS
113  	static const int NUM_TOKENS = 62;
114  #else
115  	enum {
116  		NUM_TOKENS = 62
117  	};
118  #endif
119  	
120  	static const unsigned long _tokenSet_0_data_[];
121  	static const antlr::BitSet _tokenSet_0;
122  	static const unsigned long _tokenSet_1_data_[];
123  	static const antlr::BitSet _tokenSet_1;
124  	static const unsigned long _tokenSet_2_data_[];
125  	static const antlr::BitSet _tokenSet_2;
126  	static const unsigned long _tokenSet_3_data_[];
127  	static const antlr::BitSet _tokenSet_3;
128  	static const unsigned long _tokenSet_4_data_[];
129  	static const antlr::BitSet _tokenSet_4;
130  	static const unsigned long _tokenSet_5_data_[];
131  	static const antlr::BitSet _tokenSet_5;
132  	static const unsigned long _tokenSet_6_data_[];
133  	static const antlr::BitSet _tokenSet_6;
134  	static const unsigned long _tokenSet_7_data_[];
135  	static const antlr::BitSet _tokenSet_7;
136  	static const unsigned long _tokenSet_8_data_[];
137  	static const antlr::BitSet _tokenSet_8;
138  	static const unsigned long _tokenSet_9_data_[];
139  	static const antlr::BitSet _tokenSet_9;
140  	static const unsigned long _tokenSet_10_data_[];
141  	static const antlr::BitSet _tokenSet_10;
142  	static const unsigned long _tokenSet_11_data_[];
143  	static const antlr::BitSet _tokenSet_11;
144  	static const unsigned long _tokenSet_12_data_[];
145  	static const antlr::BitSet _tokenSet_12;
146  	static const unsigned long _tokenSet_13_data_[];
147  	static const antlr::BitSet _tokenSet_13;
148  	static const unsigned long _tokenSet_14_data_[];
149  	static const antlr::BitSet _tokenSet_14;
150  	static const unsigned long _tokenSet_15_data_[];
151  	static const antlr::BitSet _tokenSet_15;
152  	static const unsigned long _tokenSet_16_data_[];
153  	static const antlr::BitSet _tokenSet_16;
154  	static const unsigned long _tokenSet_17_data_[];
155  	static const antlr::BitSet _tokenSet_17;
156  	static const unsigned long _tokenSet_18_data_[];
157  	static const antlr::BitSet _tokenSet_18;
158  };
159  
160  ANTLR_END_NAMESPACE
161  #endif /*INC_RequirementParser_hpp_*/