1 [/==============================================================================
2 Copyright (C) 2001-2010 Joel de Guzman
3 Copyright (C) 2001-2005 Dan Marsden
4 Copyright (C) 2001-2010 Thomas Heller
6 Distributed under the Boost Software License, Version 1.0. (See accompanying
7 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
8 ===============================================================================/]
10 [section:rules Predefined Expressions and Rules]
12 This section is the "behind the scenes" counter part of the __phoenix_modules__
13 section. A listing of all the predefined expressions and rules:
16 [[Expression] [Rule] []]
17 [[`expression::value<T>`] [``
19 : expression::value<proto::_>
21 [[`expression::reference<T>`] [``
24 [[`expression::argument<N>`] [``rule::argument``]]
25 [[`expression::null`] [``rule::custom_terminal``]]
26 [[`expression::function<F, A0, ..., AN>`] [``
28 : expression::function<vararg<meta_grammar> >
30 [[`expression::negate<A0>`] [``
32 : expression::negate<meta_grammar>
34 [[`expression::unary_plus<A0>`] [``
36 : expression::unary_plus<meta_grammar>
38 [[`expression::pre_inc<A0>`] [``
40 : expression::pre_inc<meta_grammar>
42 [[`expression::pre_dec<A0>`] [``
44 : expression::pre_dec<meta_grammar>
46 [[`expression::post_inc<A0>`] [``
48 : expression::post_inc<meta_grammar>
50 [[`expression::post_dec<A0>`] [``
52 : expression::post_dec<meta_grammar>
54 [[`expression::plus_assign<Lhs, Rhs>`] [
57 : expression::plus_assign<meta_grammar, meta_grammar>
59 [[`expression::minus_assign<Lhs, Rhs>`] [``
61 : expression::minus_assign<meta_grammar, meta_grammar>
63 [[`expression::multiplies_assign<Lhs, Rhs>`] [``
64 rule::multiplies_assign
65 : expression::multiplies_assign<meta_grammar, meta_grammar>
67 [[`expression::divides_assign<Lhs, Rhs>`] [``
69 : expression::divides_assign<meta_grammar, meta_grammar>
71 [[`expression::modules_assign<Lhs, Rhs>`] [``
73 : expression::modules_assign<meta_grammar, meta_grammar>
75 [[`expression::plus<Lhs, Rhs>`] [``
77 : expression::plus<meta_grammar, meta_grammar>
79 [[`expression::minus<Lhs, Rhs>`] [``
81 : expression::minus<meta_grammar, meta_grammar>
83 [[`expression::multiplies<Lhs, Rhs>`] [
86 : expression::multiplies<meta_grammar, meta_grammar>
88 [[`expression::divides<Lhs, Rhs>`] [``
90 : expression::divides<meta_grammar, meta_grammar>
92 [[`expression::modulus<Lhs, Rhs>`] [``
94 : expression::modulus<meta_grammar, meta_grammar>
96 [[`expression::complement<A0>`] [``
98 : expression::complement<A0>
100 [[`expression::bitwise_and_assign<Lhs, Rhs>`] [``
101 rule::bitwise_and_assign
102 : expression::bitwise_and_assign<meta_grammar, meta_grammar>
104 [[`expression::bitwise_or_assign<Lhs, Rhs>`] [``
105 rule::bitwise_or_assign
106 : expression::bitwise_or_assign<meta_grammar, meta_grammar>
108 [[`expression::bitwise_xor_assign<Lhs, Rhs>`] [``
109 rule::bitwise_xor_assign
110 : expression::bitwise_xor_assign<meta_grammar, meta_grammar>
112 [[`expression::shift_left_assign<Lhs, Rhs>`] [``
113 rule::shift_left_assign
114 : expression::shift_left_assign<meta_grammar, meta_grammar>
116 [[`expression::shift_right_assign<Lhs, Rhs>`] [``
117 rule::shift_right_assign
118 : expression::shift_right_assign<meta_grammar, meta_grammar>
120 [[`expression::bitwise_and<Lhs, Rhs>`] [``
122 : expression::bitwise_and<meta_grammar, meta_grammar>
124 [[`expression::bitwise_or<Lhs, Rhs>`] [``
126 : expression::bitwise_or<meta_grammar, meta_grammar>
128 [[`expression::bitwise_xor<Lhs, Rhs>`] [``
130 : expression::bitwise_xor<meta_grammar, meta_grammar>
132 [[`expression::shift_left<Lhs, Rhs>`] [``
134 : expression::shift_left<meta_grammar, meta_grammar>
136 [[`expression::shift_right<Lhs, Rhs>`] [``
138 : expression::shift_right<meta_grammar, meta_grammar>
140 [[`expression::equal_to<Lhs, Rhs>`] [``
142 : expression::equal_to<meta_grammar, meta_grammar>
144 [[`expression::not_equal_to<Lhs, Rhs>`] [``
146 : expression::not_equal_to<meta_grammar, meta_grammar>
148 [[`expression::less_equal_to<Lhs, Rhs>`] [``
150 : expression::less_equal_to<meta_grammar, meta_grammar>
152 [[`expression::greater_equal<Lhs, Rhs>`] [``
154 : expression::greater_equal<meta_grammar, meta_grammar>
156 [[`expression::less<Lhs, Rhs>`] [``
158 : expression::less<meta_grammar, meta_grammar>
160 [[`expression::greater<Lhs, Rhs>`] [``
162 : expression::greater<meta_grammar, meta_grammar>
164 [[`expression::if_else_operator<Cond, Then, Else>`] [``
166 : expression::if_else<meta_grammar, meta_grammar, meta_grammar>
168 [[`expression::logical_not<A0>`] [``
170 : expression::logical_not<meta_grammar>
172 [[`expression::logical_and<Lhs, Rhs>`] [``
174 : expression::logical_and<meta_grammar, meta_grammar>
176 [[`expression::logical_or<Lhs, Rhs>`] [``
178 : expression::logical_or<meta_grammar, meta_grammar>
180 [[`expression::mem_fun_ptr<Object, MemPtr, A0, ..., AN>`] [``
182 : expression::mem_fun_ptr<meta_grammar, meta_grammar, vararg<meta_grammar> >
184 [[`expression::address_of<A0>`] [``
186 : expression::address_of<meta_grammar>
188 [[`expression::dereference<A0>`] [``
190 : expression::dereference<meta_grammar>
192 [[`expression::assign<Lhs, Rhs>`] [``
194 : expression::assign<meta_grammar, meta_grammar>
196 [[`expression::subscript<Lhs, Rhs>`] [``
198 : expression::subscript<meta_grammar, meta_grammar>
200 [[`expression::sequence<A0, A1>`] [``
202 : expression::sequence<meta_grammar, meta_grammar>
204 [[`expression::if_<Cond, Then>`] [``
206 : expression::if_<meta_grammar, meta_grammar>
208 [[`expression::if_else_statement<Cond, Then, Else>`] [``
209 rule::if_else_statement
210 : expression::if_else_statement<meta_grammar, meta_grammar, meta_grammar>
212 [[`expression::switch_case<Label, Statement>`] [``
214 : expression::switch_case< terminal<mpl::int_<N> >, meta_grammar>
216 [[`expression::switch_default_case<Statement>`] [``
217 rule::switch_default_case
218 : expression::switch_default_case<meta_grammar>
220 [[`expression::switch_<Cond, Cases>`] [``
222 : expression::switch_<
227 [[`expression::while_<Cond, Do>`] [``
229 : expression::while_<
234 [[`expression::do_while<Cond, Do>`] [``
236 : expression::do_while<
241 [[`expression::for_<Init, Cond, Step, Do>`] [``
250 [[`expression::catch_<Exception, Statement>`] [``
252 : expression::catch_<
253 catch_exception<proto::_>
257 [[`expression::catch_all<Statement>`] [``
259 : expression::catch_<meta_grammar>
262 [`expression::try_catch<Try, Catch0, ..., CatchN>`]
266 expression::try_catch<
268 , vararg<rule::catch_>
270 , expression::try_catch<
272 , vararg<rule::catch_>
275 , expression::try_catch<
281 [[`expression::throw_<A0>`] [``
283 : expression::throw_<meta_grammar>
285 [[`expression::construct<Target, A0, ..., AN>`] [``
287 : expression::construct<
288 terminal<detail::target<proto::_> >
294 [[`expression::new_<Target, A0, ..., AN>`] [``
297 terminal<detail::target<proto::_> >
303 [[`expression::delete_<A0>`] [``
305 : expression::delete_<meta_grammar>
307 [[`expression::static_cast_<Target, A>`] [``
309 : expression::static_cast_<
310 terminal<detail::target<proto::_> >
314 [[`expression::dynamic_cast_<Target, A>`] [``
316 : expression::dynamic_cast_<
317 terminal<detail::target<proto::_> >
321 [[`expression::reinterpret_cast_<Target, A>`] [``
322 rule::reinterpret_cast_
323 : expression::reinterpret_cast_<
324 terminal<detail::target<proto::_> >
328 [[`expression::const_cast_<Target, A>`] [``
330 : expression::const_cast_<
331 terminal<detail::target<proto::_> >
335 [[`expression::local_variable<Key>`] [``rule::custom_terminal``]]
336 [[`expression::let<Locals, Statement>`] [
339 : expression::let<terminal<proto::_>, meta_grammar>
341 [[`expression::lambda<OuterEnv, Locals, Statement>`] [
344 : expression::lambda<terminal<proto::_>, terminal<proto::_>, meta_grammar>
346 [[`expression::lambda_actor<Locals, Statement>`] [
349 : expression::lambda_actor<terminal<proto::_>, meta_grammar>