|
|
| | -文章搜索 - 最新文章 - | |
第2608篇:(转)脚本来统计verilog代码的行数 |
| 发布时间:2006年7月29日 点击次数:998 |
| 来源: 作者: |
#!/bin/sh # start tclsh form your PATH \ exec tclsh "$0" "$@" if {$argc == 0} { puts "Line counter" puts "Usage: $argv0 \[file ..\]" exit } #initial result array set result(all,commentNum) 0 set result(all,codeNum) 0 set result(all,blankNum) 0 set fileNum 0 foreach thisFile $argv { # if the file is not exist if {![file isfile $thisFile]} { puts "$thisFile is not a file, pls check." continue } # if the file can''t be read if {[catch {set fp [open $thisFile r]} errStr]} { puts stderr "\n$errStr\n" continue } set commentFlg 0 ;# flag for "\* *\" comment #initial line counter set commentNum 0 ;# comment line number set codeNum 0 ;# code line number set blankNum 0 ;# blank line or blank line number foreach line [split [read $fp] \n] { #puts $line switch -regexp -- $line { {^.*/\*.*\*/.*$} { # when meet */, finish comment set commentFlg 0 # <code> /* comment */ <code> if {[regexp {^\s*/\*.*\*/\s*$} $line]} { # /* comment */ incr commentNum } else { # <code> /* comment */ # or # /* comment */ <code> incr codeNum } } {^.*/\*} { # meet /* set commentFlg 1 if {[regexp {^\s*/\*} $line]} { # /* comment incr commentNum } else { # <code> /* comment incr codeNum } } {^.*\*/} { # meet */ set commentFlg 0 if {[regexp {\*/\s*$} $line]} { # */ \n incr commentNum } else { # */ <code> incr codeNum } } {^[[:space:]]*$} { incr blankNum } {^\s*//} { # /s is same to [[:space:]] incr commentNum } default { if {$commentFlg} { incr commentNum continue } else { incr codeNum } } } } close $fp puts "\n*********************************" puts $thisFile puts "code line: $codeNum" puts "comment line: $commentNum" puts "blank line: $blankNum" puts "*********************************" set result(all,commentNum) [expr $result(all,commentNum) + $commentNum] set result(all,codeNum) [expr $result(all,codeNum) + $codeNum] set result(all,blankNum) [expr $result(all,blankNum) + $blankNum] incr fileNum } puts "\n*********************************" puts "total $fileNum files" puts "code line: $result(all,codeNum)" puts "comment line: $result(all,commentNum)" puts "blank line: $result(all,blankNum)" puts "*********************************\n" 转自edacn |
|
|
|
|
[EDA/IC设计] 相关文章: IP核调试之SDRAM篇(2) 转载简介: 但是作为初学者,我还是愿意勇 敢的说出自己的心得体会,希望对如我一样的初学者有所帮助。今天我将继续介 绍我的调试SDRAM之路。 时序仿真完成后,硬件调试相对轻松多了。我用到的核心设备就是一台  ...... IP核调试之SDRAM篇(1) 转载 FPGA 门数计算方法(转) Xilinx FPGA全局时钟和第二全局时钟资源的使用方法 用HDLScore做覆盖率分析VHDL实例 |
|
|
|