41 using namespace VMlib;
46 inStringLastEscape(false),
47 inCharLastEscape(false),
48 inInlineLastEscape(false),
49 inMultilineLastStar(false),
52 #pragma warning (push) 53 #pragma warning (disable: 4996) 54 FILE * inputFile = fopen(fileName.c_str(),
"r");
59 while ((symbol = fgetc(inputFile)) != EOF)
73 getline(ss, readline);
75 readline.erase(std::remove(readline.begin(), readline.end(),
' '), readline.end());
76 readline.erase(std::remove(readline.begin(), readline.end(),
'\t'), readline.end());
80 readline.erase(std::remove(readline.begin(), readline.end(), 0x0D), readline.end());
void inCharParser(char ch, std::string &str)
Обработчик символа в режиме парсера символа (внутри одинарных кавычек)
Preprocessor(const std::string &fileName)
Конструктор, принимающий на вход имя обрабатываемого файла
std::string resultString
Строка, содержащая окончательный результат обработки файла
bool inStringLastEscape
Признак встречи слэша внутри строки (внутри двойных кавычек)
Заголовочный файл с описанием класса Preprocessor.
std::string initialInput
Строка, содержащая исходный файл в первоначальном виде
Класс, позволяющий выполнять предварительную обработку файлов
void inInlineCommentParser(char ch, std::string &str)
Обработчик символа в режиме парсера однострочного комментария (после //)
void(Preprocessor::* currentParser)(char ch, std::string &str)
Опредедение currentParser как указателя на функцию-члена класса
void normalParser(char ch, std::string &str)
Обработчик символа в режиме обычного состояния парcера
bool inCharLastEscape
Признак встречи слэша внутри символа (внутри одинарных кавычек)
void afterSlashParser(char ch, std::string &str)
Обработчик символа в режиме парсера выражения после слэша
bool inMultilineLastStar
Признак встречи звездочки внутри многострочного комментария (после '/*')
void inMultilineCommentParser(char ch, std::string &str)
Обработчик символа в режиме парсера многострочного комментария
bool inInlineLastEscape
Признак встречи слэша внутри однострочного комментария (после //)
char processSymbol(char ch)
Базовая функция обработки символа В зависимости от входого символа возвращает на выход: ...
std::stringstream resultStream
std::string intermediateOutput
Строка, содержащая результат промежуточной обработки файла
void inStringParser(char ch, std::string &str)
Обработчик символа в режиме парсера строки (внутри двойных кавычек)