abstract(Data)->AbsTerm
Types:
Data = term()
AbsTerm = abstract_expr()
Converts the Erlang data structure Data into an abstract form of type AbsTerm. This function is
the inverse of normalise/1.
erl_parse:abstract(T) is equivalent to erl_parse:abstract(T,0).
abstract(Data,Options)->AbsTerm
Types:
Data = term()
Options = Location | [Option]
Option =
{encoding, Encoding} | {line, Line} | {location, Location}
Encoding = latin1 | unicode | utf8 | none | encoding_func()
Line = erl_anno:line()
Location = erl_anno:location()
AbsTerm = abstract_expr()
encoding_func() = fun((integer() >= 0) -> boolean())
Converts the Erlang data structure Data into an abstract form of type AbsTerm.
Each node of AbsTerm is assigned an annotation, see erl_anno(3erl). The annotation contains the
location given by option location or by option line. Option location overrides option line. If
neither option location nor option line is given, 0 is used as location.
Option Encoding is used for selecting which integer lists to be considered as strings. The default
is to use the encoding returned by function epp:default_encoding/0. Value none means that no
integer lists are considered as strings. encoding_func() is called with one integer of a list at a
time; if it returns true for every integer, the list is considered a string.
anno_from_term(Term)->erl_parse_tree()|form_info()
Types:
Term = term()
Assumes that Term is a term with the same structure as a erl_parse tree, but with terms, say T,
where a erl_parse tree has collections of annotations. Returns a erl_parse tree where each term T
is replaced by the value returned by erl_anno:from_term(T). The term Term is traversed in a depth-
first, left-to-right fashion.
anno_to_term(Abstr)->term()
Types:
Abstr = erl_parse_tree() | form_info()
Returns a term where each collection of annotations Anno of the nodes of the erl_parse tree Abstr
is replaced by the term returned by erl_anno:to_term(Anno). The erl_parse tree is traversed in a
depth-first, left-to-right fashion.
fold_anno(Fun,Acc0,Abstr)->Acc1
Types:
Fun = fun((Anno, AccIn) -> AccOut)
Anno = erl_anno:anno()
Acc0 = Acc1 = AccIn = AccOut = term()
Abstr = erl_parse_tree() | form_info()
Updates an accumulator by applying Fun on each collection of annotations of the erl_parse tree
Abstr. The first call to Fun has AccIn as argument, the returned accumulator AccOut is passed to
the next call, and so on. The final value of the accumulator is returned. The erl_parse tree is
traversed in a depth-first, left-to-right fashion.
format_error(ErrorDescriptor)->Chars
Types:
ErrorDescriptor = error_description()
Chars = [char() | Chars]
Uses an ErrorDescriptor and returns a string that describes the error. This function is usually
called implicitly when an ErrorInfo structure is processed (see section Error Information).
map_anno(Fun,Abstr)->NewAbstr
Types:
Fun = fun((Anno) -> NewAnno)
Anno = NewAnno = erl_anno:anno()
Abstr = NewAbstr = erl_parse_tree() | form_info()
Modifies the erl_parse tree Abstr by applying Fun on each collection of annotations of the nodes
of the erl_parse tree. The erl_parse tree is traversed in a depth-first, left-to-right fashion.
mapfold_anno(Fun,Acc0,Abstr)->{NewAbstr,Acc1}
Types:
Fun = fun((Anno, AccIn) -> {NewAnno, AccOut})
Anno = NewAnno = erl_anno:anno()
Acc0 = Acc1 = AccIn = AccOut = term()
Abstr = NewAbstr = erl_parse_tree() | form_info()
Modifies the erl_parse tree Abstr by applying Fun on each collection of annotations of the nodes
of the erl_parse tree, while at the same time updating an accumulator. The first call to Fun has
AccIn as second argument, the returned accumulator AccOut is passed to the next call, and so on.
The modified erl_parse tree and the final value of the accumulator are returned. The erl_parse
tree is traversed in a depth-first, left-to-right fashion.
new_anno(Term)->Abstr
Types:
Term = term()
Abstr = erl_parse_tree() | form_info()
Assumes that Term is a term with the same structure as a erl_parse tree, but with locations where
a erl_parse tree has collections of annotations. Returns a erl_parse tree where each location L is
replaced by the value returned by erl_anno:new(L). The term Term is traversed in a depth-first,
left-to-right fashion.
normalise(AbsTerm)->Data
Types:
AbsTerm = abstract_expr()
Data = term()
Converts the abstract form AbsTerm of a term into a conventional Erlang data structure (that is,
the term itself). This function is the inverse of abstract/1.
parse_exprs(Tokens)->{ok,ExprList}|{error,ErrorInfo}
Types:
Tokens = [token()]
ExprList = [abstract_expr()]
ErrorInfo = error_info()
Parses Tokens as if it was a list of expressions. Returns one of the following:
{ok,ExprList}:
The parsing was successful. ExprList is a list of the abstract forms of the parsed
expressions.
{error,ErrorInfo}:
An error occurred.
parse_form(Tokens)->{ok,AbsForm}|{error,ErrorInfo}
Types:
Tokens = [token()]
AbsForm = abstract_form()
ErrorInfo = error_info()
Parses Tokens as if it was a form. Returns one of the following:
{ok,AbsForm}:
The parsing was successful. AbsForm is the abstract form of the parsed form.
{error,ErrorInfo}:
An error occurred.
parse_term(Tokens)->{ok,Term}|{error,ErrorInfo}
Types:
Tokens = [token()]
Term = term()
ErrorInfo = error_info()
Parses Tokens as if it was a term. Returns one of the following:
{ok,Term}:
The parsing was successful. Term is the Erlang term corresponding to the token list.
{error,ErrorInfo}:
An error occurred.
tokens(AbsTerm)->Tokenstokens(AbsTerm,MoreTokens)->Tokens
Types:
AbsTerm = abstract_expr()
MoreTokens = Tokens = [token()]
Generates a list of tokens representing the abstract form AbsTerm of an expression. Optionally,
MoreTokens is appended.