Commit Graph

433 Commits

Author SHA1 Message Date
Zach Laine
f2a8cb9d51 detail/default_eval.hpp -> detail/transform.hpp 2018-02-25 15:11:03 -06:00
Zach Laine
0dbd7592b8 Fix transform() in the case that a default-handled nonterminal does not come
from an expression template; as_expr_result -> minimal_expr.

Fixes #60.
2018-02-25 14:58:52 -06:00
Zach Laine
f85c018dd8 Remove TODO.
Fixes #66.
2018-02-25 14:21:16 -06:00
Zach Laine
74eab425e7 Substantially rewrite the description of transform() semantics.
Fixes #47.
Fixes #50.
2018-02-25 14:18:21 -06:00
Zach Laine
eef55d0f96 Flesh out note about mixing and matching ETs in a single expression;
miscellaneous copy editing.

Fixes #61.
2018-02-25 00:45:52 -06:00
Zach Laine
a562edb346 Flesh out commentary in let.cpp; add it to the docs as an example. 2018-02-24 23:58:41 -06:00
Zach Laine
d8b2181185 Copy editing. 2018-02-24 23:58:11 -06:00
Zach Laine
746787cc82 Add section on the idiomatic use of YAP.
Fixes #44.
2018-02-24 22:45:32 -06:00
Zach Laine
b861f977a4 Change the semantics of replacements() and replace_placeholders() so that they
replace placeholders with YAP terminals instead of values.
2018-02-24 17:11:03 -06:00
Zach Laine
bc4ea3f81d Factor placeholder replacement out into its own transform object, available
via replacements() and replace_placeholders().
2018-02-24 15:57:43 -06:00
Zach Laine
260dc0e82d Remove the now-redundant uses of as_expr(). 2018-02-23 21:50:06 -06:00
Zach Laine
bcbcd8fa26 Don't needlessly return the nth element of a vector as a copy in take_nth.
Fixes #39.
2018-02-23 21:50:06 -06:00
Zach Laine
46d9b4fe22 Improve vector_alloc_test based on review feedback.
Fixes #53.
2018-02-23 21:50:06 -06:00
Zach Laine
746adaabfe Condition the 'let' example build on the availability of cosntexpr if. 2018-02-23 02:03:46 -06:00
Zach Laine
3337d2eb11 Remove previous evaluate() implementation cruft. 2018-02-23 01:58:54 -06:00
Zach Laine
efecff22b7 Add a template that can be used to create evaluation transform objects, and
use this in evaluate().
2018-02-23 01:56:55 -06:00
Zach Laine
91e8c682b5 Remove customization point cruft from example/mixed.cpp. 2018-02-23 01:50:40 -06:00
Zach Laine
2391313a48 Take an arbitrary number of transform objects in transform{,_strict}(). 2018-02-23 00:01:34 -06:00
Zach Laine
ebe94b698a Add transform_strict().
Fixes #57.
2018-02-22 23:18:43 -06:00
Zach Laine
6bb94c1082 Remove redundant case from iota_terminal_transform. 2018-02-22 23:18:43 -06:00
Zach Laine
54d1b14237 Wrap the first argument to transform() by calling as_expr() on it, so that
as_expr() is rarely needed outside of transform().

Continue to accept rvalue transform objects in the top-level transform(), but
do not perfectly forward it into the implementation details of transform().
This fixes the potential bug of stealing the movable contents of a transform.

Simplify the implementation of transform() considerably.

Fixes #62.
2018-02-22 23:18:39 -06:00
Zach Laine
4b383f9343 Add example implementing a version of Boost.Phoenex's let() syntax. 2018-02-20 23:27:40 -06:00
Zach Laine
cb10bae121 Correct subtle error in value(). When value() is given a terminal, it must
return an lvalue reference if the terminal's tuple's single element is an
lvalue reference.
2018-02-20 23:24:49 -06:00
Zach Laine
c0dbeb3d3c Clang format. 2018-02-20 23:21:15 -06:00
Zach Laine
20e4faa593 Clang format in include/ and test/.
Fixes #42.
2018-02-20 01:15:52 -06:00
Zach Laine
36fdafaf38 Changes based on Part 3 of Steven Watanabe's review. 2018-02-20 01:02:41 -06:00
Zach Laine
7b7935b0d0 Rewrite "Features" section of intro, based on review feedback.
Fixes #46.
2018-02-18 16:09:54 -06:00
Zach Laine
b80f06a4c6 Finish integrating the two new examples into the docs. 2018-02-18 15:53:12 -06:00
Zach Laine
25d4acf6d6 Add extensive comments to pipable_algorithms.cpp; use snippets from it in the
intro; add it as an example.
2018-02-18 13:33:53 -06:00
Zach Laine
98acc2b2e7 Add pipable_algorithms example. 2018-02-18 12:35:54 -06:00
Zach Laine
f86431905d Update docs copyright year. 2018-02-17 21:17:32 -06:00
Zach Laine
b4d2d93fbb Docs copy editing. 2018-02-17 21:17:32 -06:00
Zach Laine
32de54e53d Cruft removal. 2018-02-17 00:21:17 -06:00
Zach Laine
b652079acb Take any hana::IntegralConstant as the "i" argument to get().
Fixes #36.
2018-02-17 00:14:26 -06:00
Zach Laine
5d011d83a0 Tweak comment. 2018-02-16 23:45:15 -06:00
Zach Laine
22b8ab969f Make the calc3 get_arity transform a little nicer based on review feedback.
Fixes #43.
2018-02-16 23:23:48 -06:00
Zach Laine
07848d6236 Simplify the overload set used in the transformf in transform_terminals.
Fixes #38.
2018-02-16 23:07:38 -06:00
Zach Laine
123ea1df6a Fix malformed expr_kind::call overload in transform_terminals example. 2018-02-16 23:02:59 -06:00
Zach Laine
8712988c25 Add expr_tag template to handle expr_kind <-> tag mapping.
Fixes #49.
2018-02-16 22:34:09 -06:00
Zach Laine
0dc4966ca7 Copy editing. 2018-02-16 21:56:53 -06:00
Zach Laine
fc247a1f2d Remove another probably unneeded reference to Proto. 2018-02-16 21:56:53 -06:00
Zach Laine
d1834c6c01 Add references to specific examples alluded to in a general reference to "Examples". 2018-02-16 21:56:53 -06:00
Zach Laine
99f4e4355f Remove reference to Proto from the intro. 2018-02-16 21:56:53 -06:00
Zach Laine
0f4e144edc Add terminal transform example; not working due to longstanding call_expr tag
transform matching bug.
2018-02-15 23:02:26 -06:00
Zach Laine
27380020d7 Revert "Transform terminals before they are unwrapped and given as arguments to"
This reverts commit 4e68505bab.

Fixes #40.
2018-02-15 21:24:20 -06:00
Zach Laine
191aa0c0ae Consolidate expression<> code into a single header.
Fixes #37.
2018-02-15 19:17:10 -06:00
Zach Laine
e1fcacccdd detail::tag_for() -> to_tag(); add its compliment, to_kind(). 2018-02-15 18:53:01 -06:00
Zach Laine
3709cd2eb3 Flatten the doc section nesting; extend intro; add primer. 2018-02-15 18:10:30 -06:00
Zach Laine
acfebf5643 Minor adjustments to get the docs building again; remove some doc cruft. 2018-02-15 18:07:53 -06:00
Zach Laine
8282c4b10e Add Boost license copyright headers to all C++ files.
Fixes #31.
2018-02-15 18:07:48 -06:00