NewLang Project
Yet another programm language
|
#include <macro.h>
Public Types | |
typedef std::map< std::string, BlockType > | MacroArgsType |
Public Member Functions | |
Macro () | |
virtual | ~Macro () |
std::string | GetMacroMaping (const std::string str, const char *separator=", ") |
TermPtr | EvalOpMacros (TermPtr &term) |
bool | CheckMacro (const TermPtr &term) |
bool | RemoveMacro (TermPtr &term) |
size_t | GetCount () |
TermPtr | GetMacroById (const BlockType block) |
TermPtr | GetMacro (std::vector< std::string > list) |
std::string | Dump () |
bool | TestName (std::string_view name) |
std::string | CreateFullName (std::string_view name) |
bool | RegisterProto (TermPtr term, bool gen_exception=true) |
bool | RegisterTerm (TermPtr term) |
bool | RegisterObj (TermPtr term, ObjPtr obj) |
void | ApplyDiags (DiagPtr diag) |
TermPtr | FindTerm (std::string_view name) |
TermPtr | GetTerm (std::string_view name) |
ObjPtr | FindObj (std::string_view name) |
ObjPtr | GetObj (std::string_view name) |
Static Public Member Functions | |
static std::string | toMacroHash (TermPtr &term) |
static std::string | toMacroHashName (const std::string str) |
static BlockType | GetMacroId (TermPtr &term) |
static BlockType | MakeMacroId (const BlockType &seq) |
static bool | IdentityMacro (const BlockType &buffer, TermPtr &term) |
static bool | CompareMacroName (const std::string &term_name, const std::string ¯o_name) |
static size_t | ExtractArgs (BlockType &buffer, TermPtr &term, MacroArgsType &args) |
static void | InsertArg_ (MacroArgsType &args, std::string name, BlockType &buffer, size_t pos=static_cast< size_t >(-1)) |
static BlockType | SymbolSeparateArg_ (const BlockType &buffer, size_t pos, std::vector< std::string > name, std::string &error) |
static BlockType | ExpandMacros (const TermPtr ¯o, MacroArgsType &args) |
static std::string | ExpandString (const TermPtr ¯o, MacroArgsType &args) |
static std::string | Dump (const MacroArgsType &var) |
static std::string | Dump (const BlockType &arr) |
static std::string | DumpText (const BlockType &arr) |
Public Attributes | |
DiagPtr | m_diag |
Static Public Attributes | |
static const std::string | deny_chars_from_macro |
typedef std::map<std::string, BlockType> newlang::Macro::MacroArgsType |
|
static |
Definition at line 16 of file macro.cpp.
References ASSERT, GetMacroId(), and toMacroHashName().
Referenced by EvalOpMacros(), newlang::ExpandTermMacro(), and RemoveMacro().
|
inlinestatic |
Definition at line 113 of file macro.h.
References newlang::isLocalName(), and newlang::isMacroName().
Referenced by ExtractArgs(), GetMacro(), and toMacroHash().
std::string Macro::GetMacroMaping | ( | const std::string | str, |
const char * | separator = ", " ) |
Definition at line 204 of file macro.cpp.
References ASSERT, LOG_RUNTIME, newlang::MACRO_DEL, newlang::MACRO_SEQ, MakeMacroId(), and newlang::toString().
Referenced by EvalOpMacros(), ExtractArgs(), GetMacro(), IdentityMacro(), RemoveMacro(), and toMacroHash().
Definition at line 176 of file macro.cpp.
References deny_chars_from_macro, LOG_RUNTIME, NL_PARSER, newlang::Parser::ParseTerm(), result, and newlang::toString().
Referenced by CheckMacro(), and GetMacroId().
Проверяет оператор на предмет наличия операции создания или удаления макроса.
term | - оператор для проверки |
term | - Термин макрос |
Definition at line 390 of file macro.cpp.
References ASSERT, newlang::ASSIGN, CheckMacro(), newlang::CREATE_NEW, newlang::END, GetMacroById(), GetMacroId(), IdentityMacro(), LOG_RUNTIME, LOG_WARNING, newlang::MACRO_DEL, newlang::MACRO_SEQ, NL_PARSER, newlang::PURE_NEW, RemoveMacro(), and toMacroHash().
bool Macro::CheckMacro | ( | const TermPtr & | term | ) |
Definition at line 266 of file macro.cpp.
References ASSERT, newlang::ELLIPSIS, newlang::isLocalName(), newlang::isReservedName(), newlang::MACRO_ARGNAME, newlang::MACRO_ARGPOS, newlang::MACRO_ARGUMENT, newlang::MACRO_SEQ, MakeMacroId(), newlang::NAME, NL_PARSER, and newlang::parseInteger().
Referenced by EvalOpMacros().
bool Macro::RemoveMacro | ( | TermPtr & | term | ) |
Definition at line 472 of file macro.cpp.
References ASSERT, clear(), CompareMacroName(), GetMacroId(), newlang::MACRO_DEL, and toMacroHash().
Referenced by EvalOpMacros().
TermPtr Macro::GetMacro | ( | std::vector< std::string > | list | ) |
Definition at line 1166 of file macro.cpp.
References CompareMacroName(), GetMacroId(), and toMacroHashName().
Referenced by GetMacroById().
Идентифицирует входной буфер с макросом. Буфер должен заканчиваться на ';' или концом файла END, т.е. макрос грантированно присуствиет в буфере полностью.
buffer | Входной буфер лексем |
term | Макрос для сопоставления |
Definition at line 753 of file macro.cpp.
References CompareMacroName(), newlang::END, GetMacroId(), and newlang::Parser::SkipBrackets().
Referenced by EvalOpMacros(), and newlang::ExpandTermMacro().
|
static |
Definition at line 604 of file macro.cpp.
References newlang::isLocalAnyName(), newlang::isLocalName(), and newlang::isMacroName().
Referenced by GetMacro(), IdentityMacro(), and RemoveMacro().
|
static |
Создает коллекцию аргументов и шаблонов из буфера терминов лексера, которые используются в теле макроса Аргументами макроса могут быть шаблоны сопсоталения (термины) и аргументы в скобках верхнего уровня
buffer | Входной буфер лексем |
term | Макрос для сопоставления |
args | Коллекция аргументов макроса |
Definition at line 862 of file macro.cpp.
References ASSERT, newlang::Term::Create(), newlang::Term::CreateSymbol(), newlang::END, GetMacroId(), InsertArg_(), newlang::INTEGER, newlang::isLocalName(), LOG_RUNTIME, newlang::MACRO_SEQ, NL_PARSER, newlang::SYMBOL, SymbolSeparateArg_(), toMacroHashName(), and newlang::toString().
Referenced by newlang::ExpandTermMacro().
|
static |
|
static |
Definition at line 823 of file macro.cpp.
References result, newlang::Parser::SkipBrackets(), and newlang::SYMBOL.
Referenced by ExtractArgs().
|
static |
Definition at line 1040 of file macro.cpp.
References ASSERT, LOG_RUNTIME, newlang::MACRO_CONCAT, newlang::MACRO_SEQ, newlang::MACRO_TOSTR, NL_PARSER, result, newlang::STRCHAR, and newlang::STRWIDE.
Referenced by newlang::ExpandTermMacro().
|
static |
Definition at line 1132 of file macro.cpp.
References ASSERT, LOG_RUNTIME, newlang::MACRO_STR, ReplaceAll(), and newlang::toString().
Referenced by newlang::ExpandTermMacro().
|
static |
|
static |
|
static |
bool newlang::Macro::TestName | ( | std::string_view | name | ) |
std::string newlang::Macro::CreateFullName | ( | std::string_view | name | ) |
bool newlang::Macro::RegisterProto | ( | TermPtr | term, |
bool | gen_exception = true ) |
Зарегистрировать новый прототип. Используется для макросов и прототипов в @__PRAGMA_PROTOTYPE__ Заполняется только поле NamedItem::proto, а остальные остаются не инициалмизированными. Требуется только для парсера при раскрытии макросов и при проверке используемых имен
term | - новый прототип для регистрации |
gen_exception | - возвращать false или генерировать исключение |
bool newlang::Macro::RegisterTerm | ( | TermPtr | term | ) |
Зарегистрировать новый термин и его прототип. Используется при определении объектов или загрузке модулей Заполняется поле NamedItem::term и NamedItem::proto - если оно не заполнено. Требуется для парсера при проверке используемых имен
term | - новый термин для регистрации |
gen_exception | - возвращать false или генерировать исключение |
Зарегистрировать объект. Заполняется поле NamedItem::obj. Поля NamedItem::term и NamedItem::proto должны присутствовать.
term | - термин |
obj | - Объект |
gen_exception | - возвращать false или генерировать исключение |
TermPtr Macro::FindTerm | ( | std::string_view | name | ) |
Функция для организации встроенных типов в иерархию наследования. Другие функции: CreateBaseType - создает базовые типы данных (для расширения классов требуется контекст) и BaseTypeConstructor - функция обратного вызова при создании нового объекта базового типа данных
type | - Базовый тип данных ObjType |
parents | - Список сторок с именами родительских типов |
Definition at line 1287 of file macro.cpp.
References LOG_RUNTIME.
Referenced by GetTerm().
|
inline |
Definition at line 268 of file macro.h.
References FindTerm(), and LOG_RUNTIME.
|
inline |
Definition at line 279 of file macro.h.
References FindObj(), and LOG_RUNTIME.
|
static |
Definition at line 109 of file macro.h.
Referenced by MakeMacroId().