API for clojure.tools.analyzer - tools.analyzer 1.1.2-SNAPSHOT (in development)


Full namespace name: clojure.tools.analyzer

Overview

Analyzer for clojure code, host agnostic.

Entry point:
* analyze

Platform implementers must provide dynamic bindings for:
* macroexpand-1
* parse
* create-var
* var?

Setting up the global env is also required, see clojure.tools.analyzer.env

See clojure.tools.analyzer.core-test for an example on how to setup the analyzer.

Public Variables and Functions



-parse

function
Usage: (-parse form env)
Takes a form and an env map and dispatches on the head of the form, that is
a special form.

    
    
    Source
  


analyze

function
Usage: (analyze form env)
Given a form to analyze and an environment, a map containing:
* :locals     a map from binding symbol to AST of the binding value
* :context    a keyword describing the form's context from the :ctx/* hierarchy.
 ** :ctx/expr      the form is an expression: its value is used
 ** :ctx/return    the form is an expression in return position, derives :ctx/expr
 ** :ctx/statement the value of the form is not used
* :ns         a symbol representing the current namespace of the form to be
              analyzed

returns an AST for that form.

Every node in the AST is a map that is *guaranteed* to have the following keys:
* :op   a keyword describing the AST node
* :form the form represented by the AST node
* :env  the environment map of the AST node

Additionally if the AST node contains sub-nodes, it is guaranteed to have:
* :children a vector of the keys of the AST node mapping to the sub-nodes,
            ordered, when that makes sense

It is considered a node either the top-level node (marked with :top-level true)
or a node that can be reached via :children; if a node contains a node-like
map that is not reachable by :children, there's no guarantee that such a map
will contain the guaranteed keys.

    
    
    Source
  


analyze-form

dynamic multimethod
No usage documentation available
Like analyze, but does not mark the form with :top-level true

    
    
    Source
  


analyze-in-env

function
Usage: (analyze-in-env env)
Takes an env map and returns a function that analyzes a form in that env

    
    
    Source
  


create-var

dynamic function
Usage: (create-var sym env)
Creates a var for sym and returns it

    
    
    Source
  


empty-env

function
Usage: (empty-env)
Returns an empty env

    
    
    Source
  


macroexpand

function
Usage: (macroexpand form env)
Repeatedly calls macroexpand-1 on form until it no longer
represents a macro form, then returns it.

    
    
    Source
  


macroexpand-1

dynamic function
Usage: (macroexpand-1 form env)
If form represents a macro form, returns its expansion,
else returns form.

    
    
    Source
  


parse

dynamic function
Usage: (parse [op & args] env)
Multimethod that dispatches on op, should default to -parse

    
    
    Source
  


specials

var

    
Set of special forms common to every clojure variant

    
    
    Source
  


var?

dynamic function
Usage: (var? obj)
Returns true if obj represent a var form as returned by create-var