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