RequirementParser.hpp   [plain text]


#ifndef INC_RequirementParser_hpp_
#define INC_RequirementParser_hpp_

#include <antlr/config.hpp>
/* $ANTLR 2.7.7 (20120228): "requirements.grammar" -> "RequirementParser.hpp"$ */
#include <antlr/TokenStream.hpp>
#include <antlr/TokenBuffer.hpp>
#include "RequirementParserTokenTypes.hpp"
#include <antlr/LLkParser.hpp>


#include "requirement.h"
using namespace CodeSigning;
typedef Requirement::Maker Maker;

ANTLR_BEGIN_NAMESPACE(Security_CodeSigning)
class CUSTOM_API RequirementParser : public antlr::LLkParser, public RequirementParserTokenTypes
{

public:
	std::string errors;
	void reportError(const antlr::RecognitionException &ex);
	void reportError(const std::string &s);

private:
	static string hexString(const string &s);
	static void hashString(const string &s, SHA1::Digest hash);
	void certMatchOperation(Maker &maker, int32_t slot, string key);
public:
	void initializeASTFactory( antlr::ASTFactory& factory );
protected:
	RequirementParser(antlr::TokenBuffer& tokenBuf, int k);
public:
	RequirementParser(antlr::TokenBuffer& tokenBuf);
protected:
	RequirementParser(antlr::TokenStream& lexer, int k);
public:
	RequirementParser(antlr::TokenStream& lexer);
	RequirementParser(const antlr::ParserSharedInputState& state);
	int getNumTokens() const
	{
		return RequirementParser::NUM_TOKENS;
	}
	const char* getTokenName( int type ) const
	{
		if( type > getNumTokens() ) return 0;
		return RequirementParser::tokenNames[type];
	}
	const char* const* getTokenNames() const
	{
		return RequirementParser::tokenNames;
	}
	public: BlobCore * autosense();
	public: Requirement * requirement();
	public: Requirements * requirementSet();
	public: uint32_t  requirementType();
	public: Requirement * requirementElement();
	public: void expr(
		Maker &maker
	);
	public: void fluff();
	public: void term(
		Maker &maker
	);
	public: void primary(
		Maker &maker
	);
	public: void certspec(
		Maker &maker
	);
	public: void infospec(
		Maker &maker
	);
	public: void entitlementspec(
		Maker &maker
	);
	public: void eql();
	public: string  identifierString();
	public: void hash(
		SHA1::Digest digest
	);
	public: void appleanchor(
		Maker &maker
	);
	public: int32_t  certSlot();
	public: void certslotspec(
		Maker &maker, int32_t slot
	);
	public: void empty();
	public: void certificateDigest(
		SHA1::Digest digest
	);
	public: string  bracketKey();
	public: void match_suffix(
		Maker &maker
	);
	public: string  datavalue();
	public: string  stringvalue();
	public: string  pathstring();
public:
	antlr::RefAST getAST()
	{
		return returnAST;
	}
	
protected:
	antlr::RefAST returnAST;
private:
	static const char* tokenNames[];
#ifndef NO_STATIC_CONSTS
	static const int NUM_TOKENS = 57;
#else
	enum {
		NUM_TOKENS = 57
	};
#endif
	
	static const unsigned long _tokenSet_0_data_[];
	static const antlr::BitSet _tokenSet_0;
	static const unsigned long _tokenSet_1_data_[];
	static const antlr::BitSet _tokenSet_1;
	static const unsigned long _tokenSet_2_data_[];
	static const antlr::BitSet _tokenSet_2;
	static const unsigned long _tokenSet_3_data_[];
	static const antlr::BitSet _tokenSet_3;
	static const unsigned long _tokenSet_4_data_[];
	static const antlr::BitSet _tokenSet_4;
	static const unsigned long _tokenSet_5_data_[];
	static const antlr::BitSet _tokenSet_5;
	static const unsigned long _tokenSet_6_data_[];
	static const antlr::BitSet _tokenSet_6;
	static const unsigned long _tokenSet_7_data_[];
	static const antlr::BitSet _tokenSet_7;
	static const unsigned long _tokenSet_8_data_[];
	static const antlr::BitSet _tokenSet_8;
	static const unsigned long _tokenSet_9_data_[];
	static const antlr::BitSet _tokenSet_9;
	static const unsigned long _tokenSet_10_data_[];
	static const antlr::BitSet _tokenSet_10;
	static const unsigned long _tokenSet_11_data_[];
	static const antlr::BitSet _tokenSet_11;
	static const unsigned long _tokenSet_12_data_[];
	static const antlr::BitSet _tokenSet_12;
	static const unsigned long _tokenSet_13_data_[];
	static const antlr::BitSet _tokenSet_13;
	static const unsigned long _tokenSet_14_data_[];
	static const antlr::BitSet _tokenSet_14;
	static const unsigned long _tokenSet_15_data_[];
	static const antlr::BitSet _tokenSet_15;
};

ANTLR_END_NAMESPACE
#endif /*INC_RequirementParser_hpp_*/