diff options
Diffstat (limited to 'Source/cmGeneratorExpressionLexer.h')
-rw-r--r-- | Source/cmGeneratorExpressionLexer.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/Source/cmGeneratorExpressionLexer.h b/Source/cmGeneratorExpressionLexer.h new file mode 100644 index 0000000..bf24308 --- /dev/null +++ b/Source/cmGeneratorExpressionLexer.h @@ -0,0 +1,53 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#ifndef cmGeneratorExpressionLexer_h +#define cmGeneratorExpressionLexer_h + +#include "cmConfigure.h" // IWYU pragma: keep + +#include <stddef.h> +#include <string> +#include <vector> + +struct cmGeneratorExpressionToken +{ + cmGeneratorExpressionToken(unsigned type, const char* c, size_t l) + : TokenType(type) + , Content(c) + , Length(l) + { + } + enum + { + Text, + BeginExpression, + EndExpression, + ColonSeparator, + CommaSeparator + }; + unsigned TokenType; + const char* Content; + size_t Length; +}; + +/** \class cmGeneratorExpressionLexer + * + */ +class cmGeneratorExpressionLexer +{ +public: + cmGeneratorExpressionLexer(); + + std::vector<cmGeneratorExpressionToken> Tokenize(const std::string& input); + + bool GetSawGeneratorExpression() const + { + return this->SawGeneratorExpression; + } + +private: + bool SawBeginExpression = false; + bool SawGeneratorExpression = false; +}; + +#endif |