Core:
-
аналог LLVM MemoryBuffer - обертка над готовым буфером (строкой), или memory mapped файлом => дает bidirectional итераторы
- stdin не поддерживаем
llvm::MemoryBuffer
boost::iostreams::mapped_file
wheels::ConstMemView
-
буфер должен жить все время работы с парсером и AST =>
string_value
токенов этоstring_view
в буфер- решает
todo dont store string_value if it is equal to pattern
- решает
-
токен знает, с какого байта начинается => хранить доп инфу про \n => уметь мапить токены в source location
-
рефакторить Children в AST
-
замена
optional
наexpected
-
замена
std::regex
наctre
=> токены имеютstatic constexpr
не паттерн, а скомпилированный регекс -
добавить Visit в LangNodeBase
-
конструкторы для токенов от string_value и тп
-
не бросать в NextToken
-
? шаблон вместо макроса PFW_TOKEN
-
cmake и структура папок (target_include_directories)
-
camelCase для функций в clang tidy
Тесты:
- декларативное построение AST
- сравнение AST
- google test