Module syntex_syntax::ext::mtwt
[−]
[src]
Machinery for hygienic macros, as described in the MTWT[1] paper.
[1] Matthew Flatt, Ryan Culpepper, David Darais, and Robert Bruce Findler. 2012. Macros that work together: Compile-time bindings, partial expansion, and definition contexts. J. Funct. Program. 22, 2 (March 2012), 181-216. DOI=10.1017/S0956796812000093 http://dx.doi.org/10.1017/S0956796812000093
Reexports
pub use self::SyntaxContext_::*; |
Structs
SCTable |
The SCTable contains a table of SyntaxContext_'s. It represents a flattened tree structure, to avoid having managed pointers everywhere (that caused an ICE). the mark_memo and rename_memo fields are side-tables that ensure that adding the same mark to the same context gives you back the same context as before. This shouldn't change the semantics--everything here is immutable--but it should cut down on memory use a lot; applying a mark to a tree containing 50 identifiers would otherwise generate 50 new contexts |
Enums
SyntaxContext_ |
Functions
apply_mark |
Extend a syntax context with a given mark |
apply_rename |
Extend a syntax context with a given rename |
apply_renames |
Apply a list of renamings to a context |
clear_tables |
Clear the tables from TLD to reclaim memory. |
display_sctable |
Print out an SCTable for debugging |
marksof |
Compute the marks associated with a syntax context. |
outer_mark |
Return the outer mark for a context with a mark at the outside. FAILS when outside is not a mark. |
reset_tables |
Reset the tables to their initial state |
resolve |
Resolve a syntax object to a name, per MTWT. |
with_sctable |
Fetch the SCTable from TLS, create one if it doesn't yet exist. |
Type Definitions
RenameList |
A list of ident->name renamings |