/*============================================================================
  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"

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
