On this page:
Syntax:   Meta-Programming Helpers
7.9.0.4

Syntax: Meta-Programming Helpers

    1 Parsing and Specifying Syntax

      1.1 Introduction

      1.2 Examples

        1.2.1 Phases and Reusable Syntax Classes

        1.2.2 Optional Keyword Arguments

          1.2.2.1 Optional Arguments with ~?

          1.2.2.2 Optional Arguments with define-splicing-syntax-class

        1.2.3 Variants with Uniform Meanings

        1.2.4 Variants with Varied Meanings

          1.2.4.1 Syntactic Normalization

          1.2.4.2 Non-syntax-valued Attributes

        1.2.5 More Keyword Arguments

        1.2.6 Contracts on Macro Sub-expressions

      1.3 Parsing Syntax

      1.4 Specifying Syntax with Syntax Classes

        1.4.1 Pattern Directives

        1.4.2 Pattern Variables and Attributes

          1.4.2.1 Attributes and datum

      1.5 Syntax Patterns

        1.5.1 Single-term Patterns

        1.5.2 Head Patterns

        1.5.3 Ellipsis-head Patterns

        1.5.4 Action Patterns

        1.5.5 Pattern Expanders

      1.6 Defining Simple Macros

      1.7 Literal Sets and Conventions

      1.8 Library Syntax Classes and Literal Sets

        1.8.1 Syntax Classes

        1.8.2 Literal Sets

        1.8.3 Function Headers

      1.9 Unwindable State

      1.10 Debugging and Inspection Tools

      1.11 Experimental

        1.11.1 Contracts for Macro Sub-expressions

        1.11.2 Contracts for Syntax Classes

        1.11.3 Reflection

        1.11.4 Procedural Splicing Syntax Classes

        1.11.5 Ellipsis-head Alternative Sets

        1.11.6 Syntax Class Specialization

        1.11.7 Syntax Templates

    2 Syntax Object Helpers

      2.1 Deconstructing Syntax Objects

      2.2 Matching Fully-Expanded Expressions

      2.3 Dictionaries with Identifier Keys

        2.3.1 Dictionaries for free-identifier=?

        2.3.2 Dictionaries for bound-identifier=?

      2.4 Sets with Identifier Keys

        2.4.1 Sets for free-identifier=?

        2.4.2 Sets for bound-identifier=?

      2.5 Hashing on bound-identifier=? and free-identifier=?

      2.6 Rendering Syntax Objects with Formatting

      2.7 Computing the Free Variables of an Expression

      2.8 Replacing Lexical Context

      2.9 Helpers for Processing Keyword Syntax

    3 Datum Pattern Matching

    4 Module-Processing Helpers

      4.1 Reading Module Source Code

      4.2 Getting Module Compiled Code

      4.3 Resolving Module Paths to File Paths

      4.4 Simplifying Module Paths

      4.5 Inspecting Modules and Module Dependencies

      4.6 Wrapping Module-Body Expressions

    5 Macro Transformer Helpers

      5.1 Extracting Inferred Names

      5.2 Support for local-expand

      5.3 Parsing define-like Forms

      5.4 Flattening begin Forms

      5.5 Expanding define-struct-like Forms

      5.6 Resolving include-like Paths

      5.7 Controlling Syntax Templates

      5.8 Creating Macro Transformers

      5.9 Applying Macro Transformers

    6 Reader Helpers

      6.1 Raising exn:fail:read

      6.2 Module Reader

    7 Parsing for Bodies

    8 Unsafe for Clause Transforms

    9 Source Locations

      9.1 Representations

      9.2 Source Location Utilities

        9.2.1 Quoting

    10 Preserving Source Locations

    11 Non-Module Compilation And Expansion

    12 Trusting Standard Recertifying Transformers

    13 Attaching Documentation to Exports

    14 Contracts for Macro Subexpressions

    15 Macro Testing

    16 Internal-Definition Context Helpers

    Index