Files
tsl-devkit/lsp-server/src/language/keyword_manager.hpp
T
2025-09-27 22:23:04 +08:00

36 lines
971 B
C++

#pragma once
#include <optional>
#include <unordered_map>
#include <vector>
#include "./keyword_types.hpp"
namespace tsl
{
class KeywordManager
{
public:
KeywordManager(const KeywordManager&) = delete;
KeywordManager& operator=(const KeywordManager&) = delete;
static KeywordManager& GetInstance();
std::vector<KeywordInfo> GetAllKeywords();
std::vector<KeywordInfo> GetKeyWordByPrefix(std::string prefix);
std::optional<KeywordInfo> GetKeywordInfo(std::string key);
private:
KeywordManager();
void InitKeywords();
void InitProgramStructureKeywords();
void InitDataTypeKeywords();
void InitClassKeywords();
void InitControlFlowKeywords();
void InitOperatorKeywords();
void InitSqlKeywords();
void InitBuiltinKeywords();
void InitConstantKeywords();
std::unordered_map<std::string, KeywordInfo> keywords_;
};
}