#pragma once #include "../base/basictypes.h" #include typedef std::pair ExpressionPair; typedef std::vector PostfixExpression; class IExpressionFunctions { public: virtual bool parseReference(char* str, uint32& referenceIndex) = 0; virtual bool parseSymbol(char* str, uint32& symbolValue) = 0; virtual uint32 getReferenceValue(uint32 referenceIndex) = 0; virtual bool getMemoryValue(uint32 address, int size, uint32& dest, char* error) = 0; }; bool initPostfixExpression(const char* infix, IExpressionFunctions* funcs, PostfixExpression& dest); bool parsePostfixExpression(PostfixExpression& exp, IExpressionFunctions* funcs, uint32& dest); bool parseExpression(const char* exp, IExpressionFunctions* funcs, uint32& dest); const char* getExpressionError();