sclc的code review

来源:互联网 发布:669是什么意思网络用语 编辑:程序博客网 时间:2024/04/27 20:25

sclc是一个perl写成的工具,包含两个perl源文件(sclc.pl,cdiff.pl),用来统计存储于clearcase中的源代码的代码行,以及两个软件版本之间源代码行数的增删,可以支持多种编程语言。其中,cdiff会生成有上下文环绕的“cleardiff”,当计算代码行增删时sclc会调用cdiff。

 

对每种语言只需要关注以下几个方面:

  1. 注释
    1. 块注释(通过分界符)
    2. 行注释(通过一个特殊符号开始,一直到行尾)
  2. 引用(quotation)
  3. 声明终止符
  4. 块声明终止符

因此为每种语言定义了两个列表:

  1. 用来实现替换的数组:对源程序执行必要的预处理
  2. 哈希列表:
    • $Array{'AESL'} :assembly equivalent source lines,类汇编multiplier,用于从NCSL(non-comment source lines)中确定AESL
    • $Array{'START_STATE'} :一个正则表达式,当不在注释中或引用中的时候,用于匹配感兴趣的符号
    • $Array{'CMMNT_STATE'} :一个正则表达式,当处在一个用分界符包括的注释中的时候,用于匹配感兴趣的符号
    • $Array{'CMMNT_NESTING'}:真或假,取决于是否允许注释嵌套
    • $Array{'<token>QUOTE_STATE'} :一个正则表达式,当处于一个引用上下文中,并且该引用是以<token>开始的,用于匹配感兴趣的符号
    • $Array{END_<token>}:字符(串),对应于一个以<token>开头的引用上下文的结束符(串)。
    • $Array{<token>}:预定义的常数:如下所示:
      • my ($EolCmnt,    ## A comment that continues until end-of-line
            $BeginCmnt,  ## Beginning of a delimited comment
            $EndCmnt,    ## End of a delimited comment
            $BeginQuote) ## The beginning of a quoted/literal context
              = (1, 2, 3, 4);
      • For each <token> that we will ever match, $Array{<token>}
        will yield the token type (its semantic meaning).

 

原创粉丝点击