bionic (3) erl_recomment.3erl.gz

Provided by: erlang-manpages_20.2.2+dfsg-1ubuntu2_all bug

NAME

       erl_recomment - Inserting comments into abstract Erlang syntax trees.

DESCRIPTION

       Inserting comments into abstract Erlang syntax trees

       This  module  contains  functions for inserting comments, described by position, indentation and text, as
       attachments on an abstract syntax tree, at the correct places.

DATA TYPES

         syntaxTree() = erl_syntax:syntaxTree():

           An abstract syntax tree. See the erl_syntax module for details.

EXPORTS

       quick_recomment_forms(Tree::Forms, Comments::[Comment]) -> syntaxTree()

              Types:

                 Forms = syntaxTree() | [syntaxTree()]
                 Comment = {Line, Column, Indentation, Text}
                 Line = integer()
                 Column = integer()
                 Indentation = integer()
                 Text = [string()]

              Like recomment_forms/2, but only inserts top-level comments. Comments within function  definitions
              or declarations ("forms") are simply ignored.

       recomment_forms(Tree::Forms, Comments::[Comment]) -> syntaxTree()

              Types:

                 Forms = syntaxTree() | [syntaxTree()]
                 Comment = {Line, Column, Indentation, Text}
                 Line = integer()
                 Column = integer()
                 Indentation = integer()
                 Text = [string()]

              Attaches  comments  to  the  syntax tree/trees representing a program. The given Forms should be a
              single syntax tree of type form_list, or a list of syntax trees representing "program forms".  The
              syntax  trees  must  contain  valid  position information (for details, see recomment_tree/2). The
              result is a corresponding syntax tree of type form_list in which all comments in the list Comments
              have been attached at the proper places.

              Assuming Forms represents a program (or any sequence of "program forms"), any comments whose first
              lines are not directly associated with a specific program form  will  become  standalone  comments
              inserted  between  the  neighbouring program forms. Furthermore, comments whose column position is
              less than or equal to one will not be attached to a program form that begins at a conflicting line
              number (this can happen with preprocessor-generated line-attributes).

              If  Forms  is  a  syntax  tree  of  some  other type than form_list, the comments will be inserted
              directly using recomment_tree/2, and any comments  left  over  from  that  process  are  added  as
              postcomments on the result.

              Entries  in  Comments  represent  multi-line comments. For each entry, Line is the line number and
              Column the left column of the comment (the column of the first comment-introducing "%" character).
              Indentation  is the number of character positions between the last non-whitespace character before
              the comment (or the left margin) and the left column of the comment. Text is  a  list  of  strings
              representing  the  consecutive  comment  lines  in  top-down order, where each string contains all
              characters following (but not including) the comment-introducing "%" and up to (but not including)
              the terminating newline. (Cf. module erl_comment_scan.)

              Evaluation  exits  with  reason  {bad_position, Pos} if the associated position information Pos of
              some subtree in the input does not have a recognizable format, or with reason {bad_tree, L, C}  if
              insertion of a comment at line L, column C, fails because the tree structure is ill-formed.

              See also: erl_comment_scan, quick_recomment_forms/2, recomment_tree/2.

       recomment_tree(Tree::syntaxTree(), Comments::[Comment]) -> {syntaxTree(), [Comment]}

              Types:

                 Comment = {Line, Column, Indentation, Text}
                 Line = integer()
                 Column = integer()
                 Indentation = integer()
                 Text = [string()]

              Attaches comments to a syntax tree. The result is a pair {NewTree, Remainder} where NewTree is the
              given Tree where comments from the  list  Comments  have  been  attached  at  the  proper  places.
              Remainder  is  the  list  of  entries in Comments which have not been inserted, because their line
              numbers are greater than those of any node in the tree. The entries in Comments  are  inserted  in
              order; if two comments become attached to the same node, they will appear in the same order in the
              program text.

              The nodes of the syntax tree must contain valid position information. This can be single integers,
              assumed  to  represent  a  line  number, or 2- or 3-tuples where the first or second element is an
              integer, in which case the leftmost integer element is assumed to represent the line number.  Line
              numbers  less  than  one  are ignored (usually, the default line number for newly created nodes is
              zero).

              For details on the Line, Column and Indentation fields, and the behaviour in case of  errors,  see
              recomment_forms/2.

              See also: recomment_forms/2.

AUTHORS

       Richard Carlsson <carlsson.richard@gmail.com>

                                               syntax_tools 2.1.4                            erl_recomment(3erl)