Erlang -- erl_parse

User's Guide
Reference Manual
Release Notes
PDF
Top

STDLIB
Reference Manual
Version 1.17.3

Expand All
Contract All

Table of Contents

- STDLIB (App)
- array
  - Top of manual page
  - default/1
  - fix/1
  - foldl/3
  - foldr/3
  - from_list/1
  - from_list/2
  - from_orddict/1
  - from_orddict/2
  - get/2
  - is_array/1
  - is_fix/1
  - map/2
  - new/0
  - new/1
  - new/2
  - relax/1
  - reset/2
  - resize/1
  - resize/2
  - set/3
  - size/1
  - sparse_foldl/3
  - sparse_foldr/3
  - sparse_map/2
  - sparse_size/1
  - sparse_to_list/1
  - sparse_to_orddict/1
  - to_list/1
  - to_orddict/1
- base64
  - Top of manual page
  - encode/1
  - encode_to_string/1
  - decode/1
  - decode_to_string/1
  - mime_decode/1
  - mime_decode_to_string/1
- beam_lib
  - Top of manual page
  - chunks/2
  - chunks/3
  - version/1
  - md5/1
  - info/1
  - cmp/2
  - cmp_dirs/2
  - diff_dirs/2
  - strip/1
  - strip_files/1
  - strip_release/1
  - format_error/1
  - crypto_key_fun/1
  - clear_crypto_key_fun/0
- binary
  - Top of manual page
  - at/2
  - bin_to_list/1
  - bin_to_list/2
  - bin_to_list/3
  - compile_pattern/1
  - copy/1
  - copy/2
  - decode_unsigned/1
  - decode_unsigned/2
  - encode_unsigned/1
  - encode_unsigned/2
  - first/1
  - last/1
  - list_to_bin/1
  - longest_common_prefix/1
  - longest_common_suffix/1
  - match/2
  - match/3
  - matches/2
  - matches/3
  - part/2
  - part/3
  - referenced_byte_size/1
  - replace/3
  - replace/4
  - split/2
  - split/3
- c
  - Top of manual page
  - bt/1
  - c/1
  - c/2
  - cd/1
  - flush/0
  - help/0
  - i/0
  - ni/0
  - i/3
  - l/1
  - lc/1
  - ls/0
  - ls/1
  - m/0
  - m/1
  - memory/0
  - memory/1
  - memory/1
  - nc/1
  - nc/2
  - nl/1
  - pid/3
  - pwd/0
  - q/0
  - regs/0
  - nregs/0
  - xm/1
  - y/1
  - y/2
- calendar
  - Top of manual page
  - date_to_gregorian_days/1
  - date_to_gregorian_days/3
  - datetime_to_gregorian_seconds/1
  - day_of_the_week/1
  - day_of_the_week/3
  - gregorian_days_to_date/1
  - gregorian_seconds_to_datetime/1
  - is_leap_year/1
  - iso_week_number/0
  - iso_week_number/1
  - last_day_of_the_month/2
  - local_time/0
  - local_time_to_universal_time/1
  - local_time_to_universal_time_dst/1
  - now_to_local_time/1
  - now_to_universal_time/1
  - now_to_datetime/1
  - seconds_to_daystime/1
  - seconds_to_time/1
  - time_difference/2
  - time_to_seconds/1
  - universal_time/0
  - universal_time_to_local_time/1
  - valid_date/1
  - valid_date/3
- dets
  - Top of manual page
  - all/0
  - bchunk/2
  - close/1
  - delete/2
  - delete_all_objects/1
  - delete_object/2
  - first/1
  - foldl/3
  - foldr/3
  - from_ets/2
  - info/1
  - info/2
  - init_table/2
  - insert/2
  - insert_new/2
  - is_compatible_bchunk_format/2
  - is_dets_file/1
  - lookup/2
  - match/1
  - match/2
  - match/3
  - match_delete/2
  - match_object/1
  - match_object/2
  - match_object/3
  - member/2
  - next/2
  - open_file/1
  - open_file/2
  - pid2name/1
  - repair_continuation/2
  - safe_fixtable/2
  - select/1
  - select/2
  - select/3
  - select_delete/2
  - slot/2
  - sync/1
  - table/1
  - to_ets/2
  - traverse/2
  - update_counter/3
- dict
  - Top of manual page
  - append/3
  - append_list/3
  - erase/2
  - fetch/2
  - fetch_keys/1
  - filter/2
  - find/2
  - fold/3
  - from_list/1
  - is_key/2
  - map/2
  - merge/3
  - new/0
  - size/1
  - store/3
  - to_list/1
  - update/3
  - update/4
  - update_counter/3
- digraph
  - Top of manual page
  - add_edge/5
  - add_edge/4
  - add_edge/3
  - add_vertex/3
  - add_vertex/2
  - add_vertex/1
  - del_edge/2
  - del_edges/2
  - del_path/3
  - del_vertex/2
  - del_vertices/2
  - delete/1
  - edge/2
  - edges/1
  - edges/2
  - get_cycle/2
  - get_path/3
  - get_short_cycle/2
  - get_short_path/3
  - in_degree/2
  - in_edges/2
  - in_neighbours/2
  - info/1
  - new/0
  - new/1
  - no_edges/1
  - no_vertices/1
  - out_degree/2
  - out_edges/2
  - out_neighbours/2
  - vertex/2
  - vertices/1
- digraph_utils
  - Top of manual page
  - arborescence_root/1
  - components/1
  - condensation/1
  - cyclic_strong_components/1
  - is_acyclic/1
  - is_arborescence/1
  - is_tree/1
  - loop_vertices/1
  - postorder/1
  - preorder/1
  - reachable/2
  - reachable_neighbours/2
  - reaching/2
  - reaching_neighbours/2
  - strong_components/1
  - subgraph/2
  - topsort/1
- epp
  - Top of manual page
  - open/2
  - open/3
  - close/1
  - parse_erl_form/1
  - parse_file/3
- erl_eval
  - Top of manual page
  - exprs/2
  - exprs/3
  - exprs/4
  - expr/2
  - expr/3
  - expr/4
  - expr/5
  - expr_list/2
  - expr_list/3
  - expr_list/4
  - new_bindings/0
  - bindings/1
  - binding/2
  - add_binding/3
  - del_binding/2
- erl_expand_records
  - Top of manual page
  - module/2
- erl_id_trans
  - Top of manual page
  - parse_transform/2
- erl_internal
  - Top of manual page
  - bif/2
  - guard_bif/2
  - type_test/2
  - arith_op/2
  - bool_op/2
  - comp_op/2
  - list_op/2
  - send_op/2
  - op_type/2
- erl_lint
  - Top of manual page
  - module/1
  - module/2
  - module/3
  - is_guard_test/1
  - format_error/1
- erl_parse
  - Top of manual page
  - parse_form/1
  - parse_exprs/1
  - parse_term/1
  - format_error/1
  - tokens/1
  - tokens/2
  - normalise/1
  - abstract/1
- erl_pp
  - Top of manual page
  - form/1
  - form/2
  - attribute/1
  - attribute/2
  - function/1
  - function/2
  - guard/1
  - guard/2
  - exprs/1
  - exprs/2
  - exprs/3
  - expr/1
  - expr/2
  - expr/3
  - expr/4
- erl_scan
  - Top of manual page
  - string/1
  - string/2
  - string/3
  - tokens/3
  - tokens/4
  - reserved_word/1
  - token_info/1
  - token_info/2
  - attributes_info/1
  - attributes_info/2
  - set_attribute/3
  - format_error/1
- erl_tar
  - Top of manual page
  - add/3
  - add/4
  - close/1
  - create/2
  - create/3
  - extract/1
  - extract/2
  - format_error/1
  - open/2
  - table/1
  - table/2
  - t/1
  - tt/1
- ets
  - Top of manual page
  - all/0
  - delete/1
  - delete/2
  - delete_all_objects/1
  - delete_object/2
  - file2tab/1
  - file2tab/2
  - first/1
  - foldl/3
  - foldr/3
  - from_dets/2
  - fun2ms/1
  - give_away/3
  - i/0
  - i/1
  - info/1
  - info/2
  - init_table/2
  - insert/2
  - insert_new/2
  - is_compiled_ms/1
  - last/1
  - lookup/2
  - lookup_element/3
  - match/2
  - match/3
  - match/1
  - match_delete/2
  - match_object/2
  - match_object/3
  - match_object/1
  - match_spec_compile/1
  - match_spec_run/2
  - member/2
  - new/2
  - next/2
  - prev/2
  - rename/2
  - repair_continuation/2
  - safe_fixtable/2
  - select/2
  - select/3
  - select/1
  - select_count/2
  - select_delete/2
  - select_reverse/2
  - select_reverse/3
  - select_reverse/1
  - setopts/2
  - slot/2
  - tab2file/2
  - tab2file/3
  - tab2list/1
  - tabfile_info/1
  - table/1
  - test_ms/2
  - to_dets/2
  - update_counter/3
  - update_counter/3
  - update_counter/3
  - update_element/3
  - update_element/3
- file_sorter
  - Top of manual page
  - sort/1
  - sort/2
  - sort/3
  - keysort/2
  - keysort/3
  - keysort/4
  - merge/2
  - merge/3
  - keymerge/3
  - keymerge/4
  - check/1
  - check/2
  - keycheck/2
  - keycheck/3
- filelib
  - Top of manual page
  - ensure_dir/1
  - file_size/1
  - fold_files/5
  - is_dir/1
  - is_file/1
  - is_regular/1
  - last_modified/1
  - wildcard/1
  - wildcard/2
- filename
  - Top of manual page
  - absname/1
  - absname/2
  - absname_join/2
  - basename/1
  - basename/2
  - dirname/1
  - extension/1
  - flatten/1
  - join/1
  - join/2
  - nativename/1
  - pathtype/1
  - rootname/1
  - rootname/2
  - split/1
  - find_src/1
  - find_src/2
- gb_sets
  - Top of manual page
  - add/2
  - add_element/2
  - balance/1
  - delete/2
  - delete_any/2
  - del_element/2
  - difference/2
  - subtract/2
  - empty/0
  - new/0
  - filter/2
  - fold/3
  - from_list/1
  - from_ordset/1
  - insert/2
  - intersection/2
  - intersection/1
  - is_disjoint/2
  - is_empty/1
  - is_member/2
  - is_element/2
  - is_set/1
  - is_subset/2
  - iterator/1
  - largest/1
  - next/1
  - singleton/1
  - size/1
  - smallest/1
  - take_largest/1
  - take_smallest/1
  - to_list/1
  - union/2
  - union/1
- gb_trees
  - Top of manual page
  - balance/1
  - delete/2
  - delete_any/2
  - empty/0
  - enter/3
  - from_orddict/1
  - get/2
  - lookup/2
  - insert/3
  - is_defined/2
  - is_empty/1
  - iterator/1
  - keys/1
  - largest/1
  - map/2
  - next/1
  - size/1
  - smallest/1
  - take_largest/1
  - take_smallest/1
  - to_list/1
  - update/3
  - values/1
- gen_event
  - Top of manual page
  - start_link/0
  - start_link/1
  - start/0
  - start/1
  - add_handler/3
  - add_sup_handler/3
  - notify/2
  - sync_notify/2
  - call/3
  - call/4
  - delete_handler/3
  - swap_handler/3
  - swap_sup_handler/3
  - which_handlers/1
  - stop/1
  - Module:init/1
  - Module:handle_event/2
  - Module:handle_call/2
  - Module:handle_info/2
  - Module:terminate/2
  - Module:code_change/3
  - Module:format_status/2
- gen_fsm
  - Top of manual page
  - start_link/3
  - start_link/4
  - start/3
  - start/4
  - send_event/2
  - send_all_state_event/2
  - sync_send_event/2
  - sync_send_event/3
  - sync_send_all_state_event/2
  - sync_send_all_state_event/3
  - reply/2
  - send_event_after/2
  - start_timer/2
  - cancel_timer/1
  - enter_loop/4
  - enter_loop/5
  - enter_loop/5
  - enter_loop/6
  - Module:init/1
  - Module:StateName/2
  - Module:handle_event/3
  - Module:StateName/3
  - Module:handle_sync_event/4
  - Module:handle_info/3
  - Module:terminate/3
  - Module:code_change/4
  - Module:format_status/2
- gen_server
  - Top of manual page
  - start_link/3
  - start_link/4
  - start/3
  - start/4
  - call/2
  - call/3
  - multi_call/2
  - multi_call/3
  - multi_call/4
  - cast/2
  - abcast/2
  - abcast/3
  - reply/2
  - enter_loop/3
  - enter_loop/4
  - enter_loop/4
  - enter_loop/5
  - Module:init/1
  - Module:handle_call/3
  - Module:handle_cast/2
  - Module:handle_info/2
  - Module:terminate/2
  - Module:code_change/3
  - Module:format_status/2
- io
  - Top of manual page
  - columns/0
  - columns/1
  - put_chars/1
  - put_chars/2
  - nl/0
  - nl/1
  - get_chars/2
  - get_chars/3
  - get_line/1
  - get_line/2
  - getopts/0
  - getopts/1
  - setopts/1
  - setopts/2
  - write/1
  - write/2
  - read/1
  - read/2
  - read/3
  - fwrite/1
  - fwrite/2
  - fwrite/3
  - format/1
  - format/2
  - format/3
  - fread/2
  - fread/3
  - rows/0
  - rows/1
  - scan_erl_exprs/1
  - scan_erl_exprs/2
  - scan_erl_exprs/3
  - scan_erl_form/1
  - scan_erl_form/2
  - scan_erl_form/3
  - parse_erl_exprs/1
  - parse_erl_exprs/2
  - parse_erl_exprs/3
  - parse_erl_form/1
  - parse_erl_form/2
  - parse_erl_form/3
- io_lib
  - Top of manual page
  - nl/0
  - write/1
  - write/2
  - print/1
  - print/4
  - fwrite/2
  - format/2
  - fread/2
  - fread/3
  - write_atom/1
  - write_string/1
  - write_char/1
  - indentation/2
  - char_list/1
  - deep_char_list/1
  - printable_list/1
- lib
  - Top of manual page
  - flush_receive/0
  - error_message/2
  - progname/0
  - nonl/1
  - send/2
  - sendw/2
- lists
  - Top of manual page
  - all/2
  - any/2
  - append/1
  - append/2
  - concat/1
  - delete/2
  - dropwhile/2
  - duplicate/2
  - filter/2
  - flatlength/1
  - flatmap/2
  - flatten/1
  - flatten/2
  - foldl/3
  - foldr/3
  - foreach/2
  - keydelete/3
  - keyfind/3
  - keymap/3
  - keymember/3
  - keymerge/3
  - keyreplace/4
  - keysearch/3
  - keysort/2
  - keystore/4
  - keytake/3
  - last/1
  - map/2
  - mapfoldl/3
  - mapfoldr/3
  - max/1
  - member/2
  - merge/1
  - merge/2
  - merge/3
  - merge3/3
  - min/1
  - nth/2
  - nthtail/2
  - partition/2
  - prefix/2
  - reverse/1
  - reverse/2
  - seq/2
  - seq/3
  - sort/1
  - sort/2
  - split/2
  - splitwith/2
  - sublist/2
  - sublist/3
  - subtract/2
  - suffix/2
  - sum/1
  - takewhile/2
  - ukeymerge/3
  - ukeysort/2
  - umerge/1
  - umerge/2
  - umerge/3
  - umerge3/3
  - unzip/1
  - unzip3/1
  - usort/1
  - usort/2
  - zip/2
  - zip3/3
  - zipwith/3
  - zipwith3/4
- log_mf_h
  - Top of manual page
  - init/3
  - init/4
- math
  - Top of manual page
  - pi/0
  - sin/1
  - cos/1
  - tan/1
  - asin/1
  - acos/1
  - atan/1
  - atan2/2
  - sinh/1
  - cosh/1
  - tanh/1
  - asinh/1
  - acosh/1
  - atanh/1
  - exp/1
  - log/1
  - log10/1
  - pow/2
  - sqrt/1
  - erf/1
  - erfc/1
- ms_transform
  - Top of manual page
  - parse_transform/2
  - transform_from_shell/3
  - format_error/1
- orddict
  - Top of manual page
  - append/3
  - append_list/3
  - erase/2
  - fetch/2
  - fetch_keys/1
  - filter/2
  - find/2
  - fold/3
  - from_list/1
  - is_key/2
  - map/2
  - merge/3
  - new/0
  - size/1
  - store/3
  - to_list/1
  - update/3
  - update/4
  - update_counter/3
- ordsets
  - Top of manual page
  - new/0
  - is_set/1
  - size/1
  - to_list/1
  - from_list/1
  - is_element/2
  - add_element/2
  - del_element/2
  - union/2
  - union/1
  - intersection/2
  - intersection/1
  - is_disjoint/2
  - subtract/2
  - is_subset/2
  - fold/3
  - filter/2
- pg
  - Top of manual page
  - create/1
  - create/2
  - join/2
  - send/2
  - esend/2
  - members/1
- pool
  - Top of manual page
  - start/1
  - start/2
  - attach/1
  - stop/0
  - get_nodes/0
  - pspawn/3
  - pspawn_link/3
  - get_node/0
- proc_lib
  - Top of manual page
  - spawn/1
  - spawn/2
  - spawn/3
  - spawn/4
  - spawn_link/1
  - spawn_link/2
  - spawn_link/3
  - spawn_link/4
  - spawn_opt/2
  - spawn_opt/3
  - spawn_opt/4
  - spawn_opt/5
  - start/3
  - start/4
  - start/5
  - start_link/3
  - start_link/4
  - start_link/5
  - init_ack/2
  - init_ack/1
  - format/1
  - initial_call/1
  - translate_initial_call/1
  - hibernate/3
- proplists
  - Top of manual page
  - append_values/2
  - compact/1
  - delete/2
  - expand/2
  - get_all_values/2
  - get_bool/2
  - get_keys/1
  - get_value/2
  - get_value/3
  - is_defined/2
  - lookup/2
  - lookup_all/2
  - normalize/2
  - property/1
  - property/2
  - split/2
  - substitute_aliases/2
  - substitute_negations/2
  - unfold/1
- qlc
  - Top of manual page
  - append/1
  - append/2
  - cursor/1
  - delete_cursor/1
  - eval/1
  - e/1
  - fold/3
  - format_error/1
  - info/1
  - keysort/2
  - next_answers/1
  - q/1
  - sort/1
  - string_to_handle/1
  - table/2
- queue
  - Top of manual page
  - new/0
  - is_queue/1
  - is_empty/1
  - len/1
  - in/2
  - in_r/2
  - out/1
  - out_r/1
  - from_list/1
  - to_list/1
  - reverse/1
  - split/2
  - join/2
  - filter/2
  - member/2
  - get/1
  - get_r/1
  - drop/1
  - drop_r/1
  - peek/1
  - peek_r/1
  - cons/2
  - head/1
  - tail/1
  - snoc/2
  - daeh/1
  - last/1
  - liat/1
  - init/1
  - lait/1
- random
  - Top of manual page
  - seed/0
  - seed/3
  - seed/1
  - seed0/0
  - uniform/0
  - uniform/1
  - uniform_s/1
  - uniform_s/2
- re
  - Top of manual page
  - compile/1
  - compile/2
  - run/2
  - run/3
  - replace/3
  - replace/4
  - split/2
  - split/3
- regexp
  - Top of manual page
  - match/2
  - first_match/2
  - matches/2
  - sub/3
  - gsub/3
  - split/2
  - sh_to_awk/1
  - parse/1
  - format_error/1
- sets
  - Top of manual page
  - new/0
  - is_set/1
  - size/1
  - to_list/1
  - from_list/1
  - is_element/2
  - add_element/2
  - del_element/2
  - union/2
  - union/1
  - intersection/2
  - intersection/1
  - is_disjoint/2
  - subtract/2
  - is_subset/2
  - fold/3
  - filter/2
- shell
  - Top of manual page
  - history/1
  - results/1
  - catch_exception/1
  - prompt_func/1
  - start_restricted/1
  - stop_restricted/0
- shell_default
- slave
  - Top of manual page
  - start/1
  - start/2
  - start/3
  - start_link/1
  - start_link/2
  - start_link/3
  - stop/1
  - pseudo/1
  - pseudo/2
  - relay/1
- sofs
  - Top of manual page
  - a_function/1
  - canonical_relation/1
  - composite/2
  - constant_function/2
  - converse/1
  - difference/2
  - digraph_to_family/1
  - domain/1
  - drestriction/2
  - drestriction/3
  - empty_set/0
  - extension/3
  - family/1
  - family_difference/2
  - family_domain/1
  - family_field/1
  - family_intersection/1
  - family_intersection/2
  - family_projection/2
  - family_range/1
  - family_specification/2
  - family_to_digraph/1
  - family_to_relation/1
  - family_union/1
  - family_union/2
  - field/1
  - from_external/2
  - from_sets/1
  - from_sets/1
  - from_term/1
  - image/2
  - intersection/1
  - intersection/2
  - intersection_of_family/1
  - inverse/1
  - inverse_image/2
  - is_a_function/1
  - is_disjoint/2
  - is_empty_set/1
  - is_equal/2
  - is_set/1
  - is_sofs_set/1
  - is_subset/2
  - is_type/1
  - join/4
  - multiple_relative_product/2
  - no_elements/1
  - partition/1
  - partition/2
  - partition/3
  - partition_family/2
  - product/1
  - product/2
  - projection/2
  - range/1
  - relation/1
  - relation_to_family/1
  - relative_product/1
  - relative_product/2
  - relative_product1/2
  - restriction/2
  - restriction/3
  - set/1
  - specification/2
  - strict_relation/1
  - substitution/2
  - symdiff/2
  - symmetric_partition/2
  - to_external/1
  - to_sets/1
  - type/1
  - union/1
  - union/2
  - union_of_family/1
  - weak_relation/1
- string
  - Top of manual page
  - len/1
  - equal/2
  - concat/2
  - chr/2
  - rchr/2
  - str/2
  - rstr/2
  - span/2
  - cspan/2
  - substr/2
  - substr/3
  - tokens/2
  - join/2
  - chars/2
  - chars/3
  - copies/2
  - words/1
  - words/2
  - sub_word/2
  - sub_word/3
  - strip/1
  - strip/2
  - strip/3
  - left/2
  - left/3
  - right/2
  - right/3
  - centre/2
  - centre/3
  - sub_string/2
  - sub_string/3
  - to_float/1
  - to_integer/1
  - to_lower/1
  - to_lower/1
  - to_upper/1
  - to_upper/1
- supervisor
  - Top of manual page
  - start_link/2
  - start_link/3
  - start_child/2
  - terminate_child/2
  - delete_child/2
  - restart_child/2
  - which_children/1
  - count_children/1
  - check_childspecs/1
  - Module:init/1
- supervisor_bridge
  - Top of manual page
  - start_link/2
  - start_link/3
  - Module:init/1
  - Module:terminate/2
- sys
  - Top of manual page
  - log/2
  - log/3
  - log_to_file/2
  - log_to_file/3
  - statistics/2
  - statistics/3
  - trace/2
  - trace/3
  - no_debug/1
  - no_debug/2
  - suspend/1
  - suspend/2
  - resume/1
  - resume/2
  - change_code/4
  - change_code/5
  - get_status/1
  - get_status/2
  - install/2
  - install/3
  - remove/2
  - remove/3
  - debug_options/1
  - get_debug/3
  - handle_debug/4
  - handle_system_msg/6
  - print_log/1
  - Mod:system_continue/3
  - Mod:system_terminate/4
  - Mod:system_code_change/4
- timer
  - Top of manual page
  - start/0
  - apply_after/4
  - send_after/3
  - send_after/2
  - exit_after/3
  - exit_after/2
  - kill_after/2
  - kill_after/1
  - apply_interval/4
  - send_interval/3
  - send_interval/2
  - cancel/1
  - sleep/1
  - tc/3
  - tc/2
  - now_diff/2
  - seconds/1
  - minutes/1
  - hours/1
  - hms/3
- unicode
  - Top of manual page
  - bom_to_encoding/1
  - characters_to_list/1
  - characters_to_list/2
  - characters_to_binary/1
  - characters_to_binary/2
  - characters_to_binary/3
  - encoding_to_bom/1
- win32reg
  - Top of manual page
  - change_key/2
  - change_key_create/2
  - close/1
  - current_key/1
  - delete_key/1
  - delete_value/2
  - expand/1
  - format_error/1
  - open/1
  - set_value/3
  - sub_keys/1
  - value/2
  - values/1
- zip
  - Top of manual page
  - zip/2
  - zip/3
  - create/2
  - create/3
  - unzip/1
  - unzip/2
  - extract/1
  - extract/2
  - foldl/3
  - list_dir/1
  - list_dir/2
  - table/1
  - table/2
  - t/1
  - tt/1
  - zip_open/1
  - zip_open/2
  - zip_list_dir/1
  - zip_get/1
  - zip_get/2
  - zip_close/1

# erl_parse

### MODULE

erl_parse

### MODULE SUMMARY

The Erlang Parser

### DESCRIPTION

This module is the basic Erlang parser which converts tokens into the abstract form of either forms (i.e., top-level constructs), expressions, or terms. The Abstract Format is described in the ERTS User's Guide. Note that a token list must end with the dot token in order to be acceptable to the parse functions (see erl_scan(3)).

### EXPORTS

parse_form(Tokens) -> {ok, AbsForm} | {error, ErrorInfo}

Types:

Tokens = [Token]
Token = {Tag,Line} | {Tag,Line,term()}
Tag = atom()
AbsForm = term()
ErrorInfo = see section Error Information below.

This function parses Tokens as if it were a form. It returns:

{ok, AbsForm}

  The parsing was successful. AbsForm is the abstract form of the parsed form.

{error, ErrorInfo}

  An error occurred.

parse_exprs(Tokens) -> {ok, Expr_list} | {error, ErrorInfo}

Types:

Tokens = [Token]
Token = {Tag,Line} | {Tag,Line,term()}
Tag = atom()
Expr_list = [AbsExpr]
AbsExpr = term()
ErrorInfo = see section Error Information below.

This function parses Tokens as if it were a list of expressions. It returns:

{ok, Expr_list}

  The parsing was successful. Expr_list is a list of the abstract forms of the parsed expressions.

{error, ErrorInfo}

  An error occurred.

parse_term(Tokens) -> {ok, Term} | {error, ErrorInfo}

Types:

Tokens = [Token]
Token = {Tag,Line} | {Tag,Line,term()}
Tag = atom()
Term = term()
ErrorInfo = see section Error Information below.

This function parses Tokens as if it were a term. It returns:

{ok, Term}

  The parsing was successful. Term is the Erlang term corresponding to the token list.

{error, ErrorInfo}

  An error occurred.

format_error(ErrorDescriptor) -> Chars

Types:

ErrorDescriptor = errordesc()
Chars = [char() | Chars]

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

tokens(AbsTerm) -> Tokens
tokens(AbsTerm, MoreTokens) -> Tokens

Types:

Tokens = MoreTokens = [Token]
Token = {Tag,Line} | {Tag,Line,term()}
Tag = atom()
AbsTerm = term()
ErrorInfo = see section Error Information below.

This function generates a list of tokens representing the abstract form AbsTerm of an expression. Optionally, it appends Moretokens.

normalise(AbsTerm) -> Data

Types:

AbsTerm = Data = term()

Converts the abstract form AbsTerm of a term into a conventional Erlang data structure (i.e., the term itself). This is the inverse of abstract/1.

abstract(Data) -> AbsTerm

Types:

Data = AbsTerm = term()

Converts the Erlang data structure Data into an abstract form of type AbsTerm. This is the inverse of normalise/1.

### Error Information

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

        {ErrorLine, Module, ErrorDescriptor}

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

        Module:format_error(ErrorDescriptor)

### See Also

io(3), erl_scan(3), ERTS User's Guide