epp
EPP
模块
EPP
模块摘要
一个Erlang代码预处理程序。
描述
Erlang代码预处理程序包含由compile
模块,用于在解析之前对宏进行预处理并包含文件。
Erlang源文件编码
由源文件的三行中的注释选择。匹配正则表达式的第一个字符串。coding\s*[:=]\s*([-a-zA-Z0-9])+
选择编码
。如果匹配的字符串不是有效的编码
,则忽略它。有效编码
是Latin-1
和UTF-8
,可以自由选择字符的情况。
例子:
%% coding: utf-8
%% For this file we have chosen encoding = Latin-1
%% -*- coding: latin-1 -*-
数据类型
macros() = [atom() | {atom(), term()}]
epp_handle() = pid()
处理到epp
服务器。
source_encoding() = latin1 | utf8
输出
close(Epp) -> ok
类型
关闭文件的预处理。
default_encoding() -> source_encoding()
返回Erlang源文件的默认编码。
encoding_to_string(Encoding) -> string()
类型
返回编码的字符串表示形式。该字符串被认可read_encoding/1,2
,read_encoding_from_binary/1,2
以及set_encoding/1,2
为有效编码。
format_error(ErrorDescriptor) -> io_lib:chars()
类型
接收ErrorDescriptor
并返回描述错误或警告的字符串。这个函数通常在处理ErrorInfo
结构时被隐式调用(参见章节Error Information
)。
open(Options) ->
{ok, Epp} | {ok, Epp, Extra} | {error, ErrorDescriptor}
类型
打开一个文件进行预处理。
如果extra
在中指定Options
,则返回值{ok, Epp, Extra}
不是{ok, Epp}
。
open(FileName, IncludePath) ->
{ok,Epp}{Error Descriptor}
类型
相当于epp:open([{name, FileName}, {includes, IncludePath}])
...
open(FileName, IncludePath, PredefMacros) ->
{ok,Epp}{Error Descriptor}
类型
相当于epp:open([{name, FileName}, {includes, IncludePath}, {macros, PredefMacros}])
...
parse_erl_form(Epp) ->
{OK,AbsForm}
{Error,ErrorInfo}
{warning, WarningInfo} |
{eof,line}
类型
从打开的Erlang源文件返回下一个Erlang表单。 元组{eof,Line}在文件结尾处返回。 第一种形式对应于隐式属性-file(File,1)。,其中File是文件名。
parse_file(FileName, Options) ->
{ok, Form} |
{ok, Form, Extra} |
{error, OpenError}
类型
预处理和分析Erlang源文件。请注意,{eof, Line}
在文件末尾返回的元组作为“表单”包含在内。
如果extra
在中指定Options
,则返回值{ok, [Form], Extra}
不是{ok, [Form]}
。
parse_file(FileName, IncludePath, PredefMacros) ->
{ok, Form} | {error, OpenError}
类型
相当于epp:parse_file(FileName, [{includes, IncludePath}, {macros, PredefMacros}])
。
read_encoding(FileName) -> source_encoding() | none
read_encoding(FileName, Options) -> source_encoding() | none
类型
阅读encoding
文件。返回读取的编码,或者返回none(
如果找不到有效的编码)。
选项in_comment_only默认为true,这对于Erlang源文件是正确的。 如果设置为false,则编码字符串不一定必须在注释中出现。
read_encoding_from_binary(Binary) -> source_encoding() | none
read_encoding_from_binary(Binary, Options) ->
source_encoding()
| none
类型
阅读encoding
二进制文件。返回读取的编码,或者none
如果找不到有效的编码。
选项in_comment_only默认为true,这对于Erlang源文件是正确的。 如果设置为false,则编码字符串不一定必须在注释中出现。
set_encoding(File) -> source_encoding() | none
类型
encoding
从I / O设备读取并相应地设置设备的编码。引用的I / O设备的位置File
不受影响。如果不能从I / O设备读取有效的编码,则I / O设备的编码设置为默认编码。
返回读取的编码,如果没有找到有效的编码,则返回none。
类型
encoding
从I / O设备读取并相应地设置设备的编码。引用的I / O设备的位置File
不受影响。如果不能从I / O设备读取有效的编码,则I / O设备的编码设置encoding
为由指定的编码Default
。
返回读取的编码,如果没有找到有效的编码,则返回none。
错误信息
ErrorInfo
是标准ErrorInfo
结构,从所有I/O模块返回。格式如下:
{ErrorLine, Module, ErrorDescriptor}
通过以下调用获得一个描述错误的字符串:
Module:format_error(ErrorDescriptor)
另见
erl_parse(3)