# epp

### MODULE

epp

### MODULE SUMMARY

An Erlang Code Preprocessor

### DESCRIPTION

The Erlang code preprocessor includes functions which are used by `compile` to preprocess macros and include files before the actual parsing takes place.

### EXPORTS

`open(FileName, IncludePath) -> {ok,Epp} | {error, ErrorDescriptor}`
`open(FileName, IncludePath, PredefMacros) -> {ok,Epp} | {error, ErrorDescriptor}`

Types:

`FileName = atom() | string()`
`IncludePath = [DirectoryName]`
`DirectoryName = atom() | string()`
`PredefMacros = [{atom(),term()}]`
`Epp = pid() -- handle to the epp server`
`ErrorDescriptor = term()`

Opens a file for preprocessing.

`close(Epp) -> ok`

Types:

`Epp = pid() -- handle to the epp server`

Closes the preprocessing of a file.

`parse_erl_form(Epp) -> {ok, AbsForm} | {eof, Line} | {error, ErrorInfo}`

Types:

`Epp = pid()`
`AbsForm = term()`
`Line = integer()`
`ErrorInfo = see separate description below.`

Returns the next Erlang form from the opened Erlang source file. The tuple `{eof, Line}` is returned at end-of-file. The first form corresponds to an implicit attribute `-file(File,1).`, where `File` is the name of the file.

`parse_file(FileName,IncludePath,PredefMacro) -> {ok,[Form]} | {error,OpenError}`

Types:

`FileName = atom() | string()`
`IncludePath = [DirectoryName]`
`DirectoryName = atom() | string()`
`PredefMacros = [{atom(),term()}]`
`Form = term() -- same as returned by erl_parse:parse_form`

Preprocesses and parses an Erlang source file. Note that the tuple `{eof, Line}` returned at end-of-file is included as a "form".

### Error Information

The `ErrorInfo` mentioned above is the standard `ErrorInfo` structure which is returned from all IO modules. It has the following format:

        {ErrorLine, Module, ErrorDescriptor}

A string which describes the error is obtained with the following call:

    apply(Module, format_error, ErrorDescriptor)

### See Also

erl_parse(3)

### AUTHORS

Robert Virding - support@erlang.ericsson.se

stdlib 1.14.3
Copyright © 1991-2007 Ericsson AB