Module syntax::ext::mtwtUnstable [-] [+] [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