1#ifndef NEWLANG_MACRO_H_
2#define NEWLANG_MACRO_H_
12 class Macro :
SCOPE(public) std::map<std::string, BlockType>,
public std::enable_shared_from_this<Macro> {
117 return str.substr(1);
122 std::string
GetMacroMaping(
const std::string str,
const char *separator =
", ");
163 while (iter != end()) {
164 count += iter->second.size();
187 static bool CompareMacroName(
const std::string & term_name,
const std::string & macro_name);
283 LOG_RUNTIME(
"Object '%s' not found!", name.begin());
static BlockType SymbolSeparateArg_(const BlockType &buffer, size_t pos, std::vector< std::string > name, std::string &error)
TermPtr GetMacroById(const BlockType block)
static std::string ExpandString(const TermPtr ¯o, MacroArgsType &args)
static BlockType MakeMacroId(const BlockType &seq)
TermPtr FindTerm(std::string_view name)
std::string CreateFullName(std::string_view name)
static void InsertArg_(MacroArgsType &args, std::string name, BlockType &buffer, size_t pos=static_cast< size_t >(-1))
ObjPtr GetObj(std::string_view name)
static bool CompareMacroName(const std::string &term_name, const std::string ¯o_name)
static BlockType ExpandMacros(const TermPtr ¯o, MacroArgsType &args)
std::map< std::string, BlockType > MacroArgsType
static size_t ExtractArgs(BlockType &buffer, TermPtr &term, MacroArgsType &args)
bool RegisterTerm(TermPtr term)
static const std::string deny_chars_from_macro
TermPtr GetMacro(std::vector< std::string > list)
ObjPtr FindObj(std::string_view name)
static std::string toMacroHashName(const std::string str)
bool CheckMacro(const TermPtr &term)
TermPtr GetTerm(std::string_view name)
static std::string DumpText(const BlockType &arr)
bool RegisterObj(TermPtr term, ObjPtr obj)
bool RegisterProto(TermPtr term, bool gen_exception=true)
static BlockType GetMacroId(TermPtr &term)
static bool IdentityMacro(const BlockType &buffer, TermPtr &term)
void ApplyDiags(DiagPtr diag)
bool TestName(std::string_view name)
bool RemoveMacro(TermPtr &term)
std::string GetMacroMaping(const std::string str, const char *separator=", ")
static std::string toMacroHash(TermPtr &term)
TermPtr EvalOpMacros(TermPtr &term)
#define LOG_RUNTIME(format,...)
bool isLocalName(const std::string_view name)
std::shared_ptr< Term > TermPtr
std::shared_ptr< Obj > ObjPtr
std::vector< TermPtr > BlockType
std::shared_ptr< Diag > DiagPtr
bool isMacroName(const std::string_view name)