45 lines
973 B
C
45 lines
973 B
C
|
#pragma once
|
|||
|
|
|||
|
#include "libparse_global.h"
|
|||
|
#include <ast_basic.h>
|
|||
|
#include <ast_gen.h>
|
|||
|
|
|||
|
namespace lib_parse {
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣
|
|||
|
*/
|
|||
|
class LIBPARSE_EXPORT CheckException {
|
|||
|
private:
|
|||
|
QString msg_store;
|
|||
|
|
|||
|
public:
|
|||
|
CheckException(const QString& msg);
|
|||
|
virtual ~CheckException() = default;
|
|||
|
|
|||
|
virtual QString message() const;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @brief У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
class CheckProvider {
|
|||
|
public:
|
|||
|
virtual void validCheck(std::shared_ptr<const ast_gen::ElementAccess> root) const = 0;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
|
|||
|
*/
|
|||
|
class LIBPARSE_EXPORT Analyzer {
|
|||
|
private:
|
|||
|
QList<std::shared_ptr<const CheckProvider>> check_providers;
|
|||
|
|
|||
|
public:
|
|||
|
Analyzer(const QList<std::shared_ptr<const CheckProvider>>& providers);
|
|||
|
|
|||
|
std::shared_ptr<const ast_gen::ElementAccess> validCheckWith(std::shared_ptr<const ast_gen::ElementAccess> root) const;
|
|||
|
};
|
|||
|
}
|