User's Guide
Reference Manual
Release Notes
PDF
Top

STDLIB
Reference Manual
Version 1.18.2

Expand All
Contract All

Table of Contents

# 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.

### DATA TYPES

macros() = [{atom(), term()}]

epp_handle() = pid()

Handle to the epp server.

### EXPORTS

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

Types:

FileName = file:name()
IncludePath = [DirectoryName :: file:name()]
PredefMacros = macros()
Epp = epp_handle()
ErrorDescriptor = term()

Opens a file for preprocessing.

close(Epp) -> ok

Types:

Epp = epp_handle()

Closes the preprocessing of a file.

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

Types:

Epp = epp_handle()
AbsForm = erl_parse:abstract_form()
Line = erl_scan:line()
ErrorInfo = erl_scan:error_info() | erl_parse:error_info()

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, PredefMacros) ->
{ok, [Form]} | {error, OpenError}

Types:

FileName = file:name()
IncludePath = [DirectoryName :: file:name()]
Form = erl_parse:abstract_form()
| {error, ErrorInfo}
| {eof, Line}
PredefMacros = macros()
Line = erl_scan:line()
ErrorInfo = erl_scan:error_info() | erl_parse:error_info()
OpenError = file:posix() | badarg | system_limit

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

format_error(ErrorDescriptor) -> io_lib:chars()

Types:

ErrorDescriptor = term()

Takes an ErrorDescriptor and returns a string which describes the error or warning. This function is usually called implicitly when processing an ErrorInfo structure (see below).

### 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:

        Module:format_error(ErrorDescriptor)

### See Also

erl_parse(3)