statement.hpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /*=============================================================================
  2. Copyright (c) 2001-2011 Joel de Guzman
  3. Copyright (c) 2001-2011 Hartmut Kaiser
  4. Distributed under the Boost Software License, Version 1.0. (See accompanying
  5. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  6. =============================================================================*/
  7. #if !defined(BOOST_SPIRIT_CONJURE_STATEMENT_HPP)
  8. #define BOOST_SPIRIT_CONJURE_STATEMENT_HPP
  9. #include "expression.hpp"
  10. namespace client { namespace parser
  11. {
  12. ///////////////////////////////////////////////////////////////////////////////
  13. // The statement grammar
  14. ///////////////////////////////////////////////////////////////////////////////
  15. template <typename Iterator, typename Lexer>
  16. struct statement : qi::grammar<Iterator, ast::statement_list()>
  17. {
  18. typedef error_handler<typename Lexer::base_iterator_type, Iterator>
  19. error_handler_type;
  20. statement(error_handler_type& error_handler, Lexer const& l);
  21. expression<Iterator, Lexer> expr;
  22. qi::rule<Iterator, ast::statement_list()>
  23. statement_list, compound_statement;
  24. qi::rule<Iterator, ast::statement()> statement_;
  25. qi::rule<Iterator, ast::variable_declaration()> variable_declaration;
  26. qi::rule<Iterator, ast::assignment()> assignment;
  27. qi::rule<Iterator, ast::if_statement()> if_statement;
  28. qi::rule<Iterator, ast::while_statement()> while_statement;
  29. qi::rule<Iterator, ast::return_statement()> return_statement;
  30. };
  31. }}
  32. #endif