#pragma once #include #include "lib_begin.h" namespace cgv { namespace media { namespace text { namespace ppp { enum OperatorType { OT_ASSIGN, OT_ASSIGN_REF, OT_ASSIGN_ADD, OT_ASSIGN_SUB, OT_ASSIGN_MUL, OT_ASSIGN_DIV, OT_ASSIGN_AND, OT_ASSIGN_OR, OT_ASSIGN_XOR, OT_ASSIGN_LSH, OT_ASSIGN_RSH, OT_LOG_OR, OT_LOG_AND, OT_OR, OT_XOR, OT_AND, OT_EQUAL, OT_UNEQUAL, OT_EQUAL_TYPE, OT_UNEQUAL_TYPE, OT_LESS, OT_GREATER, OT_LESS_OR_EQUAL, OT_GREATER_OR_EQUAL, OT_LSH, OT_RSH, OT_ADD, OT_SUB, OT_MUL, OT_DIV, OT_MOD, OT_NOT, OT_EXISTS, OT_INC, OT_DEC, OT_NEGATE, OT_COMPL, OT_DOT, OT_MAP_UP, OT_MAP_DOWN, OT_BINARY_MAP, OT_UNARY_MAP, OT_LAST }; enum OperatorPrecedence { OP_LEFT, OP_RIGHT }; enum OperatorLocation { OL_PREFIX, OL_POSTFIX }; extern CGV_API const char* operator_characters; extern CGV_API OperatorPrecedence get_operator_precedence(OperatorType ot); extern CGV_API const char* get_operator_word(OperatorType ot); extern CGV_API int get_operator_priority(OperatorType ot); extern CGV_API int get_operator_arity(OperatorType ot); extern CGV_API OperatorLocation get_operator_location(OperatorType ot); extern CGV_API OperatorType get_operator_type(const std::string& s); } } } } #include