VM2D
1.12
Vortex methods for 2D flows simulation
|
Класс, позволяющий выполнять предварительную обработку файлов More...
#include <Preprocessor.h>
Public Member Functions | |
Preprocessor (const std::string &fileName) | |
Конструктор, принимающий на вход имя обрабатываемого файла More... | |
~Preprocessor () | |
Деструктор More... | |
Public Attributes | |
std::string | initialInput |
Строка, содержащая исходный файл в первоначальном виде More... | |
std::string | intermediateOutput |
Строка, содержащая результат промежуточной обработки файла More... | |
std::string | resultString |
Строка, содержащая окончательный результат обработки файла More... | |
std::stringstream | resultStream |
Private Member Functions | |
void | normalParser (char ch, std::string &str) |
Обработчик символа в режиме обычного состояния парcера More... | |
void | inStringParser (char ch, std::string &str) |
Обработчик символа в режиме парсера строки (внутри двойных кавычек) More... | |
void | inCharParser (char ch, std::string &str) |
Обработчик символа в режиме парсера символа (внутри одинарных кавычек) More... | |
void | afterSlashParser (char ch, std::string &str) |
Обработчик символа в режиме парсера выражения после слэша More... | |
void | inInlineCommentParser (char ch, std::string &str) |
Обработчик символа в режиме парсера однострочного комментария (после //) More... | |
void | inMultilineCommentParser (char ch, std::string &str) |
Обработчик символа в режиме парсера многострочного комментария More... | |
char | processSymbol (char ch) |
Базовая функция обработки символа В зависимости от входого символа возвращает на выход: More... | |
Private Attributes | |
bool | inStringLastEscape |
Признак встречи слэша внутри строки (внутри двойных кавычек) More... | |
bool | inCharLastEscape |
Признак встречи слэша внутри символа (внутри одинарных кавычек) More... | |
bool | inInlineLastEscape |
Признак встречи слэша внутри однострочного комментария (после //) More... | |
bool | inMultilineLastStar |
Признак встречи звездочки внутри многострочного комментария (после '/*') More... | |
void(Preprocessor::* | currentParser )(char ch, std::string &str) |
Опредедение currentParser как указателя на функцию-члена класса More... | |
Класс, позволяющий выполнять предварительную обработку файлов
Выполняет следующие действия:
Definition at line 59 of file Preprocessor.h.
Preprocessor::Preprocessor | ( | const std::string & | fileName | ) |
Конструктор, принимающий на вход имя обрабатываемого файла
После посимвольной обработки формирует промежуточный вывод intermediateOutput
Затем убирает из вывода пробелы и знаки табуляции и формирует окончательный поток вывода resultStream
[in] | fileName | константная ссылка на строку — имя обрабатываемого файла |
Definition at line 44 of file Preprocessor.cpp.
|
inline |
|
private |
Обработчик символа в режиме парсера выражения после слэша
При появлении символов / или * переключает парсер в режим обработки однострочного или многострочного комментария
Отальные символы выводит в поток после его предварительной обработки фукцией Preprocessor::processSymbol
[in] | ch | обрабатываемый символ |
[out] | str | ссылка на строку, в которую сохряняется результат |
Definition at line 149 of file Preprocessor.cpp.
|
private |
Обработчик символа в режиме парсера символа (внутри одинарных кавычек)
При появлении парного апострофа переводит парсер в обычный режим, обрабатываемый символ в неизменном виде передается в поток
[in] | ch | обрабатываемый символ |
[out] | str | ссылка на строку, в которую сохряняется результат |
Definition at line 139 of file Preprocessor.cpp.
|
private |
Обработчик символа в режиме парсера однострочного комментария (после //)
Игнорирует все симводы до появления конца строки.
При появлении конца строки переключает парсер в обычный режим и выводит конец строки в результирующую строчку
[in] | ch | обрабатываемый символ |
[out] | str | ссылка на строку, в которую сохряняется результат |
Definition at line 168 of file Preprocessor.cpp.
|
private |
Обработчик символа в режиме парсера многострочного комментария
Игнорирует все симводы до появления сочетания, соответствующего окончанию комментария.
При появлении символов окончания комментария выводит в результирующую строку пробел и переключает парсер в обычный режим
[in] | ch | обрабатываемый символ |
[out] | str | ссылка на строку, в которую сохряняется результат |
Definition at line 180 of file Preprocessor.cpp.
|
private |
Обработчик символа в режиме парсера строки (внутри двойных кавычек)
При появлении парной кавычки переводит парсер в обычный режим, обрабатываемый символ в неизменном виде передается в поток
[in] | ch | обрабатываемый символ |
[out] | str | ссылка на строку, в которую сохряняется результат |
Definition at line 129 of file Preprocessor.cpp.
|
private |
Обработчик символа в режиме обычного состояния парcера
При появлении символов ", ', / переключает парсер в соответствующий режим Выводит обрабатываемый символ в поток (кроме слэша, который игнорируется) после его предварительной обработки фукцией Preprocessor::processSymbol
[in] | ch | обрабатываемый символ |
[out] | str | ссылка на строку, в которую сохряняется результат |
Definition at line 108 of file Preprocessor.cpp.
|
private |
Базовая функция обработки символа В зависимости от входого символа возвращает на выход:
[in] | ch | обрабатываемый символ return символ, который отправляется в обработанный файл |
Definition at line 91 of file Preprocessor.cpp.
|
private |
Опредедение currentParser как указателя на функцию-члена класса
Definition at line 75 of file Preprocessor.h.
|
private |
Признак встречи слэша внутри символа (внутри одинарных кавычек)
Definition at line 66 of file Preprocessor.h.
|
private |
Признак встречи слэша внутри однострочного комментария (после //)
Definition at line 69 of file Preprocessor.h.
std::string VMlib::Preprocessor::initialInput |
Строка, содержащая исходный файл в первоначальном виде
Definition at line 143 of file Preprocessor.h.
|
private |
Признак встречи звездочки внутри многострочного комментария (после '/*')
Definition at line 72 of file Preprocessor.h.
|
private |
Признак встречи слэша внутри строки (внутри двойных кавычек)
Definition at line 63 of file Preprocessor.h.
std::string VMlib::Preprocessor::intermediateOutput |
Строка, содержащая результат промежуточной обработки файла
Definition at line 146 of file Preprocessor.h.
std::stringstream VMlib::Preprocessor::resultStream |
Definition at line 163 of file Preprocessor.h.
std::string VMlib::Preprocessor::resultString |
Строка, содержащая окончательный результат обработки файла
Definition at line 159 of file Preprocessor.h.