class CrShader::MacroEngine::MacroExpanderTransformer

Defined in:

crshader/macros/macro_engine.cr

Constructors

Instance Method Summary

Constructor Detail

def self.new(macros : Hash(String, Crystal::Macro), constants : Hash(String, Crystal::ASTNode)) #

Instance Method Detail

def constants : Hash(String, Crystal::ASTNode) #

def constants=(constants : Hash(String, Crystal::ASTNode)) #

def expand_macro_call(call : Crystal::Call) : Array(Crystal::ASTNode) #

Expand a call to a registered macro


def expand_macro_for(node : Crystal::MacroFor, env : Hash(String, Crystal::ASTNode)) : Array(Crystal::ASTNode) #

Expand a MacroFor node


def expand_macro_if(node : Crystal::MacroIf, env : Hash(String, Crystal::ASTNode)) : Array(Crystal::ASTNode) #

Expand a MacroIf node


def macros : Hash(String, Crystal::Macro) #

def macros=(macros : Hash(String, Crystal::Macro)) #

def transform(node : Crystal::Expressions) : Crystal::ASTNode #

Intercept Expressions to unroll loops, conditionals, and macro calls


def transform(node : Crystal::Call) : Crystal::ASTNode #

Handle single macro call expression


def transform(node : Crystal::Def) : Crystal::ASTNode #

Handle Def body transformation