VM2D  1.12
Vortex methods for 2D flows simulation
Preprocessor.h
Go to the documentation of this file.
1 /*--------------------------------*- VMlib -*----------------*---------------*\
2 | ## ## ## ## ## ## ## | | Version 1.12 |
3 | ## ## ### ### ## ## | VMlib: VM2D/VM3D Library | 2024/01/14 |
4 | ## ## ## # ## ## ## #### | Open Source Code *----------------*
5 | #### ## ## ## ## ## ## | https://www.github.com/vortexmethods/VM2D |
6 | ## ## ## #### ### #### | https://www.github.com/vortexmethods/VM3D |
7 | |
8 | Copyright (C) 2017-2024 Ilia Marchevsky |
9 *-----------------------------------------------------------------------------*
10 | File name: Preprocessor.h |
11 | Info: Source code of VMlib |
12 | |
13 | This file is part of VMlib. |
14 | VMLib is free software: you can redistribute it and/or modify it |
15 | under the terms of the GNU General Public License as published by |
16 | the Free Software Foundation, either version 3 of the License, or |
17 | (at your option) any later version. |
18 | |
19 | VMlib is distributed in the hope that it will be useful, but WITHOUT |
20 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
21 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
22 | for more details. |
23 | |
24 | You should have received a copy of the GNU General Public License |
25 | along with VMlib. If not, see <http://www.gnu.org/licenses/>. |
26 \*---------------------------------------------------------------------------*/
27 
28 
37 #ifndef PREPROCESSOR_H
38 #define PREPROCESSOR_H
39 
40 #include <string>
41 #include <sstream>
42 
43 namespace VMlib
44 {
45 
60  {
61  private:
64 
67 
70 
73 
75  void(Preprocessor::*currentParser)(char ch, std::string& str);
76 
84  void normalParser(char ch, std::string& str);
85 
92  void inStringParser(char ch, std::string& str);
93 
100  void inCharParser(char ch, std::string& str);
101 
110  void afterSlashParser(char ch, std::string& str);
111 
119  void inInlineCommentParser(char ch, std::string& str);
120 
129  void inMultilineCommentParser(char ch, std::string& str);
130 
139  char processSymbol(char ch);
140 
141  public:
143  std::string initialInput;
144 
146  std::string intermediateOutput;
147 
148 
149 
156  Preprocessor(const std::string& fileName);
157 
160 
162  std::string resultString;
163  std::stringstream resultStream;
164 
165  };
166 
167 }//namespace VMlib
168 
169 #endif
void inCharParser(char ch, std::string &str)
Обработчик символа в режиме парсера символа (внутри одинарных кавычек)
Preprocessor(const std::string &fileName)
Конструктор, принимающий на вход имя обрабатываемого файла
std::string resultString
Строка, содержащая окончательный результат обработки файла
Definition: Preprocessor.h:159
bool inStringLastEscape
Признак встречи слэша внутри строки (внутри двойных кавычек)
Definition: Preprocessor.h:63
std::string initialInput
Строка, содержащая исходный файл в первоначальном виде
Definition: Preprocessor.h:143
Класс, позволяющий выполнять предварительную обработку файлов
Definition: Preprocessor.h:59
~Preprocessor()
Деструктор
Definition: Preprocessor.h:159
void inInlineCommentParser(char ch, std::string &str)
Обработчик символа в режиме парсера однострочного комментария (после //)
void(Preprocessor::* currentParser)(char ch, std::string &str)
Опредедение currentParser как указателя на функцию-члена класса
Definition: Preprocessor.h:75
void normalParser(char ch, std::string &str)
Обработчик символа в режиме обычного состояния парcера
bool inCharLastEscape
Признак встречи слэша внутри символа (внутри одинарных кавычек)
Definition: Preprocessor.h:66
void afterSlashParser(char ch, std::string &str)
Обработчик символа в режиме парсера выражения после слэша
bool inMultilineLastStar
Признак встречи звездочки внутри многострочного комментария (после &#39;/*&#39;)
Definition: Preprocessor.h:72
void inMultilineCommentParser(char ch, std::string &str)
Обработчик символа в режиме парсера многострочного комментария
bool inInlineLastEscape
Признак встречи слэша внутри однострочного комментария (после //)
Definition: Preprocessor.h:69
char processSymbol(char ch)
Базовая функция обработки символа В зависимости от входого символа возвращает на выход: ...
std::stringstream resultStream
Definition: Preprocessor.h:163
std::string intermediateOutput
Строка, содержащая результат промежуточной обработки файла
Definition: Preprocessor.h:146
void inStringParser(char ch, std::string &str)
Обработчик символа в режиме парсера строки (внутри двойных кавычек)