blob: 3c7572d8d68a7416d68e48aa64ec04f640ab6c22 [file] [log] [blame]
// Copyright (c) 2001-2011 Hartmut Kaiser
// Copyright (c) 2011 Thomas Heller
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#if !defined(SPIRIT_LEX_SUPPORT_FUNCTIONS_EXPRESSION_MAR_22_2011_0711PM)
#define SPIRIT_LEX_SUPPORT_FUNCTIONS_EXPRESSION_MAR_22_2011_0711PM
#if defined(_MSC_VER)
#pragma once
#endif
#include <boost/spirit/include/phoenix_core.hpp>
namespace boost { namespace spirit { namespace lex
{
template <typename> struct less_type;
struct more_type;
template <typename, typename> struct lookahead_type;
}}}
///////////////////////////////////////////////////////////////////////////////
BOOST_PHOENIX_DEFINE_EXPRESSION(
(boost)(spirit)(lex)(less)
, (boost::phoenix::meta_grammar)
)
BOOST_PHOENIX_DEFINE_EXPRESSION(
(boost)(spirit)(lex)(lookahead)
, (boost::phoenix::meta_grammar)
(boost::phoenix::meta_grammar)
)
namespace boost { namespace phoenix
{
namespace result_of
{
template <>
struct is_nullary<custom_terminal<boost::spirit::lex::more_type> >
: mpl::false_
{};
}
template <typename Dummy>
struct is_custom_terminal<boost::spirit::lex::more_type, Dummy> : mpl::true_ {};
template <typename Dummy>
struct custom_terminal<boost::spirit::lex::more_type, Dummy>
: proto::call<
v2_eval(
proto::make<boost::spirit::lex::more_type()>
, proto::call<functional::env(proto::_state)>
)
>
{};
template <typename Dummy>
struct is_nullary::when<spirit::lex::rule::less, Dummy>
: proto::make<mpl::false_()>
{};
template <typename Dummy>
struct default_actions::when<spirit::lex::rule::less, Dummy>
: proto::call<
v2_eval(
proto::make<
spirit::lex::less_type<proto::_child0>(proto::_child0)
>
, _env
)
>
{};
template <typename Dummy>
struct is_nullary::when<spirit::lex::rule::lookahead, Dummy>
: proto::make<mpl::false_()>
{};
template <typename Dummy>
struct default_actions::when<spirit::lex::rule::lookahead, Dummy>
: proto::call<
v2_eval(
proto::make<
spirit::lex::lookahead_type<
proto::_child0
, proto::_child1
>(
proto::_child0
, proto::_child1
)
>
, _env
)
>
{};
}}
#endif