2023-02-22 23:03:42 -05:00
|
|
|
<?xml version="1.0"?>
|
|
|
|
<package xmlns="http://www.lovullo.com/rater"
|
|
|
|
xmlns:c="http://www.lovullo.com/calc"
|
|
|
|
xmlns:t="http://www.lovullo.com/rater/apply-template">
|
|
|
|
|
2023-02-28 15:31:49 -05:00
|
|
|
<template name="_empty_" />
|
2023-03-07 12:41:47 -05:00
|
|
|
|
2023-03-08 14:47:31 -05:00
|
|
|
<template name="_with-static-reachable_">
|
|
|
|
All expressions here are reachable
|
|
|
|
(having been derived from named statements).
|
|
|
|
|
|
|
|
<rate yields="tplStaticA">
|
|
|
|
<c:sum />
|
|
|
|
</rate>
|
|
|
|
<classify as="tpl-static-b">
|
|
|
|
<any />
|
|
|
|
</classify>
|
|
|
|
</template>
|
2023-03-08 23:44:40 -05:00
|
|
|
|
|
|
|
<template name="_with-static-unreachable_">
|
|
|
|
This expression is on its own unreachable,
|
|
|
|
intended to be expanded into another expression.
|
|
|
|
|
|
|
|
<c:sum>
|
|
|
|
<c:product />
|
|
|
|
</c:sum>
|
|
|
|
|
|
|
|
<c:product>
|
|
|
|
<c:sum />
|
|
|
|
</c:product>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<template name="_with-static-mix-reachability_">
|
|
|
|
Both reachable and unreachable,
|
|
|
|
with the intent of expanding into an expression but also providing
|
|
|
|
itself with supporting expressions.
|
|
|
|
|
|
|
|
<c:sum>
|
|
|
|
<c:product />
|
|
|
|
</c:sum>
|
|
|
|
|
|
|
|
<c:product> <!-- depth N -->
|
|
|
|
<c:sum /> <!-- depth N+1 -->
|
|
|
|
</c:product>
|
|
|
|
|
|
|
|
The above expression will end at depth N+1,
|
|
|
|
to be auto-closed.
|
|
|
|
The below expression will yield an Ident->Expr,
|
|
|
|
and so will _begin_ at N+1.
|
|
|
|
We must therefore ensure,
|
|
|
|
and this test do so assert,
|
|
|
|
that this matching depth does not cause the reparenting of this next
|
|
|
|
expression into its preceding sibling.
|
|
|
|
|
|
|
|
<rate yields="tplStaticMix" /> <!-- begins at depth N+1 -->
|
|
|
|
|
|
|
|
<c:sum>
|
|
|
|
<c:product />
|
|
|
|
</c:sum>
|
|
|
|
</template>
|
tamer: Very basic support for template application NIR -> xmli
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.
2023-03-17 10:25:56 -04:00
|
|
|
|
|
|
|
Short-hand template application.
|
|
|
|
These get expanding into the long form so that we don't have to translate
|
|
|
|
back and forth between the underscore-padded strings.
|
|
|
|
The fixpoint test will further verify that TAMER also recognizes the long
|
|
|
|
`apply-template` form,
|
|
|
|
asserting their equivalency.
|
|
|
|
|
|
|
|
<t:short-hand-nullary />
|
|
|
|
|
|
|
|
<!-- TODO
|
|
|
|
<t:short-hand-nullary-body>
|
|
|
|
<c:sum />
|
|
|
|
</t:short-hand-nullary-body>
|
|
|
|
|
|
|
|
<t:short-hand-nullary-inner>
|
|
|
|
<t:inner-short />
|
|
|
|
</t:short-hand-nullary-inner>
|
|
|
|
|
|
|
|
<t:short-hand foo="bar" />
|
|
|
|
|
|
|
|
<t:short-hand foo="bar">
|
|
|
|
<c:sum />
|
|
|
|
</t:short-hand>
|
|
|
|
|
|
|
|
<t:short-hand foo="bar">
|
|
|
|
<t:inner-short />
|
|
|
|
</t:short-hand>
|
|
|
|
|
|
|
|
<rate yields="shortHandTplInExpr">
|
|
|
|
<t:short-hand in="rate" />
|
|
|
|
</rate>
|
|
|
|
|
|
|
|
<template name="_tpl-with-short-hand-inner_">
|
|
|
|
<t:short-hand />
|
|
|
|
|
|
|
|
<c:sum>
|
|
|
|
<t:short-hand in="sum" />
|
|
|
|
</c:sum>
|
|
|
|
</template>
|
|
|
|
-->
|
2023-02-28 15:31:49 -05:00
|
|
|
</package>
|
2023-03-09 09:19:05 -05:00
|
|
|
|