Go to main content

man pages section 3: Extended Library Functions, Volume 1

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

epp_dodger (3erl)

Name

epp_dodger - bypasses the Erlang preprocessor.

Synopsis

Please see following description for synopsis

Description

epp_dodger(3)              Erlang Module Definition              epp_dodger(3)



NAME
       epp_dodger - epp_dodger - bypasses the Erlang preprocessor.

DESCRIPTION
       epp_dodger - bypasses the Erlang preprocessor.

       This  module  tokenises  and  parses  most  Erlang  source code without
       expanding preprocessor directives and macro applications,  as  long  as
       these  are syntactically "well-behaved". Because the normal parse trees
       of the erl_parse module cannot represent these things  (normally,  they
       are  expanded  by the Erlang preprocessor epp(3) before the parser sees
       them), an extended syntax tree is created, using the erl_syntax module.

DATA TYPES
         errorinfo() = erl_scan:error_info():


         option() = atom() | {atom(), term()}:


EXPORTS
       parse(Dev::file:io_device()) -> {ok, erl_syntax:forms()}

              Equivalent to parse(IODevice, 1).

       parse(Dev::file:io_device(), L::erl_anno:location()) ->  {ok,  erl_syn-
       tax:forms()}

              Equivalent to parse(IODevice, StartLocation, []).

              See also: parse/1.

       parse(Dev::file:io_device(),                   L0::erl_anno:location(),
       Options::[option()]) -> {ok, erl_syntax:forms()}

              Reads and parses program text from an I/O stream. Characters are
              read  from  IODevice until end-of-file; apart from this, the be-
              haviour is the same as for parse_file/2.  StartLocation  is  the
              initial location.

              See also: parse/2, parse_file/2, parse_form/2, quick_parse/3.

       parse_file(File::file:filename()) -> {ok, erl_syntax:forms()} | {error,
       errorinfo()}

              Equivalent to parse_file(File, []).

       parse_file(File::file:filename(), Options::[option()]) -> {ok, erl_syn-
       tax:forms()} | {error, errorinfo()}

              Reads and parses a file. If successful, {ok, Forms} is returned,
              where Forms is a list of abstract syntax trees representing  the
              "program  forms"  of the file (cf. erl_syntax:is_form/1). Other-
              wise, {error, errorinfo()} is returned, typically  if  the  file
              could  not  be  opened.  Note that parse errors show up as error
              markers in the returned list of forms; they do  not  cause  this
              function to fail or return {error, errorinfo()}.

              Options:

                {no_fail, boolean()}:
                  If  true,  this  makes  epp_dodger replace any program forms
                  that could not be  parsed  with  nodes  of  type  text  (see
                  erl_syntax:text/1),  representing  the raw token sequence of
                  the form, instead of reporting a parse  error.  The  default
                  value is false.

                {clever, boolean()}:
                  If  set  to  true,  this  makes epp_dodger try to repair the
                  source code as it seems fit, in certain cases where  parsing
                  would  otherwise  fail.  Currently,  it inserts ++-operators
                  between string literals and macros where it looks like  con-
                  catenation was intended. The default value is false.

              See also: parse/2, quick_parse_file/1, erl_syntax:is_form/1.

       parse_form(Dev::file:io_device(),   L0::erl_anno:location())   ->  {ok,
       erl_syntax:forms(), erl_anno:location()} | {eof, erl_anno:location()} |
       {error, errorinfo(), erl_anno:location()}

              Equivalent to parse_form(IODevice, StartLocation, []).

              See also: quick_parse_form/2.

       parse_form(Dev::file:io_device(),              L0::erl_anno:location(),
       Options::[option()]) -> {ok, erl_syntax:forms(), erl_anno:location()} |
       {eof, erl_anno:location()} | {error, errorinfo(), erl_anno:location()}

              Reads and parses a single program form from an I/O stream. Char-
              acters are read from IODevice until  an  end-of-form  marker  is
              found (a period character followed by whitespace), or until end-
              of-file; apart from this, the behaviour is similar  to  that  of
              parse/3,  except  that  the return values also contain the final
              location given that StartLocation is the initial  location,  and
              that {eof, Location} may be returned.

              See also: parse/3, parse_form/2, quick_parse_form/3.

       quick_parse(Dev::file:io_device()) -> {ok, erl_syntax:forms()}

              Equivalent to quick_parse(IODevice, 1).

       quick_parse(Dev::file:io_device(),   L::erl_anno:location())   ->  {ok,
       erl_syntax:forms()}

              Equivalent to quick_parse(IODevice, StartLocation, []).

              See also: quick_parse/1.

       quick_parse(Dev::file:io_device(),             L0::erl_anno:location(),
       Options::[option()]) -> {ok, erl_syntax:forms()}

              Similar  to  parse/3, but does a more quick-and-dirty processing
              of the code. See quick_parse_file/2 for details.

              See   also:    parse/3,    quick_parse/2,    quick_parse_file/2,
              quick_parse_form/2.

       quick_parse_file(File::file:filename())  ->  {ok, erl_syntax:forms()} |
       {error, errorinfo()}

              Equivalent to quick_parse_file(File, []).

       quick_parse_file(File::file:filename(),  Options::[option()])  ->  {ok,
       erl_syntax:forms()} | {error, errorinfo()}

              Similar  to  parse_file/2,  but does a more quick-and-dirty pro-
              cessing of the code. Macro definitions  and  other  preprocessor
              directives  are discarded, and all macro calls are replaced with
              atoms. This is useful when only the main structure of  the  code
              is  of  interest,  and  not the details. Furthermore, the quick-
              parse method can usually handle more strange cases than the nor-
              mal, more exact parsing.

              Options:    see    parse_file/2.    Note    however   that   for
              quick_parse_file/2, the option no_fail is true by default.

              See also: parse_file/2, quick_parse/2.

       quick_parse_form(Dev::file:io_device(),   L0::erl_anno:location())   ->
       {ok,  erl_syntax:forms(),  erl_anno:location()}  | {eof, erl_anno:loca-
       tion()} | {error, errorinfo(), erl_anno:location()}

              Equivalent to quick_parse_form(IODevice, StartLocation, []).

              See also: parse_form/2.

       quick_parse_form(Dev::file:io_device(),        L0::erl_anno:location(),
       Options::[option()]) -> {ok, erl_syntax:forms(), erl_anno:location()} |
       {eof, erl_anno:location()} | {error, errorinfo(), erl_anno:location()}

              Similar to parse_form/3, but does a  more  quick-and-dirty  pro-
              cessing of the code. See quick_parse_file/2 for details.

              See also: parse/3, parse_form/3, quick_parse_form/2.

       tokens_to_string(Ts::[term()]) -> string()

              Generates  a  string  corresponding to the given token sequence.
              The string can be re-tokenized to  yield  the  same  token  list
              again.

AUTHORS
       Richard Carlsson <carlsson.richard@gmail.com>



                               syntax_tools 2.6                  epp_dodger(3)