64 lines
1.1 KiB
C
64 lines
1.1 KiB
C
|
#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;
|
|||
|
};
|
|||
|
}
|