| 176 | } |
| 177 | |
| 178 | bool isInsideCommentOrQuote(const std::string& buffer) { |
| 179 | bool insideSingleLineComment = false; |
| 180 | bool insideMultiLineComment = false; |
| 181 | bool insideDoubleQuote = false; |
| 182 | bool insideSingleQuote = false; |
| 183 | |
| 184 | for (size_t i = 0; i < buffer.size(); ++i) { |
| 185 | if (insideSingleLineComment) { |
| 186 | if (buffer[i] == '\n') { |
| 187 | insideSingleLineComment = false; |
| 188 | } |
| 189 | } else if (insideMultiLineComment) { |
| 190 | if (buffer[i] == '*' && i + 1 < buffer.size() && buffer[i + 1] == '/') { |
| 191 | insideMultiLineComment = false; |
| 192 | ++i; |
| 193 | } |
| 194 | } else if (insideDoubleQuote) { |
| 195 | if (buffer[i] == '"' && (i == 0 || buffer[i - 1] != '\\')) { |
| 196 | insideDoubleQuote = false; |
| 197 | } |
| 198 | } else if (insideSingleQuote) { |
| 199 | if (buffer[i] == '\'' && (i == 0 || buffer[i - 1] != '\\')) { |
| 200 | insideSingleQuote = false; |
| 201 | } |
| 202 | } else { |
| 203 | if (buffer[i] == '/' && i + 1 < buffer.size()) { |
| 204 | if (buffer[i + 1] == '/') { |
| 205 | insideSingleLineComment = true; |
| 206 | ++i; |
| 207 | } else if (buffer[i + 1] == '*') { |
| 208 | insideMultiLineComment = true; |
| 209 | ++i; |
| 210 | } |
| 211 | } else if (buffer[i] == '"') { |
| 212 | insideDoubleQuote = true; |
| 213 | } else if (buffer[i] == '\'') { |
| 214 | insideSingleQuote = true; |
| 215 | } |
| 216 | } |
| 217 | } |
| 218 | |
| 219 | return insideSingleLineComment || insideMultiLineComment || insideDoubleQuote || |
| 220 | insideSingleQuote; |
| 221 | } |
| 222 | |
| 223 | void findTableVariableNames(const std::string buf, std::regex tableRegex, |
| 224 | std::vector<std::string>& tempTableNames, std::vector<std::string>& foundTableNames) { |