ExLisp.Macro (exlisp v0.1.2)

Copy Markdown

Common Lisp-style macro expansion system. Provides destructuring-bind, backquote expansion, and macroexpand.

Summary

Functions

Converts an AST node to Common Lisp S-expression data (atom, list, lit).

Constructs a list of let* binding ASTs from a macro's lambda list.

Generates a macro function lambda AST from defmacro parameters and body. The generated AST has the form (lambda (__macro_args__ __macro_whole__) (let* (...) body...)).

Transforms a backquote expression AST into an expanded AST using list / append / quote. Manages nested backquote depth to perform unquoting at the appropriate level.

Converts Common Lisp S-expression data (atom, list, lit) to an AST node.

Functions

ast_to_lisp_data(ast)

Converts an AST node to Common Lisp S-expression data (atom, list, lit).

build_bindings(params_node, args_var, whole_var)

Constructs a list of let* binding ASTs from a macro's lambda list.

build_macro_lambda(params_node, body_nodes)

Generates a macro function lambda AST from defmacro parameters and body. The generated AST has the form (lambda (__macro_args__ __macro_whole__) (let* (...) body...)).

expand_backquote(ast, depth \\ 1)

Transforms a backquote expression AST into an expanded AST using list / append / quote. Manages nested backquote depth to perform unquoting at the appropriate level.

lisp_data_to_ast(data, line \\ 1)

Converts Common Lisp S-expression data (atom, list, lit) to an AST node.