Mike Gerwitz
56d92fe22b
This this a big change that's difficult to break up, and I don't have the energy after it. This introduces nullary template application, short- and long-form. Note that a body of the short form is a `@values@` argument, so that's not supported yet. This continues to formalize the idea of what "template application" and "template expansion" mean in TAMER. It makes a separate `TplApply` unnecessary, because now application is simply a reference to a template. Expansion and application are one and the same: when a template expands, it'll re-bind metavariables to the parent context. So in a template context, this amounts to application. But applying a closed template will have nothing to bind, and so is equivalent to expansion. And since `Meta` objects are not valid outside of a `Tpl` context, applying a non-closed template outside of another template will be invalid. So we get all of this with a single primitive (getting the "value" of a template). The expansion is conceptually like `,@` in Lisp, where we're splicing trees. It's a mess in some spots, but I want to get this committed before I do a little bit of cleanup. |
||
---|---|---|
.. | ||
xmli | ||
README.md | ||
run-tests |
README.md
System and Integration Tests
Rust files in this directory will be recognized by Cargo and will be
automatically compiled and run by make check
.
Shell scripts prefixed with test-
will be recognized by our test harness
and run on make check
. These scripts should be preferred when confidence
in the system end-to-end is required, since they invoke the binaries just
the same as the user or build process would.
Unit and integration tests written in Rust are located alongside the modules
they test in ../src/
. Benchmarks are in
../benches
.