erl_parse(3)



erl_parse(3erl)            Erlang Module Definition            erl_parse(3erl)

NAME
       erl_parse - The Erlang parser.

DESCRIPTION
       This  module  is  the basic Erlang parser that converts tokens into the
       abstract form of either forms (that is, top-level constructs),  expres-
       sions,  or  terms.  The Abstract Format is described in the ERTS User's
       Guide. Notice that a token list must end with the dot token to  be  ac-
       ceptable to the parse functions (see the erl_scan(3erl)) module.

DATA TYPES
       abstract_clause()

              Abstract form of an Erlang clause.

       abstract_expr()

              Abstract form of an Erlang expression.

       abstract_form()

              Abstract form of an Erlang form.

       abstract_type()

              Abstract form of an Erlang type.

       erl_parse_tree() =
           abstract_clause() |
           abstract_expr() |
           abstract_form() |
           abstract_type()

       af_binelement(_)

              Abstract representation of an element of a bitstring.

       af_field_decl()

              Abstract representation of a record field.

       af_generator()

              Abstract representation of a generator or a bitstring generator.

       af_remote_function()>

              Abstract representation of a remote function call.

       error_description() = term()

       error_info() = {erl_anno:line(), module(), error_description()}

       form_info() =
           {eof, erl_anno:line()} |
           {error, erl_scan:error_info() | error_info()} |
           {warning, erl_scan:error_info() | error_info()}

              Tuples {error, error_info()} and {warning, error_info()}, denot-
              ing  syntactically  incorrect  forms  and  warnings,  and  {eof,
              line()}, denoting an end-of-stream encountered before a complete
              form had been parsed.

       token() = erl_scan:token()

EXPORTS
       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 = Line | [Option]
                 Option = {line, Line} | {encoding, Encoding}
                 Encoding = latin1 | unicode | utf8 | none | encoding_func()
                 Line = erl_anno:line()
                 AbsTerm = abstract_expr()
                 encoding_func() = fun((integer() >= 0) -> boolean())

              Converts the Erlang data structure Data into an abstract form of
              type AbsTerm.

              Option Line is the line to be assigned to each node of AbsTerm.

              Option Encoding is used for selecting which integer lists to  be
              considered  as  strings.  The default is to use the encoding re-
              turned 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 re-
              turned by erl_anno:to_term(Anno). The  erl_parse  tree  is  tra-
              versed 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 an-
              notations 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 Error-
              Info 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  col-
              lection  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 col-
              lection 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 fash-
              ion.

       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  ab-
                  stract 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  corre-
                  sponding to the token list.

                {error, ErrorInfo}:
                  An error occurred.

       tokens(AbsTerm) -> Tokens

       tokens(AbsTerm, MoreTokens) -> Tokens

              Types:

                 AbsTerm = abstract_expr()
                 MoreTokens = Tokens = [token()]

              Generates  a  list  of tokens representing the abstract form Ab-
              sTerm of an expression. Optionally, MoreTokens is appended.

ERROR INFORMATION
       ErrorInfo is the standard ErrorInfo structure that is returned from all
       I/O modules. The format is as follows:

       {ErrorLine, Module, ErrorDescriptor}

       A string describing the error is obtained with the following call:

       Module:format_error(ErrorDescriptor)

SEE ALSO
       erl_anno(3erl),  erl_scan(3erl),  io(3erl), section The Abstract Format
       in the ERTS User's Guide

Ericsson AB                       stdlib 3.13                  erl_parse(3erl)

Man(1) output converted with man2html
list of all man pages