• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-59  評(píng)論-36  文章-0  trackbacks-0

            以下兩則代碼均是在向論壇上的高手們學(xué)習(xí)之后模仿出的結(jié)果,而自己之前寫的那叫個(gè)臭呀!

            代碼1

             1/*
             2* 用狀態(tài)機(jī)實(shí)現(xiàn)對(duì)代碼中注釋的清除.
             3*/

             4
             5#include <stdio.h>
             6#include <string.h>
             7
             8#define SCREEN
             9
            10void initialize_fsm(char fsm[7][256]);
            11
            12int main()
            13{
            14    int ch , temp = 0 ;
            15    int state = 0;
            16    char fsm[7][256];
            17
            18    FILE *pfin ;
            19    if ((pfin = fopen("sweep-comments.txt","r")) == NULL)
            20    {
            21        printf("can not open the file");
            22        exit(0);
            23    }

            24
            25    #ifdef SCREEN
            26        #define OUT stdout
            27    #else
            28        FILE *pfout;
            29        pfout = fopen("result.txt","w");
            30        #define OUT pfout
            31    #endif
            32
            33    initialize_fsm(fsm);
            34
            35    #pragma region FSM ///嘗試#pragma region功能. Visual C++ 2005
            36
            37    while ((ch = fgetc(pfin)) != EOF)
            38    {
            39        state = fsm[state][ch];
            40
            41        if ( state != 2  && ch !='*' && temp == '/')
            42            fputc(temp,OUT);
            43
            44        temp = ch;
            45
            46        switch(state)
            47        {
            48            /*0,5,6執(zhí)行同一個(gè)動(dòng)作*/
            49            case 5:
            50            case 6:
            51            case 0:
            52                    fputc(ch,OUT);
            53                    break;
            54            case 7:
            55                    state = 0;
            56                    break;
            57        }

            58
            59        if(state != 1)
            60            temp=0;
            61    }

            62    #pragma endregion
            63}

            64
            65void initialize_fsm(char fsm[7][256])
            66{
            67    int lenth = sizeof(char)*256;
            68
            69    memset(fsm[0],0,lenth);
            70    memset(fsm[1],0,lenth);
            71    memset(fsm[2],2,lenth);
            72    memset(fsm[3],3,lenth);
            73    memset(fsm[4],3,lenth);
            74    memset(fsm[5],5,lenth);
            75    memset(fsm[6],5,lenth);
            76
            77    fsm[0]['"'= 5;
            78    fsm[0]['/'= 1;
            79    fsm[1]['/'= 2;
            80    fsm[1]['*'= 3;
            81    fsm[2]['\n'= 0;
            82    fsm[3]['*'= 4;
            83    fsm[4]['/'= 7;
            84    fsm[5]['\\'= 6;
            85    fsm[5]['"'= 0;
            86}

            87

            代碼2
             1%{
             2/*
             3*用lex實(shí)現(xiàn)清除代碼注釋
             4*/

             5void comment(int style);
             6void string_constant();
             7const int singalline =0, multiline =1;
             8
             9%}

            10
            11
            12%%
            13
            14"/*"        {comment(multiline );}
            15"//"        {comment(singalline);}
            16"\""        {string_constant();}
            17.|\n        {fprintf(yyout,"%c",*yytext);} 
            18
            19%%
            20
            21int main(int argc,char *argv[])
            22{
            23    FILE *pfin ,*pfout;
            24    if ((pfin = fopen (argv[1],"r")) ==NULL)
            25    {
            26        printf("can not open the file\n");
            27        exit (1);
            28    }

            29    pfout = fopen("output.txt","w");
            30    
            31    yyin = pfin;
            32    yyout = pfout;
            33    
            34    yylex();
            35
            36    return 0;
            37}

            38
            39void string_constant()
            40{
            41    int ch ;
            42
            43    fprintf(yyout,"%c",*yytext);
            44
            45    while ( (ch = input()) != EOF)
            46    {
            47        if (ch == '\\')
            48        {
            49            fprintf(yyout,"%c",ch);
            50            ch = input();
            51            fprintf(yyout,"%c",ch);
            52            
            53            continue;
            54        }

            55
            56        if (ch == '\"')
            57        {
            58            fprintf(yyout,"%c",ch);
            59            break;
            60        }

            61        
            62        fprintf(yyout,"%c",ch);
            63    }

            64}

            65
            66void comment(int style)
            67{
            68    int ch , prev=0;
            69    if (style == multiline)
            70    {
            71        while ( (ch = input()) != EOF )
            72        {
            73            if (prev == '*' && ch == '/')
            74                return ;
            75
            76            prev = ch;
            77        }

            78        
            79        return ;
            80    }

            81    else
            82    {
            83        while ( (ch = input()) != EOF )
            84        {
            85            if (ch == '\n')
            86            {
            87                fprintf(yyout,"%c",'\n');
            88                return ;
            89            }

            90        }

            91    }

            92}

            93int yywrap()
            94{
            95        return 1;
            96}

            97
            posted on 2009-05-07 14:21 zhaoyg 閱讀(656) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 小代碼
            国产成人精品久久综合| 精品久久人人爽天天玩人人妻| 精品多毛少妇人妻AV免费久久| 久久久精品人妻一区二区三区蜜桃| 亚洲va中文字幕无码久久| 久久国产精品一国产精品金尊| 国产亚州精品女人久久久久久| 亚洲精品国产第一综合99久久| 乱亲女H秽乱长久久久| 99久久精品国产毛片| 7777精品久久久大香线蕉| 亚洲国产精品人久久| 国内精品久久久久影院薰衣草| 久久99国产精品一区二区| 亚洲国产精品综合久久一线| 国产亚洲精品美女久久久| 欧美日韩中文字幕久久久不卡| 无码人妻久久久一区二区三区| 国产亚洲精午夜久久久久久| 国内精品久久久久久久97牛牛 | 久久免费视频一区| 久久香综合精品久久伊人| 亚洲国产精品无码久久青草| 精品久久久久久无码人妻热| 久久久久久亚洲Av无码精品专口 | 久久精品中文字幕无码绿巨人| 久久国产精品免费| 欧美亚洲国产精品久久蜜芽| 欧美黑人又粗又大久久久| 久久精品国产2020| 久久亚洲精品国产精品婷婷| 少妇被又大又粗又爽毛片久久黑人| 国产精品久久久久久| 久久99精品久久久久久| 国产成人久久精品一区二区三区| 久久天天躁狠狠躁夜夜网站| 亚洲国产精品一区二区久久hs| 久久无码AV一区二区三区| 思思久久好好热精品国产| 香蕉久久久久久狠狠色| 一本久道久久综合狠狠躁AV|