2024-03-17 07:58:28 +00:00
|
|
|
|
#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:
|
2024-06-15 01:18:33 +00:00
|
|
|
|
virtual QString name() const = 0;
|
2024-03-17 07:58:28 +00:00
|
|
|
|
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;
|
|
|
|
|
};
|
|
|
|
|
}
|