Chinaunix首页 | 论坛 | 博客
  • 博客访问: 565787
  • 博文数量: 213
  • 博客积分: 6789
  • 博客等级: 准将
  • 技术积分: 1947
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-01 17:11
文章分类

全部博文(213)

文章存档

2012年(9)

2011年(62)

2010年(99)

2009年(43)

分类: C/C++

2011-06-14 11:16:47

# filename: strip_c_comment.awk
# issue: awk -f scrip_c_comment.awk test.c
BEGIN { FS="" }
!(ignore_line && $NF == "\\") && !ignore_line-- {
    ignore_line = 0;
    for(i = 1; i <= NF; i++) {
        if (ignore_block) {
            if ($i $(i+1) == "*/") {
                ignore_block = 0
                i++ # remove '*'
            }
            continue
        }
        if (!instr && $i $(i+1) == "/*") {
            ignore_block = 1
            i++ # remove '/'
            continue
        }
        if (!instr && $i $(i+1) == "//") {
            ignore_line = ($NF == "\\")? 1: 0
            break
        }
        if ($i == "\"") {
            instr = 1 - instr
        }
        printf($i)
    }
    printf("\n")
}

阅读(1352) | 评论(0) | 转发(0) |
0

上一篇:container_of

下一篇:emacs ecb cedit

给主人留下些什么吧!~~