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

source code of boost/libs/spirit/example/qi/compiler_tutorial/conjure3/statement.hpp