/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmGeneratorExpressionLexer.h" cmGeneratorExpressionLexer::cmGeneratorExpressionLexer() = default; static void InsertText(const char* upto, const char* c, std::vector& result) { if (upto != c) { result.emplace_back(cmGeneratorExpressionToken::Text, upto, c - upto); } } std::vector cmGeneratorExpressionLexer::Tokenize( const std::string& input) { std::vector result; if (input.find('$') == std::string::npos) { result.emplace_back(cmGeneratorExpressionToken::Text, input.c_str(), input.size()); return result; } const char* c = input.c_str(); const char* upto = c; for (; *c; ++c) { switch (*c) { case '$': if (c[1] == '<') { InsertText(upto, c, result); result.emplace_back(cmGeneratorExpressionToken::BeginExpression, c, 2); upto = c + 2; ++c; SawBeginExpression = true; } break; case '>': InsertText(upto, c, result); result.emplace_back(cmGeneratorExpressionToken::EndExpression, c, 1); upto = c + 1; SawGeneratorExpression = SawBeginExpression; break; case ':': InsertText(upto, c, result); result.emplace_back(cmGeneratorExpressionToken::ColonSeparator, c, 1); upto = c + 1; break; case ',': InsertText(upto, c, result); result.emplace_back(cmGeneratorExpressionToken::CommaSeparator, c, 1); upto = c + 1; break; default: break; } } InsertText(upto, c, result); return result; } 22 Tk is a free and open-source, cross-platform widget toolkit that provides a library of basic elements of GUI widgets for building a graphical user interface (GUI) in many programming languages.
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2002-07-11 13:01:30 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2002-07-11 13:01:30 (GMT)
commit654d69ee7dc6bb0c286f977985f0d43152f11e86 (patch)
treeac5057d3f4c8afd6359cb1fba7d39b9bd23a9fe7 /tests/visual_bb.test
parent4bc635795e9bf0335e5993887963504e2dd4eba3 (diff)
download