WsParser_VS/libSyntax/libtokens.h

64 lines
1.1 KiB
C
Raw Normal View History

2025-02-02 12:54:32 +00:00
#pragma once
#include "libsyntax_global.h"
#include <libwords.h>
namespace lib_token {
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
class LIBSYNTAX_EXPORT TokenException {
private:
QString msg_store;
public:
TokenException(const QString& message);
virtual QString message() const;
};
class IToken;
/**
* @brief token<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD>
*/
class ITokenDefine {
public:
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return
*/
virtual QString reviseWords() const = 0;
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD>ʶ.
*
* \return
*/
virtual int typeMark() const = 0;
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƹؼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return
*/
virtual QString regex() const = 0;
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param content <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return tuple<token/null,remains> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
virtual std::tuple<std::shared_ptr<const IToken>, std::shared_ptr<const lib_words::IWordBase>>
analysis(std::shared_ptr<const lib_words::IWordBase> content) const = 0;
};
/**
* @brief token<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
class IToken : public lib_words::IWordBase {
public:
/**
* @brief token<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><EFBFBD><EFBFBD>
* @return
*/
virtual std::shared_ptr<const ITokenDefine> define() const = 0;
};
}