1[/==============================================================================
2    Copyright (C) 2001-2010 Joel de Guzman
3    Copyright (C) 2001-2005 Dan Marsden
4    Copyright (C) 2001-2010 Thomas Heller
5
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===============================================================================/]
9
10[section:rules Predefined Expressions and Rules]
11
12This section is the "behind the scenes" counter part of the __phoenix_modules__
13section. A listing of all the predefined expressions and rules:
14
15[table
16 [[Expression] [Rule] []]
17 [[`expression::value<T>`]     [``
18rule::value
19    : expression::value<proto::_>
20``]]
21 [[`expression::reference<T>`] [``
22rule::custom_terminal
23``]]
24 [[`expression::argument<N>`]  [``rule::argument``]]
25 [[`expression::null`]         [``rule::custom_terminal``]]
26 [[`expression::function<F, A0, ..., AN>`] [``
27rule::function
28    : expression::function<vararg<meta_grammar> >
29``]]
30 [[`expression::negate<A0>`]     [``
31rule::negate
32    : expression::negate<meta_grammar>
33``]]
34 [[`expression::unary_plus<A0>`] [``
35rule::negate
36    : expression::unary_plus<meta_grammar>
37``]]
38 [[`expression::pre_inc<A0>`]    [``
39rule::negate
40    : expression::pre_inc<meta_grammar>
41``]]
42 [[`expression::pre_dec<A0>`]    [``
43rule::negate
44    : expression::pre_dec<meta_grammar>
45``]]
46 [[`expression::post_inc<A0>`]   [``
47rule::negate
48    : expression::post_inc<meta_grammar>
49``]]
50 [[`expression::post_dec<A0>`]   [``
51rule::negate
52    : expression::post_dec<meta_grammar>
53``]]
54 [[`expression::plus_assign<Lhs, Rhs>`] [
55``
56rule::plus_assign
57    : expression::plus_assign<meta_grammar, meta_grammar>
58``]]
59 [[`expression::minus_assign<Lhs, Rhs>`] [``
60rule::minus_assign
61    : expression::minus_assign<meta_grammar, meta_grammar>
62``]]
63 [[`expression::multiplies_assign<Lhs, Rhs>`] [``
64rule::multiplies_assign
65    : expression::multiplies_assign<meta_grammar, meta_grammar>
66``]]
67 [[`expression::divides_assign<Lhs, Rhs>`] [``
68rule::divides_assign
69    : expression::divides_assign<meta_grammar, meta_grammar>
70``]]
71 [[`expression::modules_assign<Lhs, Rhs>`] [``
72rule::modules_assign
73    : expression::modules_assign<meta_grammar, meta_grammar>
74``]]
75 [[`expression::plus<Lhs, Rhs>`] [``
76rule::plus
77    : expression::plus<meta_grammar, meta_grammar>
78``]]
79 [[`expression::minus<Lhs, Rhs>`] [``
80rule::minus
81    : expression::minus<meta_grammar, meta_grammar>
82``]]
83 [[`expression::multiplies<Lhs, Rhs>`] [
84``
85rule::multiplies
86    : expression::multiplies<meta_grammar, meta_grammar>
87``]]
88 [[`expression::divides<Lhs, Rhs>`] [``
89rule::divides
90    : expression::divides<meta_grammar, meta_grammar>
91``]]
92 [[`expression::modulus<Lhs, Rhs>`] [``
93rule::modulus
94    : expression::modulus<meta_grammar, meta_grammar>
95``]]
96 [[`expression::complement<A0>`] [``
97rule::complement
98    : expression::complement<A0>
99``]]
100 [[`expression::bitwise_and_assign<Lhs, Rhs>`] [``
101rule::bitwise_and_assign
102    : expression::bitwise_and_assign<meta_grammar, meta_grammar>
103``]]
104 [[`expression::bitwise_or_assign<Lhs, Rhs>`]  [``
105rule::bitwise_or_assign
106    : expression::bitwise_or_assign<meta_grammar, meta_grammar>
107``] ]
108 [[`expression::bitwise_xor_assign<Lhs, Rhs>`] [``
109rule::bitwise_xor_assign
110    : expression::bitwise_xor_assign<meta_grammar, meta_grammar>
111``]]
112 [[`expression::shift_left_assign<Lhs, Rhs>`]  [``
113rule::shift_left_assign
114    : expression::shift_left_assign<meta_grammar, meta_grammar>
115``] ]
116 [[`expression::shift_right_assign<Lhs, Rhs>`] [``
117rule::shift_right_assign
118    : expression::shift_right_assign<meta_grammar, meta_grammar>
119``]]
120 [[`expression::bitwise_and<Lhs, Rhs>`]        [``
121rule::bitwise_and
122    : expression::bitwise_and<meta_grammar, meta_grammar>
123``]]
124 [[`expression::bitwise_or<Lhs, Rhs>`]         [``
125rule::bitwise_or
126    : expression::bitwise_or<meta_grammar, meta_grammar>
127``]]
128 [[`expression::bitwise_xor<Lhs, Rhs>`]        [``
129rule::bitwise_xor
130    : expression::bitwise_xor<meta_grammar, meta_grammar>
131``]]
132 [[`expression::shift_left<Lhs, Rhs>`]         [``
133rule::shift_left
134    : expression::shift_left<meta_grammar, meta_grammar>
135``]]
136 [[`expression::shift_right<Lhs, Rhs>`]        [``
137rule::shift_right
138    : expression::shift_right<meta_grammar, meta_grammar>
139``]]
140 [[`expression::equal_to<Lhs, Rhs>`]           [``
141rule::equal_to
142    : expression::equal_to<meta_grammar, meta_grammar>
143``]]
144 [[`expression::not_equal_to<Lhs, Rhs>`]       [``
145rule::not_equal_to
146    : expression::not_equal_to<meta_grammar, meta_grammar>
147``]]
148 [[`expression::less_equal_to<Lhs, Rhs>`]      [``
149rule::less_equal_to
150    : expression::less_equal_to<meta_grammar, meta_grammar>
151``]]
152 [[`expression::greater_equal<Lhs, Rhs>`]      [``
153rule::greater_equal
154    : expression::greater_equal<meta_grammar, meta_grammar>
155``]]
156 [[`expression::less<Lhs, Rhs>`]               [``
157rule::less
158    : expression::less<meta_grammar, meta_grammar>
159``]]
160 [[`expression::greater<Lhs, Rhs>`]            [``
161rule::greater
162    : expression::greater<meta_grammar, meta_grammar>
163``]]
164 [[`expression::if_else_operator<Cond, Then, Else>`] [``
165rule::if_else
166    : expression::if_else<meta_grammar, meta_grammar, meta_grammar>
167``]]
168 [[`expression::logical_not<A0>`] [``
169rule::logical_not
170    : expression::logical_not<meta_grammar>
171``]]
172 [[`expression::logical_and<Lhs, Rhs>`] [``
173rule::logical_and
174    : expression::logical_and<meta_grammar, meta_grammar>
175``]]
176 [[`expression::logical_or<Lhs, Rhs>`] [``
177rule::logical_or
178    : expression::logical_or<meta_grammar, meta_grammar>
179``]]
180 [[`expression::mem_fun_ptr<Object, MemPtr, A0, ..., AN>`] [``
181rule::mem_fun_ptr
182    : expression::mem_fun_ptr<meta_grammar, meta_grammar, vararg<meta_grammar> >
183``]]
184 [[`expression::address_of<A0>`] [``
185rule::address_of
186    : expression::address_of<meta_grammar>
187``]]
188 [[`expression::dereference<A0>`] [``
189rule::dereference
190    : expression::dereference<meta_grammar>
191``]]
192 [[`expression::assign<Lhs, Rhs>`] [``
193rule::assign
194    : expression::assign<meta_grammar, meta_grammar>
195``]]
196 [[`expression::subscript<Lhs, Rhs>`] [``
197rule::subscript
198    : expression::subscript<meta_grammar, meta_grammar>
199``]]
200 [[`expression::sequence<A0, A1>`] [``
201rule::sequence
202    : expression::sequence<meta_grammar, meta_grammar>
203``]]
204 [[`expression::if_<Cond, Then>`] [``
205rule::if_
206    : expression::if_<meta_grammar, meta_grammar>
207``]]
208 [[`expression::if_else_statement<Cond, Then, Else>`] [``
209rule::if_else_statement
210    : expression::if_else_statement<meta_grammar, meta_grammar, meta_grammar>
211``]]
212 [[`expression::switch_case<Label, Statement>`] [``
213rule::switch_case
214    : expression::switch_case< terminal<mpl::int_<N> >, meta_grammar>
215``]]
216 [[`expression::switch_default_case<Statement>`] [``
217rule::switch_default_case
218    : expression::switch_default_case<meta_grammar>
219``]]
220 [[`expression::switch_<Cond, Cases>`] [``
221rule::switch_
222    : expression::switch_<
223        meta_grammar
224      , switch_grammar
225    >
226``]]
227 [[`expression::while_<Cond, Do>`] [``
228rule::while_
229    : expression::while_<
230        meta_grammar
231      , meta_grammar
232    >
233``]]
234 [[`expression::do_while<Cond, Do>`] [``
235rule::do_while
236    : expression::do_while<
237        meta_grammar
238      , meta_grammar
239    >
240``]]
241 [[`expression::for_<Init, Cond, Step, Do>`] [``
242rule::for_
243    : expression::for_<
244        meta_grammar
245      , meta_grammar
246      , meta_grammar
247      , meta_grammar
248    >
249``]]
250 [[`expression::catch_<Exception, Statement>`] [``
251rule::catch_
252    : expression::catch_<
253        catch_exception<proto::_>
254      , meta_grammar
255    >
256``]]
257 [[`expression::catch_all<Statement>`] [``
258rule::catch_all
259    : expression::catch_<meta_grammar>
260``]]
261 [
262  [`expression::try_catch<Try, Catch0, ..., CatchN>`]
263  [``
264rule::try_catch
265    : proto::or_<
266        expression::try_catch<
267            meta_grammar
268          , vararg<rule::catch_>
269        >
270      , expression::try_catch<
271            meta_grammar
272          , vararg<rule::catch_>
273          , rule::catch_all
274        >
275      , expression::try_catch<
276            meta_grammar
277          , catch_all
278        >
279    >
280``]]
281 [[`expression::throw_<A0>`] [``
282rule::throw_
283    : expression::throw_<meta_grammar>
284``]]
285 [[`expression::construct<Target, A0, ..., AN>`] [``
286 rule::construct
287    : expression::construct<
288        terminal<detail::target<proto::_> >
289      , A0
290        ...
291      , AN
292    >
293 ``]]
294 [[`expression::new_<Target, A0, ..., AN>`] [``
295 rule::new_
296    : expression::new_<
297        terminal<detail::target<proto::_> >
298      , A0
299        ...
300      , AN
301    >
302 ``]]
303 [[`expression::delete_<A0>`] [``
304rule::delete_
305      : expression::delete_<meta_grammar>
306``]]
307 [[`expression::static_cast_<Target, A>`] [``
308 rule::static_cast_
309    : expression::static_cast_<
310        terminal<detail::target<proto::_> >
311      , A
312    >
313 ``]]
314 [[`expression::dynamic_cast_<Target, A>`] [``
315 rule::dynamic_cast_
316    : expression::dynamic_cast_<
317        terminal<detail::target<proto::_> >
318      , A
319    >
320 ``]]
321 [[`expression::reinterpret_cast_<Target, A>`] [``
322 rule::reinterpret_cast_
323    : expression::reinterpret_cast_<
324        terminal<detail::target<proto::_> >
325      , A
326    >
327 ``]]
328 [[`expression::const_cast_<Target, A>`] [``
329 rule::const_cast_
330    : expression::const_cast_<
331        terminal<detail::target<proto::_> >
332      , A
333    >
334 ``]]
335 [[`expression::local_variable<Key>`] [``rule::custom_terminal``]]
336 [[`expression::let<Locals, Statement>`] [
337``
338rule::let
339    : expression::let<terminal<proto::_>, meta_grammar>
340``]]
341 [[`expression::lambda<OuterEnv, Locals, Statement>`] [
342``
343rule::lambda
344    : expression::lambda<terminal<proto::_>, terminal<proto::_>, meta_grammar>
345``]]
346 [[`expression::lambda_actor<Locals, Statement>`] [
347``
348rule::lambda_actor
349    : expression::lambda_actor<terminal<proto::_>, meta_grammar>
350``]]
351]
352
353[endsect]
354