mirror of
https://github.com/reactos/CMake.git
synced 2024-11-25 04:29:52 +00:00
f1eacf0e07
The expressions may be parsed and then cached and evaluated multiple times. They are evaluated lazily so that literals such as ',' can be treated as universal parameter separators, and can be processed from results without appearing literally, and without interfering with the parsing/evaluation of the entire expression.
46 lines
1.4 KiB
C++
46 lines
1.4 KiB
C++
/*============================================================================
|
|
CMake - Cross Platform Makefile Generator
|
|
Copyright 2012 Stephen Kelly <steveire@gmail.com>
|
|
|
|
Distributed under the OSI-approved BSD License (the "License");
|
|
see accompanying file Copyright.txt for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
See the License for more information.
|
|
============================================================================*/
|
|
#ifndef cmGeneratorExpressionParser_h
|
|
#define cmGeneratorExpressionParser_h
|
|
|
|
#include "cmGeneratorExpressionLexer.h"
|
|
|
|
#include <set>
|
|
#include <vector>
|
|
|
|
#include "cmListFileCache.h"
|
|
|
|
class cmMakefile;
|
|
class cmTarget;
|
|
struct cmGeneratorExpressionEvaluator;
|
|
|
|
//----------------------------------------------------------------------------
|
|
struct cmGeneratorExpressionParser
|
|
{
|
|
cmGeneratorExpressionParser(
|
|
const std::vector<cmGeneratorExpressionToken> &tokens);
|
|
|
|
void Parse(std::vector<cmGeneratorExpressionEvaluator*> &result);
|
|
|
|
private:
|
|
void ParseContent(std::vector<cmGeneratorExpressionEvaluator*> &);
|
|
void ParseGeneratorExpression(
|
|
std::vector<cmGeneratorExpressionEvaluator*> &);
|
|
|
|
private:
|
|
std::vector<cmGeneratorExpressionToken>::const_iterator it;
|
|
const std::vector<cmGeneratorExpressionToken> Tokens;
|
|
unsigned int NestingLevel;
|
|
};
|
|
|
|
#endif
|