erl_recomment
erl_recomment
模块
erl_recomment
模块摘要
在抽象的Erlang语法树中插入注释。
描述
在抽象的Erlang语法树中插入注释
该模块包含插入注释的函数,由位置,缩进和文本描述,作为抽象语法树上附件的正确位置。
数据类型
syntaxTree()=
erl_syntax:syntaxTree()
抽象语法树。见erl_syntax
模块获取详细信息。
出口
quick_recomment_forms(Tree::Forms, Comments::[Comment]) ->syntaxTree()
类型
喜欢recomment_forms/2
,但只能插入顶级评论。函数定义或声明(“表单”)中的注释被忽略。
recomment_forms(Tree::Forms, Comments::[Comment]) ->syntaxTree()
类型
将注释附加到表示程序的语法树/树上。给定的Forms
应该是一个单一的类型语法树form_list
,或者是一个表示“程序形式”的语法树列表。语法树必须包含有效的位置信息(有关详细信息,请参阅recomment_tree/2
)。结果是一个相应的类型的语法树,form_list
其中列表中的所有注释Comments
都已被附加到适当的位置。
假设Forms
代表一个程序(或任何“程序形式”序列),其第一行不直接与特定程序形式相关联的任何注释将成为在相邻程序形式之间插入的独立注释。此外,列位置小于或等于1的注释将不会附加到以冲突的行号开头的程序表单(这可能会发生在预处理器生成的line
属性中)。
如果Forms
是某种其他类型的语法树,form_list
则会直接使用该注释插入recomment_tree/2
,并且该过程留下的任何注释都会作为后评论添加到结果中。
条目Comments
代表多行注释。对于每个条目,Line
是评论的行号和Column
左列(第一条评论 - 介绍“ %
”字符的列)。Indentation
是注释前最后一个非空白字符(或左边距)和注释左列之间的字符位置数。Text
是以从上至下的顺序表示连续注释行的字符串列表,其中每个字符串都包含跟随(但不包括)注释的所有字符 - 介绍“ %
”并直到(但不包括)终止换行符。(参考模块erl_comment_scan
)
{bad_position, Pos}
如果Pos
输入中的某个子树的相关位置信息没有可识别的格式,或者由于树结构格式不正确而导致{bad_tree, L, C}
在行L
,列插入注释C
失败,则评估会随着原因退出。
另请参阅:
erl_comment_scan
,quick_recomment_forms/2
,recomment_tree/2
。
recomment_tree(Tree::syntaxTree(), Comments::[Comment]) -> {syntaxTree(), [Comment]}
类型
将注释附加到语法树。结果是一对{NewTree, Remainder}
在哪里NewTree
给出Tree
了列表中的评论Comments
已被附加在适当的地方。Remainder
是Comments
未插入的条目列表,因为它们的行数大于树中任何节点的行数。中的条目Comments
按顺序插入; 如果两个注释附加到同一个节点,它们将在程序文本中以相同顺序显示。
语法树的节点必须包含有效的位置信息。这可以是单个整数,假定表示一个行号,或者2元或3元组,其中第一个或第二个元素是整数,在这种情况下,最左边的整数元素被假定为表示行号。小于1的行号被忽略(通常,新创建节点的默认行号为零)。
有关详细信息Line
,Column
和Indentation
领域,并在错误的情况下的行为,请参阅recomment_forms/2
。
另见:
recomment_forms/2
。
richard@gmail.com