Useful Links
Computer Science
Programming
Metaprogramming
1. Introduction to Metaprogramming
2. Fundamental Dichotomies
3. Core Techniques and Mechanisms
4. Language-Specific Features and Idioms
5. Metaprogramming Paradigms and Patterns
6. Practical Applications and Use Cases
7. Advanced Topics and Considerations
Core Techniques and Mechanisms
Reflection
Introspection: Examining Program Structure
Type Introspection
Discovering Classes and Interfaces
Examining Fields and Properties
Inspecting Methods and Constructors
Retrieving Annotations or Attributes
Type Hierarchy Analysis
Assembly and Module Inspection
Listing Loaded Modules
Inspecting Module Metadata
Dependency Analysis
Runtime Environment Inspection
Stack Trace Analysis
Memory Layout Inspection
Intercession: Modifying Program Structure and Behavior
Dynamic Method Invocation
Method Lookup and Binding
Parameter Marshalling
Return Value Handling
Dynamic Object Instantiation
Constructor Selection
Initialization Patterns
Modifying Class Structure at Runtime
Adding or Removing Methods
Changing Field Values
Inheritance Modification
Behavioral Modification
Method Interception
Event Handling Modification
Code Generation
String-Based Code Generation
Text Templates
Template Engines
Parameter Substitution
Control Flow in Templates
String Concatenation
Manual Code Assembly
Risks and Limitations
Error Handling
Code Formatting and Pretty Printing
Indentation Management
Syntax Highlighting
Abstract Syntax Tree (AST) Manipulation
Parsing Source Code into an AST
Lexical Analysis
Syntax Analysis
Error Recovery
Traversing and Analyzing the AST
Tree Walking Algorithms
Pattern Matching in ASTs
Visitor Pattern Implementation
Transforming the AST
Code Refactoring
Code Optimization
Structural Modifications
Unparsing AST to Source Code
Code Serialization
Pretty Printing
Source Map Generation
Bytecode Engineering
Direct Manipulation of Intermediate Representation
Understanding Bytecode Formats
Editing Bytecode Instructions
Control Flow Analysis
Libraries for Bytecode Manipulation
Overview of Major Libraries
Use Cases and Examples
Performance Considerations
Verification and Validation
Bytecode Verification
Type Safety Checking
Pre-processing and Macros
Textual Pre-processors
Macro Expansion
Simple Text Substitution
Parameterized Macros
Conditional Compilation
Platform-Specific Code
Feature Flags
File Inclusion
Header Management
Dependency Resolution
Syntactic Macros
Macro Definition and Expansion
Syntax Rules
Expansion Algorithms
Hygienic Macros
Avoiding Variable Capture
Language Support for Hygiene
Scope Management
Unhygienic Macros
Risks and Use Cases
Manual Hygiene Management
Debugging Challenges
Procedural Macros
Custom Syntax Extensions
Compile-Time Code Execution
Integration with Type Systems
Previous
2. Fundamental Dichotomies
Go to top
Next
4. Language-Specific Features and Idioms