tame/tamer/src/asg/graph/object
Mike Gerwitz 9d50157f8e 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-29 12:58:32 -04:00
..
ident Copyright year and name update 2023-01-20 23:37:30 -05:00
expr.rs tamer: NIR->xmli: Ceil, Floor expressions 2023-03-10 14:28:00 -05:00
ident.rs tamer: src::asg: Scaffolding for metasyntactic variables 2023-03-15 16:40:07 -04:00
meta.rs tamer: src::asg: Scaffolding for metasyntactic variables 2023-03-15 16:40:07 -04:00
pkg.rs tamer: Very basic support for template application NIR -> xmli 2023-03-29 12:58:32 -04:00
rel.rs tamer: src::asg: Scaffolding for metasyntactic variables 2023-03-15 16:40:07 -04:00
root.rs tamer: asg::graph: object_gen and object_rel macros 2023-03-10 14:27:58 -05:00
tpl.rs tamer: Very basic support for template application NIR -> xmli 2023-03-29 12:58:32 -04:00