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