// 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 namespace boost { namespace spirit { namespace lex { template struct less_type; struct more_type; template struct lookahead_type; }}} /////////////////////////////////////////////////////////////////////////////// #ifndef BOOST_SPIRIT_USE_PHOENIX_V3 namespace boost { namespace spirit { namespace lex { namespace expression { template struct less { typedef phoenix::actor > type; static type make(Eval const & eval) { return lex::less_type(eval); } }; template struct lookahead { typedef phoenix::actor > type; static type make(IdType const & id_type, State const & state) { return lex::lookahead_type(id_type, state); } }; } }}} #else // BOOST_SPIRIT_USE_PHOENIX_V3 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 > : mpl::false_ {}; } template struct is_custom_terminal : mpl::true_ {}; template struct custom_terminal : proto::call< v2_eval( proto::make , proto::call ) > {}; template struct is_nullary::when : proto::make {}; template struct default_actions::when : proto::call< v2_eval( proto::make< spirit::lex::less_type(proto::_child0) > , _env ) > {}; template struct is_nullary::when : proto::make {}; template struct default_actions::when : proto::call< v2_eval( proto::make< spirit::lex::lookahead_type< proto::_child0 , proto::_child1 >( proto::_child0 , proto::_child1 ) > , _env ) > {}; }} #endif // BOOST_SPIRIT_USE_PHOENIX_V3 #endif