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.